LoginSignup
19
22

More than 5 years have passed since last update.

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

Posted at

概要

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を呼ぶようにしましょう。

19
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
22