前回の記事から大変長らく時間が空いてしまいました.アルバイトのTsunoです.HAC入門編,ここまでは開発環境の構築やHAC-KXRのハードウェア組み立てについてお伝えしてきました.ここからはいよいよソフトウェアパートに移り,KXR_HAC_Softwareを題材に,解説を行っていきます.
KXR_HAC_Softwareの構造
現在公開しているKXR_HAC_Softwareは,HACプレ大会で無事完走した際のプログラムをベースに,公開用にリファクタリングを行ったものです.システムを簡潔にするために,ROSは用いずにPythonモジュールの連携で,以下の様にシステムを構成しています.
プランニングモジュール
最上位にあるのがプランニングモジュールです.Hierarchical Task Network(階層化型タスクネットワーク)を用いて,現在の状態とタスクの実行条件を比較し,ロボットがどのようなタスクを組み合わせて実行するべきか計画します.
タスク実行モジュール
プランニングモジュールで決定されたタスク目標は,タスク実行モジュールにて実際の実行が行われます.このモジュールでは,前進,旋回といった単一の動作(モーション)を組み合わせた「タスク」を保持しています.このひとまとまりのタスクが,タスク目標に基づき実行されます.また,プランニングに用いるWorld Stateについて,画像認識結果を基に更新する機能も担っています.
制御モジュール
制御モジュールは,タスク再生モジュールで実行されるタスクに含まれる一つ一つのモーションについて,ロボットのマイコンボードに命令を送る機能を持っています.
画像認識モジュール
画像認識モジュールは,周囲の状況をカメラによって認識し,フィールド端からの距離やボールの位置などの認識結果を,タスク実行モジュールに返します.
以上,4つのモジュールが連携することで,KXR_HAC_Softwareは動作しています.
次の記事では,プランニングモジュールと,そのアルゴリズムであるHierarchical Task Network(階層化型タスクネットワーク)について詳しい解説を行っていきます.