前回、TOMOT-Aro1の機能や各種コマンドを学び、プログラミングに慣れてきた。今回はついにTOMOT-Aro1を動かしていく段階に入ります。
久しぶりだね。今日は更にTOMOT-Aro1とコミュニケーションをとって、もっと仲良くなっていこう。
先生、ご無沙汰しています。今日を心待ちにしていました。今回もよろしくお願いします。
もうTOMOT-Aro1の準備はできているね。
では早速だけど[python /opt/ndc/demo.py]のコマンドを実行していこう。コマンドの実行は覚えてるかな?
はい。これは前回も見たコマンドです。「demo.py」というPythonのファイルを実行するんですね。
アロン先生)
その通り。デモプログラムはいくつか用意されているんだけど、これは色んな動きが試せるから、一緒に少し遊んでみよう。
コマンドを実行したら、TOMOT-Aro1が動いてリストが表示されました。何やら楽しそうですね。
Root Menuが表示されたらリストの中から[6]のPlay the motion recorded in JSON fileを実行してくれるかな。
新しい名前が出てきましたね。「JSON」ってあまり聞き馴染みがないですけど、どういうファイルなんですか?
JSONとは「JavaScript Object Notation」の略称なんだけど、JavaScriptのオブジェクトの書き方を元にしたデータフォーマットでPythonなどのサーバサイド言語間のデータのやり取りで使われることも多いんだ。今はそこまで深くまで理解しなくて問題ないけど、ROSやPythonと共に必須の知識になるよ。
名前だけでも覚えておきます。JSONファイルを実行したら、またたくさんのリストが表示されました。動作の名前みたいなリストですね。
では、実際に実行してみようか。まずはこれから…[24]を入力してみてくれるかな。
わあ!TOMOT-Aro1がスクワットをはじめましたよ!すごい、動きが一生懸命でかわいいです。
面白いでしょう。次は[27]なんてどうかな。モーションを実行する時はケーブルを持って倒れないように注意してね。
今度はなんと歩いてます。TOMOT-Aro1が歩いていますよ。感動!
すごいだろう。一昔前はロボットが2足歩行することすらできなかったんだからね。
何か気になるものがあれば、実行してみてごらん。
じゃあ[22]のProposeにしてみようかな。
さて、どんな動きになるかな。
ひざまずいて愛の告白してますよ。そして指輪を渡して、、、えー、首がガクっとなって、最後に振られちゃいましたよ(笑)
プロポーズの結果は残念だったけど、面白いモーションだったね。
よし、パフォーマンスのデモはこれぐらいにしよう。TOMOT-Aro1で出来る動きがわかってきたんじゃないかな。それでは[Ctrl]+[C]を押してデモプログラムを終了しておこう。
今度はティーチングデモに挑戦だ。
はい、お願いします。
Root Menuに戻ってリストの中から今度は[8]のCapture the motion to the JSON fileを入力しよう。ティーチングできる状態になるんだけど、TOMOT-Aro1が半脱力状態になって倒れるから、必ず手で支えておいてね。
わっ、TOMOT-Aro1が倒れました!でも、ちゃんと支えていたので大丈夫でした。
ティーチングでは、好きなポーズを作ってから[Enter]キーを押すことでそのポーズを記録できるよ。無理なポージングをするとTOMOT-Aro1が倒れてしまうので注意してね。
立たせるだけでも、なかなかバランスが難しいですね。まずは正面を向いた状態にして[Enter]と。
これを連続して行うことで、一連の動作として再現することができるんだ。動きの考え方としては、アニメーションをイメージしてみてほしい。
アニメは好きでよく見ます。特にガンダムシリーズが大好きです。
アニメは滑らかに動いているように見えるけど、静止画を細かく変化させて連続再生することで動きを再現しているんだ。ロボットに覚えさせる動作も同じ考え方になるから、取りたいポーズ間の軌跡も想定しながら、モーションを作るようにしてごらん。
なるほど。細かく軌跡をイメージして、こんな感じでどうかな。
アニメ好きとあって筋がいいね。
もう1点、気をつけて欲しいのは重心だね。今は計算で求めることはできないので、ヤジロベーをイメージしてみてごらん。つり合っている点を下半身で支えるようにしておかないと、倒れてしまうから注意してみよう。
はい、なるほど。わかりました。できました。
[Ctrl]+[C]を押して終了しよう。 名前をつけて保存できるから、後でわかりやすいように適当な名前で保存しておこう。保存したファイルはRoot Menuに戻って[6]のPlay the motion recorded in JSON fileから選択できるようになっているよ。
保存したファイルがありました。
やったー!良い感じで再現できましたよ!でも途中の動作がイマイチだったなあ。
そんな時は編集機能を使うといいよ。実は保存したモーションは編集ができるんだ。
Root Menuのリストの中から[7]のAdjust the motion recorded in JSON fileを選択し、[Input number:]に先程のファイル番号を入力して、編集モードにしてみてごらん。
うわー、細かい数字が並んでいる。1つのポーズに対して、こんなに細かい設定があるんですか?
そうだよ。頭に2つ、右腕と左腕に3つずつ。右脚と左脚に6つずつのサーボモーターが搭載されているから、それぞれの角度を0.1度単位で調整できるんだ。いまのポーズを取るまでの時間も10ms単位で調整ができるから、不自然なところがあれば調整してみてほしい。詳しい編集方法は画面下部の<How to adjust>に記載してあるから参考にしながら編集してみようか。
このポーズの右手の位置が違うので、ここをこう編集してと。これでどうだっ!
だいぶ良いんじゃないかな。これがロボットの大きさの大小に関わらず、ロボット制御の基本的な方法になるから覚えておいてほしい。もちろん、もっと大きなロボットになれば複雑になっていくけど。
わかりました。1枚1枚の絵を書くように、丁寧にしなければなりませんね。
最後にもっと高度な開発について説明しておこう。この開発には先日も説明した「Python」というプログラム言語を使うよ。
出ましたね「Python」。Pythonの名称の由来がモンティ・パイソンから来ていると知ってから、アニメ好きとしては注目しておりました。
妙な思い入れの形だけど、、、注目していたのは素晴らしいね。今や欠かすことができない言語だから。最初はPythonの基本構文と標準ライブラリだけで挑戦してみよう。[nano /opt/ndc/roboappy.py]を実行してごらん。
(画面をみてフリーズする)私にはまだ難しいようですね、、、
もちろん、無理なのは知っているよ。
とりあえずこのアプリケーションの基本の構成だけでも解説しておこうと思ってね。このアプリケーションは大きく1〜5までのブロックに分かれているよ。
- ライブラリインポートエリア
- グローバル変数定義エリア
- 関数定義エリア
- メイン関数エリア
- メイン関数コール
となっていて、それぞれのブロックで必要となる処理を記述しているんだ。
開発しやすいように配慮されているんですね。
最初からできる人はいないから、モーションキャプチャの時と同じで、トライアンドエラーで学習していくのが上達への第一歩だよ。
わかりました。これから勉強してロボットマスターになります!
その意気込みがあれば大丈夫。これで一連のレクチャーは終わるけど、楽しさを見出すことができていたら嬉しいよ。
こちらこそ、ありがとうございました。すごく楽しかったです!いつの日か先生を驚かせるプログラムを作るので、そのときは見てもらいたいです(笑)。
その日を楽しみに待ってるよ!長時間にわたってお疲れ様でした。