テクノロジー

話題の学習教材ロボット“TOMOT-Aro1”と友だちになろう! 【前編】

話題の学習教材ロボット“TOMOT-Aro1”と友だちになろう! 【前編】

前回は、TOMOT-Aro1を接続して動かすことができましたが、十分に理解ができているとは言い難い状態でした。

話題のROSが学べる学習教材ロボット“TOMOT-Aro1” 本当に初心者でも学習できるのか体験してみた
TOMOT-Aro1は将来のロボット技術者を育成することを目的に開発された学習ロボットでオープンソースであるROSを学ぶことが可能。ROSは世界水準の技術です。そこでTOMOT-Aro1というROSが学べる世界で初めてのROS学習教材を学んでみました。

これから2回に渡って、実際にTOMOT-Aro1を動かしながらプログラミングの基礎を勉強していきたいと思います。

私だけでは心もとないので、今回からメンターとして指導してくださる、アロン先生と一緒にすすめて参りたいと思います。先生よろしくお願いします。

アロン先生
アロン先生

こんにちは。一緒に楽しく学びながら進めていこうね。難しく考えるとつまずいてしまうので、楽しくが基本だよ。ただし、基本的なことは覚えてほしい。そこは丁寧に説明するから安心してね。

はい、わかりました!やさしそうな先生で安心しました。先生、最初に知っておきたいのですが、TOMOT-Aro1でいったいどんなことができるのですか?

アロン先生
アロン先生

そうだね。まずは、簡単に概要を説明しておこう。

アロン先生
アロン先生

TOMOT-Aro1は小さいロボットだけど、ラズベリーパイ(Raspberry Pi)という超小型コンピューターを内蔵しているんだ。そのコンピューター内でプログラミングすることで、ロボットを制御することができるようになるというわけ。

TOMOT-Aro1

なるほど、手足のついたパソコンという感じですかね。

アロン先生
アロン先生

まさに、その通り。さらに色んなセンサーや機能がついているから、それらのセンサーを組み合わせることで、様々な動きが実現できるようになるってこと。

どんなセンサーが付いているのですか?

アロン先生
アロン先生

主にはそうだね。まずは、簡単に概要を説明しておこう。TOMOT-Aro1は小さいロボットだけど、ラズベリーパイ(Raspberry Pi)という超小型コンピューターを内蔵しているんだ。そのコンピューター内でプログラミングすることで、ロボットを制御することができるようになるというわけ。

  • カメラビュー(カメラ映像の取り込み)
  • 3軸加速度センサー(ロボットの傾きを検出)
  • 超音波距離センサー(対象物までの距離を測る)
  • 発話プログラム(テキストの読み上げ)
アロン先生
アロン先生

の4つだね。

アロン先生
アロン先生

例えば、何かが近くに来たら所定の動作をさせる、といったようなコントロールができるようになる。

TOMOT-Aro1

人間でいう五感が備わっているんですね。色んなことができそうな気がしてきました。

アロン先生
アロン先生

よし、じゃあ早速進めていこうか。

よろしくお願いします。

アロン先生
アロン先生

TOMOT-Aro1のプログラミングはROS(ロス)で行うよ。

ROSは前回に調べてみました。ロボット用のOSなんですよね。

アロン先生
アロン先生

そう、Robot Operating System(ロボットオペレーティングシステム)の略でROS
開発ツールやライブラリが含まれたオープンソースソフトウェアで、これからのロボット制御開発の共通言語になりつつあるんだ。これが使えるようになれば、TOMOT-Aro1だけじゃなくて、世界中のあらゆるロボットの制御開発に応用できるようになるよ。

ROSを理解しておけば、可能性が広がりそうですね。がんばります。

アロン先生
アロン先生

まずはデモプログラムを実行したいので「ROSCORE」を起動しよう。

アロン先生
アロン先生

「ROSCORE」とは、ノード間で通信できるようにするためのプログラムやノードの集合体のことだね。「ノード」とは目的毎の最小のプロセスで、「ROSCORE」を立ち上げておかねば、ノード間で通信ができないんだ。ターミナルに[roscore]とコマンドを入れて実行してみよう。

先生できました。「started core service」と表示されました。とっても簡単です。

started core service

アロン先生
アロン先生

いま行ったターミナルにコマンドを入力して実行するという簡単な動作が、全てのプログラミングの基本になる。コンピューターは指示されるのを待っているから、細かく指示して動作させていかねばならないんだ。今では電化製品もボタンひとつで動くけど、これらも一つひとつのコマンドを組み合わせて、複雑な動作を制御しているってことだよ。

誰かがプログラムを書いてくれていて、それをボタンで実行しているということなんですね。なんともありがたいです。それをできるようになりたいです。

アロン先生
アロン先生

もちろんできるようになる。そのためにはきちんと理解することが大事だよ。

わかりました。

アロン先生
アロン先生

次に各種センサーを起動してみよう。

アロン先生
アロン先生

新しいターミナルを立ち上げてもらえるかな。

なぜ新しいターミナルを開く必要があるんでしょうか?

