チュートリアル 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)
いい感じだ。