こんにちは。ピャペロンです!
今回はパペロを凄く光らせてみたよ。
あらかじめパペロシミュレーターを動かす環境を整えておこう。第2回 Windowsからパペロシミュレーターを動かしてみた
使用するソフト
・Windows 10
・テキストエディタ(Visual Studio Code)
・Google Chrome
・Python 3(ver3.4推奨)
※推奨環境以外は不具合が起きる可能性があるので自己責任でお願いします。
下記のソースコードはパペロが凄く光るプログラムだよ。
コピーペーストして動かしてみよう。※動かない場合は” -sim “オプションでシミュレータIDを指定してみよう。
今回はこのプログラムをいじって好きなようにパペロを凄く光らせてみよう。
Pythonライブラリ(pypapero.py)リファレンスマニュアルを見ながら理解していこう。
# パペロが凄く光るプログラム
import sys # コマンドラインの動作に深く関連する関数を定義しているsysモジュールを利用できるようにするよ。
import pypapero # PaPeRo i 制御用ライブラリを利用できるようにするよ。
def on_light(papero): # パペロが凄く光る関数を定義しよう。
papero.send_turn_led_on("ear", ["w3w3", "5", "NN", "5", "w3w3", "5"]) # 耳が光るよ。
# 口が光るよ
papero.send_turn_led_on("mouth", ["R3G3Y3R3G3Y3R3G3Y3", "5", "Y3G3R3Y3G3R3Y3G3R3", "5", "G3NG3G3NG3G3NG3", "5"])
papero.send_turn_led_on("cheek", ["R3N", "5", "NR3", "5", "R3R3", "5"]) # 頬が光るよ。
papero.send_turn_led_on("chest", ["R3", "5", "B3R3", "5", "G3", "5"]) # 胸が光るよ
if __name__ == "__main__": # コマンドラインからこのファイルを実行したら。
# コマンドライン引数からそれぞれの値を変数に代入するよ。
simulator_id, robot_name, ws_server_addr = pypapero.get_params_from_commandline(sys.argv)
papero = pypapero.Papero(simulator_id, robot_name, ws_server_addr) # Paperoオブジェクトをクラスから生成するよ。
if papero.errOccurred == 0: # エラーが発生しなければ実行するよ。
on_light(papero) #パペロが凄く光る関数を実行するよ。
papero.papero_cleanup() # paperoオブジェクトの使用を終了するよ。
今回はLEDの点灯動作を行う[ send_turn_led_on() ]メソッドを利用してみるよ。
リファレンスマニュアルを見ながら1つずつ理解していこう。
とりあえず今は、繰り返しと優先度は無視してOK。部位によって光る色や光るLEDの数が違うからややこしいけど、基本的にはRが赤、Gが緑、Bが青、Wが白、Yが黄色、それらと0~3の明るさを表す数字を組み合わせて指定するよ。Nは消灯を意味するよ。
耳や頬は2つのLEDが点灯できるからそれぞれ[ 左側右側 ]の順に指定するよ。口は9つもあるから左から順に間違えずに指定しよう。
胸はなんとRGBWカラーで紫や黄色など様々な色で光らせることができるんだ。
光る状態を指定したら、その状態を継続する時間を数字で指定するよ。ただし、1=100ミリ秒になっているので1秒なら1000ミリ秒、つまり10を指定することに注意しよう。時間を指定しないと意図しない動作をするから忘れずに指定しよう。
試しに2秒間全部点灯する関数を考えてみよう。
def on_all_lights(papero): # パペロが2秒間全部点灯する関数 papero.send_turn_led_on("ear", ["w3w3", "20"]) papero.send_turn_led_on("forehead", ["G3", "20"]) papero.send_turn_led_on("cheek", ["R3R3", "20"]) papero.send_turn_led_on("mouth", ["G3G3G3G3G3G3G3G3G3", "20"]) papero.send_turn_led_on("chest", ["G3", "20"])
on_light(papero)関数をon_all_light(papero)関数に変更して実行してみよう。
# パペロが2秒間全部点灯するプログラム import sys import pypaperodef on_all_lights(papero): # パペロが2秒間全部点灯する関数だよ。 papero.send_turn_led_on("ear", ["w3w3", "20"]) papero.send_turn_led_on("forehead", ["G3", "20"]) papero.send_turn_led_on("cheek", ["R3R3", "20"]) papero.send_turn_led_on("mouth", ["G3G3G3G3G3G3G3G3G3", "20"]) papero.send_turn_led_on("chest", ["G3", "20"])if __name__ == "__main__": simulator_id, robot_name, ws_server_addr = pypapero.get_params_from_commandline(sys.argv) papero = pypapero.Papero(simulator_id, robot_name, ws_server_addr) if papero.errOccurred == 0:on_all_lights(papero) # パペロが2秒間全部点灯する関数を実行するよ。papero.papero_cleanup()
自分で好きなようにパペロを光らせてみよう!