シミュレートされたサッカーの試合でロボット プレーヤーを制御するソフトウェア エージェントをプログラミングしています。最終的にはロボカップ大会に出場したいと思っています。
このようなエージェントを作成するためのさまざまな課題の中で、ボディのモーションは、私が最初に直面したものの 1 つです。私が対象としているシミュレーションでは、22 ヒンジの Nao ロボット本体を使用して制御します。各脚に 6 つ、各腕に 4 つ、首に 2 つ:
(出典: sourceforge.net )
私は機械学習に興味があり、この男を制御するためのテクニックがいくつかあるに違いないと考えています。
いつでも次のことがわかっています。
- 22個のヒンジすべての角度
- ロボットの胸部にある加速度計の X、Y、Z 出力
- ロボットの胸部にあるジャイロスコープの X、Y、Z 出力
- ロボットの頭にあるカメラを介した特定のランドマーク (コーナー、ゴール) の位置
- 各足の底に適用される力のベクトルと、足の裏の力の位置を示すベクトル
達成したいタスクの種類は次のとおりです。
- できるだけ速く直線で走る
- 定義された速度での移動 (つまり、追加の入力に応じて、早歩きと遅歩きを処理する 1 つの関数)
- 後ろ向きに歩く
- その場でターンオン
- 単純なカーブを走る
- 横歩き
- 転ばずにできるだけ高くジャンプして着地する
- 足の前にあるボールを蹴る
- 予期せぬ力(ボールや他のプレーヤーが当たったとき)にさらされたときに、「無意識の」安定動作を行う。理想的には、上記のいずれかと連携して行う
これらのタスクのそれぞれについて、適切なフィットネス関数を思いつくことができると思いますが、期待される出力を備えたトレーニング入力のセットは思いつきません。つまり、どのような機械学習アプローチでも、教師なし学習を提供する必要があります。
さまざまな振幅と位相で各ヒンジの角度に配線された円形関数 (正弦波) のオープンソース プロジェクトでいくつかの例を見てきました。これらはまっすぐに歩いているように見えますが、すべて少しぎこちなく見えます。ただし、上記のすべてのタスクで機能するアプローチではありません。
一部のチームは逆運動学を使用しているようですが、私はそれについてあまり知りません.
では、ロボットの二足歩行にはどのようなアプローチがあるのでしょうか?
余談ですが、サッカー シミュレーション サーバーとの基本的なやり取りを提供するTinMan という .NET ライブラリを作成して公開しました。これには、ロボットの 22 個のヒンジのセンサーとアクチュエーター用の単純なプログラミング モデルがあります。
ロボカップの 3D シミュレーション サッカー リーグの詳細については、次の記事を参照してください。