COZMO SDK:Tutorials Basics 09

チュートリアル 9番目は、COZMO本体ではなくて、キューブ側のLED制御です。Tutorials BASICこれで最後ですね。

/examples/tutorials/01_basics/09_cube_lights.py

使用するAPIは、キューブのオブジェクト取得

get_light_cube(cube_id)

http://cozmosdk.anki.com/docs/generated/cozmo.world.html#cozmo.world.World.get_light_cube

キューブのライト設定

set_lights(light)

http://cozmosdk.anki.com/docs/generated/cozmo.objects.html#cozmo.objects.LightCube.set_lights

あと、ログ出力で cozmo.logger.warning 使ってます。


プログラムを見ていきます。まずキューブの取得。

cube1 = robot.world.get_light_cube(LightCube1Id) # looks like a paperclip
cube2 = robot.world.get_light_cube(LightCube2Id) # looks like a lamp / heart
cube3 = robot.world.get_light_cube(LightCube3Id) # looks like the letters 'ab' over 'T'

それぞれのキューブには、個別で LightCube1Id / LightCube2Id / LightCube3Id と、IDが振られているみたいです。

Cube1: クリップのような絵のキューブ
Cube2: ランプもしはハートのような絵のキューブ。(ランプがよくわからない…。)
Cube3: ”T”の上に”ab”が書いてあるような絵のキューブ

キューブに描いてある絵、何の絵かと思っていたのですが、内容に統一性はないですし、単に、COZMOから識別しやすい模様だった感じでしょうか。

キューブが見つかれば、それぞれのキューブを、赤色 / 緑色 / 青色 で点灯。

cube1.set_lights(cozmo.lights.red_light)
cube2.set_lights(cozmo.lights.green_light)
cube3.set_lights(cozmo.lights.blue_light)

そのまま、10秒待って、プログラム終了。

もし Cube が見つからなかった場合は、「バッテリチェックしろよ!」と警告ログを出します。

cozmo.logger.warning("Cozmo is not connected to a LightCube1Id cube - check the battery.")

光ったー!


ちなみに、赤/青/緑以外の色指定の方法は、サンプルアプリの /examples/apps/quick_tap.py を見ると分かりやすいです。
ゲームのクイックタップをSDKで実装したものです。

purple_light = Light(Color(name = 'purple', rgb = (255, 0, 255)))
yellow_light = Light(Color(name = 'yellow', rgb = (255, 255, 0)))

色をRGB指定して、名前を付ける必要あるみたいですね。

あと、キューブのコーナー4色をそれぞれ別色で指定するAPIもありますね。

set_light_corners(light1, light2, light3, light4)

http://cozmosdk.anki.com/docs/generated/cozmo.objects.html#cozmo.objects.LightCube.set_light_corners

1つのキューブに4色指定して、2秒ごとに色切り替えしてみましょう。

purple_light = Light(Color(name = 'purple', rgb = (255, 0, 255)))
yellow_light = Light(Color(name = 'yellow', rgb = (255, 255, 0)))

cube1 = robot.world.get_light_cube(LightCube1Id) # looks like a paperclip
cube1.set_light_corners(cozmo.lights.green_light,cozmo.lights.blue_light,purple_light,yellow_light)
time.sleep(2)
cube1.set_light_corners(cozmo.lights.blue_light,purple_light,yellow_light,cozmo.lights.green_light)
time.sleep(2)
cube1.set_light_corners(purple_light,yellow_light,cozmo.lights.green_light,cozmo.lights.blue_light)
time.sleep(2)
cube1.set_light_corners(yellow_light,cozmo.lights.green_light,cozmo.lights.blue_light,purple_light)
time.sleep(2)
cube1.set_light_corners(cozmo.lights.green_light,cozmo.lights.blue_light,purple_light,yellow_light)
time.sleep(10)

いい感じだ。