PEPPER 目のLEDを複雑に光らせる

More than 3 years have passed since last update.


概要

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_eyes.png

ちなみに耳のLEDも同様にIDが振られています。

led_ears.png

今回は目を光らせたいので

FaceLedグループを指定しています。

fadeRGBの引数は左から


  • LEDグループ名

  • カラー

  • フェードインの時間

です。

FaceLed[x]を指定することで

両目の同じインデックスのLEDを光らせることができます。

左右対象でLEDを光らせたい場合に便利です。

これを別々に光らせたい場合は

RightFaceLed[x]やLeftFaceLed[x]などを指定することで別々の光らせ方をさせたり、

ALLeds.createGroupで新たにグループを宣言することもできます。

使用後の注意としては、

ALLeds.reset("ALLLeds")などを呼び出して元の色に戻さないと

ずっと同じ色になってしまうのでUnload及びonStop時に必ずresetを呼ぶようにしましょう。