ロボット開発記録

ロボット開発の進捗や記録をするブログ

静歩行動作の実装 [ヒューマノイド動歩行]

前回の振り返り

 前回の記事では、考案したソフトウェア構成に沿ってコードを整理しました。今回は、逆運動学を用いて静歩行動作を実装しました。

odome.hatenablog.com

今週の概要

 ソフトウェアの整備が完了したので、本題の動歩行動作をWalkingPatternGeneratorに実装し始めても良いのですが、その前段階、寄り道として静歩行動作を実装しました。静歩行動作とは、重心を床に投影した重心投影点が支持多角形の内側に常に存在する歩行動作のことです。詳しくは専門的な文献を参照していただくのが良いと思います。

静歩行動作の実装結果

 今回実装した静歩行動作の動画へのリンクを、以下に示します。GitHubのissueの方に動画を上げています。(はてなに動画は貼れないようなので...)

github.com

また、静歩行動作を実装したリポジトリも以下に示します。branchはmainを使用してください。それ以外だと歩いてくれません。

github.com

静歩行動作の内部

 ここでは、静歩行動作を実現した、ソフトウェアの実行の流れを示します。以下に、流れを表した図を示します。

基本的に、上に示したものが全てです。
改めて書くと、

  1. ロボットのローカル座標系で、脚の置く位置座標を歩行パターンとする。その歩行パターンと、脚の各関節の回転速度、制御周期を適当に決める。
  2. 歩行パターンから逆運動学を解くことで、脚の各関節の回転角度を得る。
  3. 得られた脚の各関節の回転角度をロボットに適用して、動かす。

この3段階を1ステップとして、歩行パターンを1ステップごとに順に読んでいく、という流れで実行しています。今回の場合はゴール地点を決めていないので、歩行パターンをループさせて、永遠に歩けるように組んでいます。
 実世界の場合は外乱が必ず存在しますが、今回のシミュレーション環境は外乱やオフセットが存在しない理想的な環境となっているので、静歩行動作で転倒することはないはずです。(ただ、プログラムによっては転倒します。現在もプログラムが原因で途中で転倒してしまいます。)

ソフトウェア内部での処理の流れは、以下のようになっています。


WalkingPatternGenerator
 ↓
 ↓ Service IK request
 ↓
IK
 ↓
 ↓ Service IK response
 ↓
WalkingPatternGenerator
 ↓
 ↓ Publish walking_pattern
 ↓
 ↓ Subscribe walking_pattern
 ↓
WalkingStabilizationController

WebotsRobotHandler
 ↓
 ↓ Service WalkingStabilization Controller repuest
 ↓
WalkingStabilizationController
 ↓
 ↓ Service IK request
 ↓
IK
 ↓
 ↓ Service IK response
 ↓
WalkingStabilizationController
 ↓
 ↓ Service WalkingStabilizationController response
 ↓
WebotsRobotHandler
 ↓
ROBOTIS OP2


上記2つの流れを(恐らく)並行して実行しており、WalkingStabilizationControllerには複数がアクセスしている状態になっています。(ここがバグの温床にならないことを祈るばかりだが、既に転倒の原因はここにありそう...)

まとめ

 今回は、静歩行動作を実装しました。理論的な部分は逆運動学だけで、他の値は実験的に与えた感じなので、結構簡単に実装することができました。
 次からは本題の、動歩行動作の実装に向けた活動をしていきます。

github.com