こんにちは。二足歩行ロボット研修中のshota(@マウス、@ヒューマノイド)です。
この研修では、ROBOTIS社のロボットキットMAX-E1を動かし、競技会HACの走破を目指しています。
今回の記事はHACに向けてMAX-E1のソフトウェアシステム構成を考えた話です。
前回の記事はこちら
ロボットに必要な機能を考える。
前回はMAX-E1用のC++ライブラリを作成し、MAX-E1を動かすための準備を整えました。
ライブラリの構造は下図のとおりです。
このライブラリは「MAX-E1を最低限動かすために必要な機能」を提供します。
HACに出場するためには他にも機能が必要です(図のApplicationsの実装が必要)。
そこで、HACの競技ルールをもとに、
MAX-E1へ搭載するソフトウェアのシステム構成を考えました。
それがこちらです。
図の黄色の枠がMAX-E1に必要な機能です。
各機能を扱いやすくするため、制御・認識・プランニングの3つのブロックに分けました。
それぞれのブロックについて、簡単に説明します。
説明のため、HACの競技フィールドをここに添えます。
制御ブロック
制御ブロックの仕事はMAX-E1を動かすことです。
HACでは、ロボットがフィールドの上を歩き、ボールを触りに行きます。
これらの動きをMAX-E1で実現するために、モーション再生機能が必要です。
また、認識ブロックのために、モーションを再生してどれだけ動いたのか(例:dx, dy, dθ)の把握が必要です。
それにはMAX-E1内部のIMUセンサモジュールが役立つはずです。
モーション再生・センサ値の取得は、先ほど紹介したMAX-E1ライブラリを使うことで簡単に実装できます。
(※ライブラリを作るのも私なので、労力は変わらないんですけどね・・・)
ということで、制御ブロックは外部から「行動目標(どんなモーションを再生するか)」を受け取り、
「行動結果(どれだけ動いたか)」を出力します。
認識ブロック
認識ブロックの仕事はHAC競技フィールドの状況を認識することです。
HACではフィールドの形状やボール位置、ロボットの位置を、人間がロボットへ教えられません。
ロボット自身がフィールドやボールを認識しなくてはなりません。
フィールドやボールを認識するためには何らかのセンサが必要です。
ひとまずカメラを使用することにします。
マイクロマウス研修で使用したフォトリフレクタを使っても良いかもしれませんが、
ボールを探すだけでも苦労しそうです。
さて、フィールドとボールの以外に、ロボット自身の位置・姿勢も把握しなければなりません。
ロボットの位置を推定するためには、どれだけロボットが動いたかの情報が必要です。
これは、先程の制御ブロックが出力してくれます。
ということで、認識ブロックは外部から「カメラ画像」と「行動結果(どれだけ動いたか)」を受け取り、
「認識結果(ロボットがどこにいるか、ボールがどこにいるか)」を出力します。
プランニングブロック
プランニングブロックの仕事はMAX-E1の行動を計画することです。
HACのクリア条件は、フィールド上の全てのボールに触れてスタートエリアに戻ることです。
競技中にロボットが倒れたらスタートエリアからやり直しです。
無事にクリアするためには、フィールドのどこを歩いてボールまでたどり着くか、どこを歩いてスタートエリアに戻るのか、歩行経路を考えなくてはいけません。
歩行経路を考えるためにはフィールドの情報が必要です。
これは、先程の認識ブロックが出力してくれます。
ということで、プランニングブロックは外部から「認識結果(ロボットがどこにいるか、ボールがどこにいるか)」を受け取り、
「行動目標(どんなモーションを再生するか)」を出力します。
どうやって開発しよう?
ソフトウェアシステム構成が決まったのでいよいよ実装が始まります。
と、その前に。どんなカメラを使うのか、どんなコンピュータでMAX-E1を動かすのか決まっていませんね。
認識ブロックがカメラ画像取得と、画像処理で大変そうなので、試しに認識ブロックを実装し、実際に動かしながらカメラとコンピュータを選定したいです。
ところが!・・・これが非常に難しい話なのです。
見てくださいこのフィールド。この大きさ! 90 cm x 540 cm ですよ。こんなフィールド、自宅のどこに設置できますか?
(ここで本気でフィールドを設置しようと考えるロボコン脳の皆さん。家族に怒られるのでご注意ください)
会社に行けば競技フィールドを設置できますが、2021年6月現在、世の中の情勢もあり、頻繁に出社できません。
さて、、、、
困りました。フィールドが無いとカメラにどんな風景が映るのかわかりません。。。。
どうしましょう。。。。
どうにかして、自宅に居ながら競技フィールドを用意して、カメラで撮影して、画像処理を試せないでしょうか・・・・
うーむ、。。。。
。。。
こ、こんなところにHACの競技フィールドが!?!?
いったいこのフィールドは何者なんだ!?
次回の記事
ということで次回、「GazeboでHACのフィールドを作ってみた」、お楽しみに。