概要
PepperのLEDを光らせる場合、
標準のEye LEDsボックスを使う方法がありますが、
このボックスを使うと目が全部光ってしまいます。
これを解決するためにはLedの光り方をプログラミングする必要があるので
今回はそれについて解説したいと思います。
実装
import time
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self)
def onLoad(self):
self.leds = ALProxy("ALLeds")
def onUnload(self):
self.leds.reset("AllLeds")
def onInput_onStart(self):
eyes = ["FaceLed0", "FaceLed2", "FaceLed4", "FaceLed6"]
# LEDを点灯する
for id in eyes: self.leds.fadeRGB(id, 0xffb361, 0.1)
# 3秒間sleep
time.sleep(3)
# ledをリセット
self.leds.reset("AllLeds")
self.onStopped()
def onInput_onStop(self):
self.onUnload()
self.onStopped()
解説
Pepperの目のLEDは8個ずつ付いています。
また、これらのLEDはnaoqiでグループ化されていて、
ALLeds.fadeRGBメソッドでグループ、色を指定することで光らせることができます。
グループについてはALLedsのページに記載されてます。
ちなみに耳のLEDも同様にIDが振られています。
今回は目を光らせたいので
FaceLedグループを指定しています。
fadeRGBの引数は左から
- LEDグループ名
- カラー
- フェードインの時間
です。
FaceLed[x]を指定することで
両目の同じインデックスのLEDを光らせることができます。
左右対象でLEDを光らせたい場合に便利です。
これを別々に光らせたい場合は
RightFaceLed[x]やLeftFaceLed[x]などを指定することで別々の光らせ方をさせたり、
ALLeds.createGroupで新たにグループを宣言することもできます。
使用後の注意としては、
ALLeds.reset("ALLLeds")などを呼び出して元の色に戻さないと
ずっと同じ色になってしまうのでUnload及びonStop時に必ずresetを呼ぶようにしましょう。