アロン先生
アロン先生

コンピューターの場合、いくつもの処理を平行で処理していけるわけなんだけど、
それぞれのターミナルでそれぞれの処理を同時に行っていくと考えてほしい。

なるほど、各担当者が担うという感じですかね。

アロン先生
アロン先生

覚えやすいように理解できていればOK。

アロン先生
アロン先生

それでは、まずはカメラの起動からいこう。ターミナルで[roslaunch raspicam_node camerav2_1280×960.launch]を実行してみてごらん。

「Video capture started」と表示されました。コンピュータと対話している感じがしてきます。

Video capture started

アロン先生
アロン先生

「.launch」は複数のノードを一斉に起動できるようにしたファイルで、この場合は所定のデモ動作をするために用意されているファイルだよ。最初に「roslaunch」と入れているのは、launchファイルを起動してねっていう指示だね。間にある「raspicam_node」は固有のパッケージ名で、その中にあるlaunchファイルを指定しているという意味。

コマンド一つひとつの意味を理解していくと、頭の中にスーッと入っていきますね。

アロン先生
アロン先生

よし。新しいターミナルで今度は[rqt_image_view]を実行してみてくれるかな。これはROSの標準で用意されているコマンドで、これによってカメラビューが起動してモニタリングできるようになるよ。そのまま覚えておこう。

映像が写りました。私が写ってます。恥ずかしい。

映像

アロン先生
アロン先生

どんどん行こう。

アロン先生
アロン先生

今度は3軸加速度センサーだ。新しくターミナルを起動して、[rosrun ndc_hn01 publish_acceleration_sensor.py]を実行しよう。

また新しいコマンドが出てきましたけど、どんな意味があるのでしょうか?

アロン先生
アロン先生

きちんと説明しておこう。「rosrun」も先ほどの「roslaunch」と同じく、ノードを起動するコマンドなんだ。今回は「.launch」ではなく「.py」というPythonのファイルを開くので「rosrun」を使ってるというわけ。つまり、「.py」では「rosrun」を使い、「.launch」では「roslaunch」と使い分けており、ノードの実行は「rosrun」か「roslaunch」のどちらかになるよ。

なるほど、わかりやすい違いがあるんですね。

ちなみに、私、「Python」は知ってますよ。特にAIの分野で活用されているプログラム言語ですよね。

アロン先生
アロン先生

そのとおり。InstagramやYouTubeなどの世界的なWebアプリケーションも「Python」によって開発されていて、ロボット開発においても重要な言語になっているね。TOMOT-Aro1の開発にも「Python」は欠かすことができないから、しっかりと習得していこう。

「ROS」に「Python」と、今後の開発のスタンダードになっていくものが学べるいうことですね。わくわくします。

うわっ、大変です。凄いスピードで文字や数字が流れています、、、

文字や数字

アロン先生
アロン先生

驚かなくても大丈夫。これはセンサーで取得しているデータだよ。

アロン先生
アロン先生

これだと何かわからないので、新しいターミナルで[rqt_plot]を実行してごらん。

はい。各センサーの値がグラフで表示されてとても分かりやすくなりました。

このグラフが先ほどのセンサーで取得しているデータなんですか?

グラフ

アロン先生
アロン先生

そう、このグラフは取得したセンサーのデータをグラフ化したものだよ。本体を動かすとセンサーの数値が変わるから、動作しているのが確認できるね。このように取得したデータは全て数値で認識されているんだ。モーションキャプチャーのときも、角度を細かく数値でコントロールしていくことになるよ。

全て数値で管理していくんですね。最初はとっつきにくい印象を受けましたが、むしろ明確になる気がします。

アロン先生
アロン先生

数値は絶対だからね。曖昧な指示ではロボットは制御できないんだ。

アロン先生
アロン先生

では新たなターミナルを起動し、[rosrun ndc_hn01 publish_ultrasonic_sensor.py]を実行しよう。こちらは超音波距離センサーの値を表示するコマンドだよ。

トモ)実行しました。今度は、先ほどよりはゆっくりのスピードですが距離の値が表示されました。「ndc_hn01」にある「publish_ultrasonic_sensor.py」というファイルを「rosrun」で実行させるってことですね。

最初はターミナルが無機質な文字列だと感じていましたが、何となくコマンドラインの意味合いがわかってきた気がします。

コマンドライン

アロン先生
アロン先生

素晴らしい進歩だよ。最初の関門は突破できたんじゃないかな。プログラムも言語と言われるように、日本語や英語と同じで、意味がわかってくれば、コミュニケーションが取れるということだね。

なるほど!目からウロコです。

アロン先生
アロン先生

では今回はここまでにしよう。次回は動くデモを活用したり、ティーチングでロボットを学習させていこうか。

アロン先生
アロン先生

[Ctrl]+[C]を押して必要のないデモプログラムは終了しておこう。

本日はありがとうございました。細かく解説をしていただけることで、理解しながら進めることができました。

次回もよろしくお願いします。

TOMOT公式サイト

トップへ戻る
タイトルとURLをコピーしました