東京都市大学 情報デザイン研究室の小池です。研究室でソーシャルロボットMugbot(マグボット)を開発しています。Node-RED User Group JapanのNode-RED Advent CalendarでMugbotのNode-RED化について書かせていただくことになりました。
ソーシャルロボット Mugbot
ロボットが人間社会に入ってきたときに、人間とロボットがどのように変わるのかを、実際にロボットを作って社会に投入して研究しています。
現在、Mugbotは東京都市大学の図書館や、東京都多摩市のシェアハウスなどで稼働しています。
Mugbotの情報は
www.mugbot.com
や、
https://www.facebook.com/SocialRobotics/
で公開しています。
Mugbotには以下のような特長があります。
オープンソース
知的所有権に縛られずに誰も作れます。
情報やソフトは
www.mugbot.com
で公開しています。
低コスト
1万円台で製作できます。100円ショップの部品も一部使っています。
作りやすい
入手しやすい部品を使い、半田付けをしなくてもいい構造になっています。
接着剤も必要ありません。小学生も作っています。
OpenJTaikによる音声合成
OpenJTaikによって音声合成で話します。
Raspberry Piを使用
入手しやすいRaspberry Piを使っています。
ユーザーが作って動かすロボット
最近は多くの家庭や職場で働くロボットが開発されていますが、ユーザーがロボットに何ができるのかを理解しないと何をさせたいのかのアイデアもでてきません。
Mugbotはユーザーが自分で作って自分の環境に合わせてMugbotを改造し、動かすことができます。ユーザーがMugbotを作って使うことによって、ロボットにさせたいことのアイデアもよりたくさんでてくるでしょう。
Mugbotの書籍
2016年にリックテレコムからMugbotの製作方法が書かれた本
おしゃべりロボット「マグボット」-ラズパイとArduinoで電子工作-
が発売されました。
(本書は重版予定はありません。現在流通しているもので販売終了だそうです。必要な方は以下からなどからお求めください。)
千石電商
https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4XGK
書籍版のMugbotの構造
2016年の書籍発売当時のMugbotの構造は以下のようになっていました。
・Raspberry PiとArduinoを使用
・Raspberry Piからシリアル通信によってMugbotのLEDやサーボを制御
・Rubyを使ってWebSoketサーバーを経由してWebブラウザから操作インタフェースを制御
・SCRATCH1.4による専用ソフトを用意
これをNode-REDで動くように改修します。実は私の研究室のMugbotは2018年度はすべてNode-REDで動作しています。
Node-RED版Mugbot
MugbotをNode-RED化したことで以下のようなメリットがありました。
・Raspberry PiとArduinoを使っていましたがRaspberry Piのみを使用しています。
・理系ではない、研究室の学生も容易にプログラムできるようになりました。
・Mugbotに接続したセンサーも容易に扱えるようになりました。
・Node-RED上でを使って1台のPCから複数のMugbotを遠隔制御できるようになりました。
・将来は、遠隔地にあるMugbotも制御できるようにする予定です。
Node-REDによる変更
MugbotをNode-REDで動くようにするために以下のようにしました。
・Raspberry Pi上でNode-REDを使用する
Raspberry PiにインストールしたNode-REDを使用します。
Raspberry Pi上のNode-REDからRaspberry PiのGPIOを制御できます。
Raspberry Piの最新版はRaspberry Pi 3 Model B+です。
・ArduinoをなくしてRaspberry Piのみにする
これまでRaspberry PiとArduinoの2つのマイコンを使用していましたが、Raspberry Piだけで動くようにしました。
・Node-REDのdashboardで操作インタフェースを製作
Node-REDのノードのひとつであるdashboardによってMugbotの操作インタフェースを製作することにしました。
・RubyによるWebSocketを使用しない。
Rubyのソフトを使用しないですべてNode-REDで制御します。
Arduinoを無くした以外はMugbotの書籍をほぼ同じです。Mugbotのハードウェアの製作方法はMugbotの書籍を参考にしてください。
Mugbotの外装部品の購入方法
Mugbotの書籍が発売されたときに、Mugbotの頭部の外装部品に使用していたマグカップが一時入手できなくなっていたのですが、その後入手できるようになりました。
以下から入手してください。
・頭部のマグカップ、把手のない別バージョンのカップ、胴体部のケース
千石電商
https://www.sengoku.co.jp/mod/sgk_cart/search.php?cid=5351
スイッチサイエンス
https://www.switch-science.com/catalog/list/?keyword=マグボット
Mugbotのハードウェアの変更
配線と、Arduinoを使用しないこと以外はMugbotの書籍と同じです。Mugbotのハードウェアの詳細な製作方法はMugbotの書籍を参照してください。
・配線の変更
書籍版ではMugbotのLEDやサーボはArduinoに接続されていましたが、Node-RED版ではすべてをRaspberry Piに接続します。サーボの5Vや、GNDはRaspberry PiのGPIOの5V、GNDであればどこでも構いません。
・メス-メスのジャンプワイアの追加
書籍版ではMugbotでは、MugbotのLEDやサーボはArduinoに接続されていましたので終端はArduinoのメスのピンヘッダーでした。これがNode-RED版では終端はRaspberry Piのオスのピンヘッダーになりますので、新たにメス-メスのジャンプワイアを使って延長する必要があります。合計10本必要になります。
音声合成システムのインストール
Mugbotで使用しているOpneJTalkを使って音声合成システムをインストールします。
OpneJTalk関連のソフトのインストール
Raspberry Piのターミナルから以下をpneJTalk関連のソフトをインストールします。
pi@raspberrypi ~$ sudo apt-get install open-jtalk
pi@raspberrypi ~$ sudo apt-get install open-jtalk-mecab-naist-jdic
pi@raspberrypi ~$ sudo apt-get install libhtsengine1
pi@raspberrypi ~$ sudo apt-get install hts-voice-nitech-jp-atr503-m001
音声データのダウンロードとインストール
https://sourceforge.net/projects/mmdagent/files/MMDAgent_Example/からMMDAgent_Example-1.7.zip
をダウンロードして解凍します。
そしてフォルダ内にある
mei_happy.htsvoiceを/home/pi/
に移動してください。
・音声合成スクリプトのダウンロードとインストール
MugbotのGithubである
https://github.com/mugbot/Mugbot-System
にあるmugbot-talk-1.2.shをダウンロードして/home/pi/に移動します。
そしてターミミナルから実行権限を与えてください。
pi@raspberrypi ~$ chmod +x /home/pi/mugbot-talk-1.2.sh
ターミナルから
pi@raspberrypi ~$ /home/pi/mugbot-talk-1.2.sh 私はマグボットです
と入力してスピーカーから
「私はマグボットです」と話せば成功です。
Node-REDの準備
Raspberry Piの上で動くNode-REDを準備します。
(Raspberry PiのRaspbianOSのインストールや設定方法、Node-REDの基礎知識、操作方法については割愛します。)
NOOBSの最新版Version:3.0.0
や、Raspbian Stretch with desktop and recommended software Version:November 2018
では最初からNode-REDがイントールされています。
Node-REDのアップデート
インストールされているNode-REDは、ターミナルから
pi@raspberry:~ $ update-nodejs-and-nodered
によってNode-REDとnode.jsをアップデートします。
Node-REDの自動起動設定
Node-REDをRaspberry Piを電源を投入すると自動起動する設定にします。
ターミナルから以下を実行してください。
pi@raspberry:~ $ sudo systemctl enable nodered.service
pigpioを使用可能にする
Mugbotのサーボモーターを動かすためにRaspberry PiのソフトPWMのpigpioを使用可能にします。pigpioはすでにインストールされていますので、それを使えるようにします。
Raspberry Piのデスクトップのメニューの「設定」から「Raspberry Piの設定」を選んで「インターフェイス」のタブをクリックします。そして、「リモートGPIO:」のラジオボタンの「有効」を選択して、最後に「OK」ボタンをクリックします。
pigpioの自動起動設定をする
pigpioをRaspberry Piを電源を投入すると自動起動する設定にします。
ターミナルから以下を実行してください。
pi@raspberry:~ $ sudo systemctl enable pigpiod
最後にRaspberry Piの再起動をします。
pi@raspberry:~ $ sudo reboot
Node-REDの起動
Raspberry Piにモニターとキーボード、マウスを接続してRaspberry Piが起動したら
Raspberry Piのブラウザに以下を入力するとNode-REDが起動します。
Raspberry Piから直接起動
127.0.0.1:1880
ネットにつながったPCから起動
Raspberry Piと家庭内ネットなどで繋がっているPCから、Raspberry PiのNode-REDを見ることができます。Raspberry PiのIPアドレスを知る必要があります。
Raspberry Piのターミナルから以下を入力するとIPアドレスを知ることができます。
pi@raspberry:~ $ hostname -I
(その他、ネット上にぶら下がっている機器のIPアドレスををPCから検索する方法もありますが、割愛します。)
Raspberry PiのIPは192.168.42.1であれば
PCのブラウザに以下を入力するとNode-REDを制御できます。
192.168.42.1:1880
Node-REDからMugbotを制御する
準備が整いましたので、MugbotをNode-REDで制御してみましょう
目の点灯
Mugbotの左目のLEDはGPIO19、右目はGPIO16に接続されています。
GPIOの制御にはrip gpioノードを使用します。
両目にtemplateノードから「1」を送ると点灯します。「0」を送ると消灯します。
音声合成
音声合成は、execノードからシェルスクリプトの
mugbot-talk-1.2.sh
を使い、
execノードの前のtemplateノードに書いた
「私はマグボットです」のテキストを引数として使用して
発話します。
口のLEDは発話の開始前に点灯させ、会話が終了すると消灯させます。
口のLEDは「rpi gpio」ノードのGPIO26を使用しています。
サーボの回転
Mugbotの首と目のサーボを制御できます。
サーボは「pi gpio」ノードで制御します。
「pi gpio」ノードもNode-REDでインストールする必要があります。
首のサーボはGPIO21に接続されています。
「pi gpio」ノードの設定は以下のようにします。
Mugbotのサーボは「RB90」を使用しています。
Type を「Serbo output」、
Limitsを「540-2450 uS」に設定しました。
使用するサーボで変更する必要があるかもしれません。
「pi gpio」ノードを使って、首のサーボを「50」(0-180度の50%という意味で90度)
で制御できます。目のサーボは「40」です。(0-180度の40%という意味で72度)
Node-REDのデモデータ
以下は、MugbotのNode-REDのJSONデータです。
活用してください。本稿の最後にデモデータのJSONデータを置きました。
dashboardによる操作インタフェース
Node-REDのノードであるdashboardを使用して
操作インタフェースを作ることができます。
dashboardを使用するにはdashboardノードをインストールする必要があります。
MugbotのIPアドレスが、
192.168.42.1であれば
http://192.168.42.1:1880/ui/#/0
で上記のデモデータによる操作インタフェースを見ることができます。
これはスマホのブラウザから見ることもできます。
Shakebot
2017年からMugbotのサブセットの小型ロボット「Shakebot」を開発しています。
100円ショップの「シェイカー」を筐体にしてRaspberry Pi Zeroを使っています。
Mugbotと同じNode-REDのシステムで動きます。
この製作方法も今後
www.mugbot.com
でご紹介します。
今後の展望
そもそもMugbotのNode-RED化に踏み切った理由はWatsonを接続することでした。
今後はMugbotと会話できるようにします。
また、研究室のMugbotとShakebotはMQTTでメインのPCからブローカーを介して制御しています。この方法についても
www.mugbot.com
や、
https://www.facebook.com/SocialRobotics/
でご紹介できればと思います。
駆け足でしたが、MugbotのNode-RED化についてご紹介させていただきました。みなさんでMugbotを作って、実際の生活の中で使っていただけると幸いです。
JSONのデモデータ
[{"id":"150efef1.23da19","type":"exec","z":"2e3e4484.fa026c","command":"/home/pi/mugbot-talk-1.2.sh","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"音声合成","x":640,"y":280,"wires":[["fa765829.dc37c"],[],[]]},{"id":"abade62c.b3202","type":"rpi-gpio out","z":"2e3e4484.fa026c","name":"口LED","pin":"37","set":"","level":"0","freq":"","out":"out","x":930,"y":600,"wires":[]},{"id":"fe634d1a.1547d","type":"rpi-gpio out","z":"2e3e4484.fa026c","name":"口LED","pin":"37","set":"","level":"0","freq":"","out":"out","x":950,"y":340,"wires":[]},{"id":"b9f6db88.28dd68","type":"template","z":"2e3e4484.fa026c","name":"1","field":"payload","fieldType":"msg","format":"text","syntax":"plain","template":"1","output":"str","x":830,"y":340,"wires":[["fe634d1a.1547d"]]},{"id":"fa765829.dc37c","type":"template","z":"2e3e4484.fa026c","name":"0","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"0","output":"str","x":810,"y":260,"wires":[["8590e25d.15cbf"]]},{"id":"8590e25d.15cbf","type":"rpi-gpio out","z":"2e3e4484.fa026c","name":"口LED","pin":"37","set":"","level":"0","freq":"","out":"out","x":950,"y":260,"wires":[]},{"id":"7de92945.1489f8","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"目サーボ","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":540,"y":480,"wires":[]},{"id":"b86bfd5c.0bbf","type":"template","z":"2e3e4484.fa026c","name":"35","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"35","output":"str","x":530,"y":400,"wires":[["7de92945.1489f8","5fe48798.03f82"]]},{"id":"dcb946a1.52e5a8","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"目サーボ","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":880,"y":520,"wires":[]},{"id":"5900768a.6a343","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":690,"y":460,"wires":[["28dade99.61123a","e59b3993.f73bf"]]},{"id":"c02c977.cac3968","type":"rpi-gpio out","z":"2e3e4484.fa026c","name":"左目","pin":"35","set":"","level":"0","freq":"","out":"out","x":330,"y":40,"wires":[]},{"id":"5b3a8f63.a81f58","type":"rpi-gpio out","z":"2e3e4484.fa026c","name":"右目","pin":"36","set":"","level":"0","freq":"","out":"out","x":330,"y":80,"wires":[]},{"id":"5fe48798.03f82","type":"delay","z":"2e3e4484.fa026c","name":"300","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":670,"y":400,"wires":[["5900768a.6a343"]]},{"id":"37d38e75.e9fab2","type":"ui_slider","z":"2e3e4484.fa026c","name":"","label":"eyes","group":"38994330.9a55c4","order":0,"width":0,"height":0,"passthru":true,"topic":"","min":"30","max":"40","step":1,"x":130,"y":500,"wires":[["5fea255.1e4f5dc"]]},{"id":"5fea255.1e4f5dc","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"目サーボ","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":320,"y":500,"wires":[]},{"id":"49136b7e.840d94","type":"ui_slider","z":"2e3e4484.fa026c","name":"","label":"head","group":"38994330.9a55c4","order":0,"width":0,"height":0,"passthru":true,"topic":"","min":0,"max":"100","step":1,"x":130,"y":560,"wires":[["b75896c9.312a58"]]},{"id":"b75896c9.312a58","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"首サーボ","host":"localhost","port":8888,"pin":"21","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":320,"y":560,"wires":[]},{"id":"2e89176b.9404e8","type":"ui_text_input","z":"2e3e4484.fa026c","name":"","label":"Voice","group":"38994330.9a55c4","order":0,"width":0,"height":0,"passthru":true,"mode":"text","delay":300,"topic":"","x":130,"y":420,"wires":[["150efef1.23da19","b86bfd5c.0bbf","64febfab.cbe6c"]]},{"id":"9a20942d.d11d7","type":"exec","z":"2e3e4484.fa026c","command":"/home/pi/mugbot-talk-1.2.sh","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"音声合成","x":660,"y":700,"wires":[["2b76cb98.acf66c"],[],[]]},{"id":"267fc689.af8792","type":"inject","z":"2e3e4484.fa026c","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":100,"wires":[["c02c977.cac3968","5b3a8f63.a81f58","ec34f9ca.2f999","dd9f6a04.dc159"]]},{"id":"df93cb.70f14c38","type":"ui_button","z":"2e3e4484.fa026c","name":"","group":"38994330.9a55c4","order":0,"width":0,"height":0,"passthru":false,"label":"My name is Mugbot","color":"","bgcolor":"","icon":"","payload":"マイネームイズマグボット","payloadType":"str","topic":"","x":180,"y":640,"wires":[["9a20942d.d11d7","85a75217.0da4b8","b86bfd5c.0bbf","7cac8444.f1794c","343380a8.0e524"]]},{"id":"448e6b39.0d7a34","type":"ui_button","z":"2e3e4484.fa026c","name":"","group":"38994330.9a55c4","order":0,"width":0,"height":0,"passthru":false,"label":"東京都市大学の小池研究室で生まれました。","color":"","bgcolor":"","icon":"","payload":"東京都市大学の小池研究室で生まれました。","payloadType":"str","topic":"","x":250,"y":720,"wires":[["9a20942d.d11d7","85a75217.0da4b8","b86bfd5c.0bbf","343380a8.0e524"]]},{"id":"4a154bda.9d901c","type":"ui_button","z":"2e3e4484.fa026c","name":"","group":"38994330.9a55c4","order":0,"width":0,"height":0,"passthru":false,"label":"私の体は百円ショップの部品でできています。","color":"","bgcolor":"","icon":"","payload":"私の体は百円ショップの部品でできています。","payloadType":"str","topic":"","x":260,"y":800,"wires":[["9a20942d.d11d7","85a75217.0da4b8","b86bfd5c.0bbf","7cac8444.f1794c","343380a8.0e524"]]},{"id":"b5fcba76.7f3d1","type":"ui_button","z":"2e3e4484.fa026c","name":"","group":"38994330.9a55c4","order":0,"width":0,"height":0,"passthru":false,"label":"Laugh","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":150,"y":960,"wires":[["7a4cca98.c323ac","4e5efd17.92e0ec"]]},{"id":"7a4cca98.c323ac","type":"template","z":"2e3e4484.fa026c","name":"30","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"30","output":"str","x":310,"y":960,"wires":[["766576a7.efc72","5e5cd5b7.d3ef74"]]},{"id":"766576a7.efc72","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":320,"y":1020,"wires":[]},{"id":"5e5cd5b7.d3ef74","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":490,"y":960,"wires":[["3969783d.038dd"]]},{"id":"3969783d.038dd","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":490,"y":1020,"wires":[["b5b62.fe2fa49e","562700de.382648"]]},{"id":"b5b62.fe2fa49e","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":480,"y":1080,"wires":[]},{"id":"e421e955.6d3408","type":"rpi-gpio out","z":"2e3e4484.fa026c","name":"","pin":"37","set":"","level":"0","freq":"","out":"out","x":140,"y":1100,"wires":[]},{"id":"562700de.382648","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":690,"y":960,"wires":[["2898f796.f113a"]]},{"id":"2898f796.f113a","type":"template","z":"2e3e4484.fa026c","name":"30","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"30","output":"str","x":690,"y":1020,"wires":[["41aefdce.4ed2e4","e5582c0c.3866"]]},{"id":"41aefdce.4ed2e4","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":680,"y":1080,"wires":[]},{"id":"e5582c0c.3866","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":890,"y":960,"wires":[["ddac1c5c.26fb1"]]},{"id":"ddac1c5c.26fb1","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":890,"y":1020,"wires":[["faa585b3.70c62","89a8e5c3.f7cf8"]]},{"id":"faa585b3.70c62","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":880,"y":1080,"wires":[]},{"id":"4e5efd17.92e0ec","type":"template","z":"2e3e4484.fa026c","name":"1","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"1","output":"str","x":130,"y":1040,"wires":[["e421e955.6d3408"]]},{"id":"89a8e5c3.f7cf8","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1090,"y":960,"wires":[["6ad9d4ea.75077c"]]},{"id":"6ad9d4ea.75077c","type":"template","z":"2e3e4484.fa026c","name":"30","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"30","output":"str","x":1070,"y":1020,"wires":[["425042e4.e9aa5c","eb18ac7d.8e5308"]]},{"id":"425042e4.e9aa5c","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":1080,"y":1080,"wires":[]},{"id":"eb18ac7d.8e5308","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1310,"y":960,"wires":[["b4c025e1.7d45e8"]]},{"id":"b4c025e1.7d45e8","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":1310,"y":1020,"wires":[["8a443c47.9b102","ecc7c7d7.f98d"]]},{"id":"8a443c47.9b102","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":1320,"y":1080,"wires":[]},{"id":"ecc7c7d7.f98d","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":170,"y":1220,"wires":[["21074e1f.a0b1fa"]]},{"id":"85a75217.0da4b8","type":"template","z":"2e3e4484.fa026c","name":"1","field":"payload","fieldType":"msg","format":"text","syntax":"plain","template":"1","output":"str","x":650,"y":600,"wires":[["e30adfdd.2ad7"]]},{"id":"bce2afde.a0cb08","type":"rpi-gpio out","z":"2e3e4484.fa026c","name":"口LED","pin":"37","set":"","level":"0","freq":"","out":"out","x":930,"y":700,"wires":[]},{"id":"2b76cb98.acf66c","type":"template","z":"2e3e4484.fa026c","name":"0","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"0","output":"str","x":790,"y":700,"wires":[["bce2afde.a0cb08"]]},{"id":"28dade99.61123a","type":"delay","z":"2e3e4484.fa026c","name":"300","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":870,"y":400,"wires":[["619d6f3c.d7cee"]]},{"id":"619d6f3c.d7cee","type":"template","z":"2e3e4484.fa026c","name":"35","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"35","output":"str","x":870,"y":460,"wires":[["dcb946a1.52e5a8","cc7a5e04.ebf8c"]]},{"id":"e59b3993.f73bf","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"目サーボ","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":700,"y":520,"wires":[]},{"id":"f149d35e.045f7","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"目サーボ","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":1240,"y":520,"wires":[]},{"id":"79e6a53f.e9e8e4","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":1050,"y":460,"wires":[["f5de477a.96d6","63596670.7579e8"]]},{"id":"cc7a5e04.ebf8c","type":"delay","z":"2e3e4484.fa026c","name":"300","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1050,"y":400,"wires":[["79e6a53f.e9e8e4"]]},{"id":"f5de477a.96d6","type":"delay","z":"2e3e4484.fa026c","name":"300","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1230,"y":400,"wires":[["2653fbb4.648864"]]},{"id":"2653fbb4.648864","type":"template","z":"2e3e4484.fa026c","name":"35","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"35","output":"str","x":1250,"y":460,"wires":[["f149d35e.045f7","4b248fbf.682498"]]},{"id":"63596670.7579e8","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"目サーボ","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":1060,"y":520,"wires":[]},{"id":"1b2c46a5.1ee891","type":"template","z":"2e3e4484.fa026c","name":"60","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"60","output":"str","x":1590,"y":480,"wires":[["11530f93.05707","3f514913.c698d6"]]},{"id":"7fd8e667.4c4d08","type":"delay","z":"2e3e4484.fa026c","name":"300","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1570,"y":400,"wires":[["1b2c46a5.1ee891"]]},{"id":"11530f93.05707","type":"delay","z":"2e3e4484.fa026c","name":"300","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1750,"y":400,"wires":[["360f7240.55fafe"]]},{"id":"360f7240.55fafe","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":1770,"y":480,"wires":[["a26dd9b9.521c9","be19e3a3.740a"]]},{"id":"ac1852e4.8c27b","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"首サーボ","host":"localhost","port":8888,"pin":"21","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":1440,"y":480,"wires":[]},{"id":"3f514913.c698d6","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"首サーボ","host":"localhost","port":8888,"pin":"21","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":1600,"y":560,"wires":[]},{"id":"a26dd9b9.521c9","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"首サーボ","host":"localhost","port":8888,"pin":"21","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":1760,"y":560,"wires":[]},{"id":"be19e3a3.740a","type":"delay","z":"2e3e4484.fa026c","name":"300","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1930,"y":400,"wires":[["354bd64c.84e85a"]]},{"id":"ec34f9ca.2f999","type":"template","z":"2e3e4484.fa026c","name":"50","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"50","output":"str","x":330,"y":140,"wires":[["fc896c88.81566"]]},{"id":"fc896c88.81566","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"首サーボ","host":"localhost","port":8888,"pin":"21","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":480,"y":140,"wires":[]},{"id":"dd9f6a04.dc159","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":330,"y":200,"wires":[["24796e20.f8a76a"]]},{"id":"24796e20.f8a76a","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"目サーボ","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":480,"y":200,"wires":[]},{"id":"4b248fbf.682498","type":"template","z":"2e3e4484.fa026c","name":"50","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"50","output":"str","x":1410,"y":400,"wires":[["7fd8e667.4c4d08","ac1852e4.8c27b"]]},{"id":"354bd64c.84e85a","type":"template","z":"2e3e4484.fa026c","name":"60","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"60","output":"str","x":1950,"y":480,"wires":[["898fec57.6541c","7ca770b5.7f1db8"]]},{"id":"898fec57.6541c","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"首サーボ","host":"localhost","port":8888,"pin":"21","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":1960,"y":560,"wires":[]},{"id":"7ca770b5.7f1db8","type":"delay","z":"2e3e4484.fa026c","name":"300","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":2110,"y":400,"wires":[["43e650b6.805ef"]]},{"id":"43e650b6.805ef","type":"template","z":"2e3e4484.fa026c","name":"50","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"50","output":"str","x":2130,"y":480,"wires":[["f56f1df2.a197a8"]]},{"id":"f56f1df2.a197a8","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"首サーボ","host":"localhost","port":8888,"pin":"21","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":2160,"y":560,"wires":[]},{"id":"7cac8444.f1794c","type":"template","z":"2e3e4484.fa026c","name":"50","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"50","output":"str","x":670,"y":780,"wires":[["a72cbbfb.8a7008"]]},{"id":"a72cbbfb.8a7008","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"首サーボ","host":"localhost","port":8888,"pin":"21","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":820,"y":780,"wires":[]},{"id":"343380a8.0e524","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":670,"y":860,"wires":[["de500307.22f05"]]},{"id":"de500307.22f05","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"目サーボ","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"540","sermax":"2450","x":800,"y":860,"wires":[]},{"id":"21074e1f.a0b1fa","type":"template","z":"2e3e4484.fa026c","name":"30","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"30","output":"str","x":150,"y":1300,"wires":[["2c72ba20.e372ce","f812b2.f3101d5"]]},{"id":"2c72ba20.e372ce","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":160,"y":1380,"wires":[]},{"id":"f812b2.f3101d5","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":350,"y":1220,"wires":[["b01f0083.8b31f"]]},{"id":"b01f0083.8b31f","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":350,"y":1280,"wires":[["547b8ea4.da5e","e35cdd3b.c6d3b"]]},{"id":"547b8ea4.da5e","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":340,"y":1360,"wires":[]},{"id":"e35cdd3b.c6d3b","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":570,"y":1220,"wires":[["c0574e1b.189998"]]},{"id":"c0574e1b.189998","type":"template","z":"2e3e4484.fa026c","name":"30","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"30","output":"str","x":550,"y":1300,"wires":[["d971875c.60005","863301e3.94fe88"]]},{"id":"d971875c.60005","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":540,"y":1360,"wires":[]},{"id":"863301e3.94fe88","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":790,"y":1220,"wires":[["912a1b84.2afac"]]},{"id":"912a1b84.2afac","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":790,"y":1300,"wires":[["34257cf0.720424","1fae330b.5546ad"]]},{"id":"34257cf0.720424","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":800,"y":1360,"wires":[]},{"id":"dc6300b7.ab8b6","type":"template","z":"2e3e4484.fa026c","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"0","output":"str","x":1660,"y":1220,"wires":[["e00b8129.9dfa68"]]},{"id":"e00b8129.9dfa68","type":"rpi-gpio out","z":"2e3e4484.fa026c","name":"","pin":"37","set":"","level":"0","freq":"","out":"out","x":1620,"y":1320,"wires":[]},{"id":"1fae330b.5546ad","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":990,"y":1220,"wires":[["6dad372f.7abdc8"]]},{"id":"6dad372f.7abdc8","type":"template","z":"2e3e4484.fa026c","name":"30","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"30","output":"str","x":990,"y":1300,"wires":[["ef8be4c5.6ff9b","1856c718.40f181"]]},{"id":"ef8be4c5.6ff9b","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":1000,"y":1360,"wires":[]},{"id":"1856c718.40f181","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1210,"y":1220,"wires":[["cb80a2cc.52ce3"]]},{"id":"cb80a2cc.52ce3","type":"template","z":"2e3e4484.fa026c","name":"40","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"40","output":"str","x":1190,"y":1300,"wires":[["26b92103.678ea6","644ead58.737f8c"]]},{"id":"26b92103.678ea6","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":1200,"y":1360,"wires":[]},{"id":"644ead58.737f8c","type":"delay","z":"2e3e4484.fa026c","name":"","pauseType":"delay","timeout":"0.1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1430,"y":1220,"wires":[["bf4a5767.c21c78"]]},{"id":"bf4a5767.c21c78","type":"template","z":"2e3e4484.fa026c","name":"30","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"30","output":"str","x":1410,"y":1320,"wires":[["70b8f414.15d414","dc6300b7.ab8b6"]]},{"id":"70b8f414.15d414","type":"pi-gpiod out","z":"2e3e4484.fa026c","name":"","host":"localhost","port":8888,"pin":"20","set":"","level":"0","out":"ser","sermin":"550","sermax":"2450","x":1420,"y":1380,"wires":[]},{"id":"64febfab.cbe6c","type":"delay","z":"2e3e4484.fa026c","name":"300","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":630,"y":340,"wires":[["b9f6db88.28dd68"]]},{"id":"e30adfdd.2ad7","type":"delay","z":"2e3e4484.fa026c","name":"300","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":790,"y":600,"wires":[["abade62c.b3202"]]},{"id":"38994330.9a55c4","type":"ui_group","z":"","name":"Control","tab":"496771d5.b2ebe8","order":1,"disp":true,"width":"6","collapse":false},{"id":"496771d5.b2ebe8","type":"ui_tab","z":"","name":"Mugtbot","icon":"dashboard","order":2}]