コロナ禍でもロボットプログラミングを体験できるワークショップをenebularを使って行いました。
Why
なぜこの研究を行っているのか?
所属している小池研究室では社会構成主義という人と人との関係性の中で社会が構成されていくという考え方をもとに研究しています。
その中でも、私たちのプロジェクトではマグボットという小池研究室で開発されたソーシャルロボットを利用し、人と人のコミュニケーションの間にロボットを置いたときの人間やロボットの変化を研究しています。
今回のフィールドワークに至った経緯
今まで研究していたフィールドである東京都市大学横浜キャンパス図書館がコロナで利用者が減ってしまったため、研究ができなくなってしまいました。しかし、以前研究室がお世話になっていた株式会社たまらばさんからのお誘いがあり、オンラインでマグボットを利用したプログラミング教育を行うことになりました。またオンラインで行うにあたってマグボットの遠隔操作が行える環境、お互いがZoomでコミュニケーションを取れる環境が備わっていたため実施することができました。
What
マグボットとは?
マグボットとは、東京都市大学小池研究室が開発したオープンソースのソーシャルロボットです。
- RaspberryPi と Node-RED によって制御している。
- 100 円均一ショップな どで材料を購入でき、誰でも材料を用意することができ比較的安価で製作できるロボットです。
- 自在にデザイン変更が可能。
- 社会、コミュニティで役割を持って働くことを目的としており、ロボットが人間の代替として働くのではなく、人と人を繋ぐ役割になることを期待されています。
製作方法や最新の情報は、以下をご覧ください。
ワークショップ
事前に株式会社たまらば様に参加者を募っていただき、不登校の生徒2名に集まっていただきました。
2人におよび、たまらばスタッフ様に対し、今困っていることを解決できるマグボットの方法や機能および用途を考え、プログラムしてもらうワークショップを行った。
生徒に対してはできる限り既存のマグボットの活動フィールドや用途を伝えずどのような利用方法があるかを考えてもらいました。
壊れる恐れもあるため、被験者にマグボットは送らず大学内からmqtt経由で操作をしてもらい、動きや音声などはZoomで繋ぎました。
enebularもDashboardを使うため、Web版を利用させていただきました。
When
生徒たちが来やすいよう、土曜日に3回開催。
Where
- 東京都市大学の学生・先生…横浜キャンパス内のパソコンルームから
- たまらばの方、参加生徒…自宅やコミュニティスペースから
Zoom オンラインミーティングにてつながる
How
- Zoomを使って長崎と福島の参加者と
- enebularとマグボット内のNode-REDをで接続。遠隔で操作を可能にした。
- マグボットじゃんけんやあっち向いてホイでアイスブレイクを行った。
技術面
環境
- enebular(Web版)
- Beebotte
- マグボット
- Raspberry Pi 3 Model B Ver 1.2+
- Node-RED
- Open JTalk
- 100均のマグカップ
- 100均の乾物ケース
-
Zoom
- マグボット1台につきパソコン1台
マグボットのNode-RED
各パーツに向かってmqttノードから信号が届く。
パーツの動作確認が簡単にできる様にDashboardも設定。
Open JTalkのインストールはこちらの記事を参考にさせていただきました。
templateノードでmsg.payload
内の言葉を再生できるようにコマンドを整え、execノードに向かって送ります。
echo "{{payload}}" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice -ow /dev/stdout | aplay --quiet
enebular
用途に分けてフローを4つ用意しました。
メインフロー
Dashboardに
- 首・頭サーボ用のsliderノード
- 目・口ライト用のswitchノード
- 発話用のformノード
- 発話テンプレート(例. 「こんにちは」「小池研究室で作られました」)のbuttonノード
を設置しました。
(こちらのJSONデモデータを改良しました。)
じゃんけんフロー
Dashboardの「グー」「チョキ」「パー」ボタンと、「勝ち」「負け」ボタンを設置しました。
手を選んで押すと、「じゃんけん、、、グー」と発する 。
勝敗ボタンは勝利数をカウントできる様にはなっているが、そこまでやらなかった。
あっち向いてホイフロー
Dashboardに上下左右それぞれのボタンを設置。Font-awesomeのアイコンをつけ、さらに大きさを調整し視認性を上げました。
「Reset」ボタンを設置したが、上下左右てボタンを押して3.5s後に元の位置に戻る様にしていたため使わなかった。
ワークスペースフロー
ここで参加生徒にそれぞれ考えたマグボットの機能をプログラムしてもらった。
手始めに、こちらで用意していた「日本時間取得」functionノードを使いマグボットに現在の時間を喋る(debugに出す)体験をしてもらった。
// ペイロードから日付オブジェクトを生成
var date = new Date(Date.now() + ((new Date().getTimezoneOffset() + (9 * 60)) * 60 * 1000));
// 日付文字列に変換して再度ペイロードをセット
msg.payload = date.toLocaleString({ timeZone: 'Asia/Tokyo' });
// 次のノードへmsgオブジェクトを返す
return msg;
MQTT(Beebotte)
マグボットとenebularを繋ぐ際に、BeebotteさんのMQTTブローカーを使って遠隔でデータの送受信を行いました。
マグボットにそれぞれChannelを作り、Publisherをenebular側、Subscriberをマグボットに設定。
それぞれのChannel内に各パーツのResourceを設定。
おわりに
小池研究室では長年マグボットを使った研究を行ってきましたが、オンラインで何か行うという試みが初でした。参加者も中学生でPCにもプログラミングにもあまり触れていない子たちでしたが、enebular(Node-RED)のおかげで簡単にマグボットを操作でき、とても感動してくれていました。
enebularきっかけでロボットやプログラミングに興味を持って、そこからスーパーエンジニアが誕生してくれたら嬉しいですね。