micro:bitで月面探査ロボットをつくって操縦しよう!

こんにちは。宗村です。

今回で神楽坂プログラミング教室も70回目!

お題は「micro:bitで月面探査ロボットをつくって操縦しよう!」です。 実際に月で活動できるロボットを作るというわけではありません。

基本的な内容は、今までも何度かやっているラジコンカー作りなのですが、今回はそれに2つの要素を追加しました。

1つは作業をさせる事(月の石の回収)

もう1つはロボットの視点で遠隔操縦(地球からカメラ映像を見ながら月のロボットを操作)

「月面に運んだロボットを地球から操作して作業してみよう」というイメージを共有してからワークショップスタートです。 あえて作業場所を月に設定したのには訳がありますが、それについては後程。

まずは、リモコン側のプログラムを作ります。どれか一つのボタンの使い方だけを教えて、後はどのボタンをどんな操作に割り当てるか考えてもらいました。

リモコンのプログラミング

次はロボット側のプログラムです、まずは基本機能として移動できるようにプログラムを作ってもらいます。

ロボットの移動用プログラム作り

今回はただ移動できるだけではなく、作業をさせるというのが1つの目的なので、「小さなブロックを持ち帰ってくる」という課題を用意しました。

移動ができるようになったら、作業をさせるためのロボットアームを動くようにプログラムを作ってもらいます。 アームといっても上下するだけの仕組みです。そこにブロックを持ち帰るための工作を付け加えて、オリジナルロボットにしてもらいます。

どうすればブロックを運べるか

工作ができたら、うまくいくか実験

ブロックに接近して
持ち上げる

無事に完成したら、ロボットの上にスマートフォンを乗せて、リモート会議アプリで教室のモニターにスマートフォンのカメラの画像を映し出します。

この時カメラの映像にタイムラグが結構あります。そこでロボットは月にあって電波の到着に時間がかかるというシチュエーションを設定しました。

さっそく完成したロボットを使って月面を探検に行きます。

月面(オフィス内)を探検

タイムラグがあってかなりやりづらいはずですが、さすが子供達、はたから見るとそんなものないように対応しています。

一回目の探査で気になったところを改良して、2回目の打ち上げに備えます。

部品を追加

アームのサイズを変更

ブロックを運ぶロボットたち

実際にやってみると、タイヤがダンボールの角に引っかかったりして動けなくなるのですが、カメラからの情報では原因がわかりません。 そこに別のロボットがやってくると別視点の情報が得られたりして、トラブル自体も結構面白かったりします。

ロボットを救出に行って「あーー こうなってたのかーー!」と原因がわかったりして、実際に宇宙で活躍しているロボットたちにもこんなことが起こったりしてるんじゃないかというミニ体験ができました。

今回参加してくれた子たちは

  • ブロックが常に同じ向きかどうかはわからないから、向きを変えられる仕組みを作ろう
  • 今どこにいるかわからなくなるから地図が必要
  • 助けてもらえるように仲間の位置がわかるようにできないか

のようにいろいろと工夫を凝らして挑戦してくれていました。

フィールドの工夫としては、大量のブロックを密集させたエリアや、真っ暗で見えないエリアなども用意してみました。 なかなかブロックが見つからない中で大量のブロックを発見したときは歓声が起こりとても盛り上がりました。

今回はアルテミス計画で話題としてもタイムリーという理由と、タイムラグの感じから「月面探査」という名目のワークショップにしてみました。 月ならギリギリ操作できるかもしれませんが、火星にあるロボットは分単位でタイムラグが出るので自律動作が必須というお話もしたので、いつかは火星バージョンもやってみたいですね。

それでは、また次回のご参加お待ちしております。