どれ使う?プログラミング教育ツール

「ルンバ」風の動きをアイロボットのプログラミング学習用ロボ「Root」で再現してみた

 ロボット掃除機「ルンバ」で知られるアイロボット社のプログラミング学習用ロボット「Root coding robot(以下、Root)」前回に引き続きご紹介します。今回は、ロボットの進行方向についているバンパーを利用して壁にぶつかっても進み続けられる動きをプログラムします。

バンパーで衝突判定!

 「Root」の進行方向にはバンパーがついていて、物にぶつかったことを検知することができます。ものに接触して物理的にバンパーが押し込まれることで検知されるのが特徴的で、他のプログラミング学習用ロボットにはあまり見ない機能です。衝突回避というと、障害物との距離を超音波センサーで測ってぶつかる前に衝突を回避できるタイプのプログラミング学習用ロボットがありますが、その方式と比べると、リアルにぶつかって反応するので、どこか生き物らしい雰囲気があり、親しみが感じられます。

矢印部分がバンパー

プログラミングをしてみよう!

 「Root」のプログラミングには、iOS/Android用のアプリか、WebブラウザーでアクセスできるWebアプリ「iRobot Coding」を使います。「iRobot Coding」にアクセスしてさっそくプログラムを作成しましょう。Web Bluetoothの機能で「Root」と接続するため、ブラウザーは「Google Chrome」か「Microsoft Edge」を使用します。「Safari」は非対応です。

「iRobot Coding」にアクセスしたところ。言語選択はメニュー内の[Language]で[にほんご]を選ぶ。[+]であたらしいプロジェクトを作成
最初にアクセスすると画面説明が表示される

 プログラム作成画面で、レベル2を選んでください。前回記事ではレベル1でアイコン型のブロックでプログラミングをしましたが、今回は、文字で説明の書かれたブロックを使います。

レベル2を選んだところ。プログラムのためのブロックがレベル1とは変わる。ブロック種類も増えている

ぶつかったらランダムな方向に方向転換

 プログラムを実行したらまず前進し、何かにぶつかったらランダムな角度で方向転換してまた前進するというプログラムを作成します。プログラムは次の図の通りです。ぶつかったときに方向転換するだけだと障害物の間にはまって抜け出せなくなることが多いので、いったん少し後ろに下がる動作をしてから、方向転換をさせるのがポイントです。

方向転換は、右まわりを指定しているが、角度をマイナスで指定すると左回りになる。ランダム値の範囲をマイナスからプラスまで広く設定したので、左右どちらの回り方の可能性もある。ランダム値の範囲を-360〜360ではなく-330〜330にしたのは、ぶつかったあとに同じ方向に向かうのを避けるため

 プログラムが作成できたらシミュレーターで動かしてみましょう。Webブラウザー版のプログラミングアプリのシミュレーターには障害物を置けるようになっていて、ぶつかる様子も試すことができます。

右側がシミュレーター。白いマス目エリアの外側に用意されているカラーキューブの障害物をマウスで配置することができる

ロボットが反応する演出を追加

 機能はできましたが、これだけではちょっと楽しくありません。ロボットが障害物にぶつかったときの反応などの演出を加えます。すでに作成した機能のプログラムに次の図の通りブロックを追加します。

赤字部分が追加したプログラム。[ライトをセット"*":"*"]と[いう"*"]のブロックで演出を追加。[いう"*"]は指定した言葉をしゃべるわけではなく、適当なロボット語を喋ってくれる。文字列の長さに応じて喋る長さが変化するようだ

 ライトや音の出る反応を追加すると、ロボットが、かなり生き生きとします。

障害物にぶつかると音と光で反応して向きを変える

 このプログラムを実際に動かしたところを動画でご覧ください。見た目のイメージよりもどっしりしているので、軽い障害物だと押しのけるくらいの力があります。動画の最後には、運良く障害物を抜けていきました。

「ルンバ」風の動きをプログラミング学習用ロボ「Root」で再現してみた - 窓の杜

 ランダムな動きですがちょっとお掃除ロボットの「ルンバ」風。つい、ぞうきんでも貼り付けて掃除をしてもらいたくなります。“本物のお掃除ロボットのプログラムはいったいどうなっているんだろう?”と興味を持つきっかけにもなりそうですね。

 2020年度から小学校でプログラミング教育が実施されています。これに伴い家庭でも手軽にプログラミングを学習できるツールが多数登場していますが、どんなツールを使えばいいのか迷ってしまう方も多いのではないでしょうか? そこで本連載では家庭でのプログラミング教育にピッタリなお勧めツールを紹介していきたいと思います。