ロボット開発記録

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

動歩行の実装へ向けて [ヒューマノイド動歩行]

前回の振り返り

 前回までの記事では、ソフトウェアアーキテクチャの再考案に取り組んできました。今回からは、いよいよ動歩行の実装に取り組んでいきます。

前回の記事↓

odome.hatenablog.com

今回の概要

 今回は動歩行の実装に向けて、理論と現状の進捗に関して簡単に示します。

今回の前提

 今回からおこなっていく動歩行の実装は、2足歩行ロボットやヒューマノイドロボットなどの研究に従事されている梶田秀司先生が編著された、『ヒューマノイドロボット(改訂2版)』に沿って進めていきます。ですので、この連載で扱っている理論の話は、主にこちらの書籍が元となっています。
 こちらの書籍では、ヒューマノイドロボットの制御に関することが広くカバーされています。ヒューマノイドロボットに取り組むには、非常に素晴らしい書籍となっています。(皆さん、買いましょう。)

動歩行とは

 はじめに、動歩行とはどのような動作かについてです。

 動歩行とは、床面への重心投影点が支持多角形の外に出ることがある歩行動作のことを指します。逆に、支持多角形の外に出ない歩行動作は静歩行といい、(理論的に確認してはいませんが、)過去に実装しました。(記事はこちら:静歩行動作の実装)ここで、重心投影点は重心を床面に投影した点であり、支持多角形は床面に接触している足裏の外形をゴム紐で囲ったときにできる多角形です。

 動歩行動作の具体的な例としては、人間のような歩き方が動歩行だといえます。より詳細にいえば、人間が行う通常の歩行動作は、動歩行に含まれます。実際のロボットだと、よくメディアに露出しているASIMOAtlasといったヒューマノイドロボットの歩行動作は、ほとんどが動歩行だといえます。

どのように動歩行を実現するのか

 次は、この動歩行はどのように実装できるのかについてです。

 動歩行動作の理論としては、今まで幾つかの理論が示されてきました。単純に考えれば、これらの理論のうち1つをロボットに実装できれば動歩行は実現できるわけです。
 しかし現実世界で歩かせる場合は、そう簡単には行きません。外乱、つまり不安定にさせる要素の影響によって、簡単に倒れてしまいます。特にヒューマノイドロボットは重心が比較的高い位置にあり、なおかつ狭い2つの足裏で体の全重量を支えるので、非常にバランスが悪いです。そんなヒューマノイドロボットが、未舗装の道や山道を、ランダムな風などの押される力に耐えながら歩行することは、超絶難しいわけです。

 そんなヒューマノイドロボットを制御するためのソフトウェアの枠組みが、前提で紹介した『ヒューマノイドロボット(改訂2版)』には示されています。今回実装する形も、ここで示されている枠組みに沿っています。以下に、枠組みを構成するパーツを示します。

  • 歩行パターンジェネレータ (今回作っていくところ!)
    • 文字通り、歩行パターンを生成するソフトウェア。ここで歩行パターンは、歩行に用いる脚の各関節角度・角速度のこと。
    • このソフトウェアがロボットの歩行動作を形作り、外乱が一切ない理想的な環境であれば、これだけでロボットが動歩行できる。
  • 歩行安定化制御系
    • これもまた文字通り、歩行を安定にするために制御をおこなうソフトウェア。ロボットからのフィードバックと歩行パターンジェネレータの出力などから計算を行ったりする。
    • このソフトウェアで、どのように外乱に対策をおこなうかが決まる。ココもまた重要なソフトウェア。

以上の2つが、ロボット本体以外で必要となるソフトウェアである。

 そして今回は、特に歩行パターンジェネレータに組み込むプログラムを開発することで、動歩行の実装を目指します。そして、外乱のないシミュレータを開発環境とすることで、歩行安定化制御系がなくとも歩行できる状況を考えます。

開発する歩行パターンジェネレータ

 今回、開発する歩行パターンジェネレータで用いる理論は、ヒューマノイドロボットを粗視化して線形倒立振子として歩行パターンを生成する方法を用います。ここで考える線形倒立振子は、倒立振子の先端にロボットの全質量が集中している質点を重心として、重心と床面との接地点を結ぶ直動リンクの運動を蹴り力として考えます。ココの話は、また別の機会に改めてまとめたいと思います。

こちらの手法は『ヒューマノイドロボット(改訂2版)』でも詳しく示されているため、そちらを参考に進めていきます。

現在の開発進捗状況

 最後に、現状の開発進捗を箇条書きで示します。

  1. プログラムを、webots_robot_handler内に関数として開発することに決定。通信を排除することで、考えることを少なくする意図がある。歩行パターンジェネレータの開発がうまくいったら、他Nodeに分けてソフトウェアアーキテクチャに組み込んでいく。
  2. 歩行パラメータを、その場で足踏みするように決定。つまり、X軸方向の位置と速度を0とした。これは、歩行パラメータの決定を後回しにした。
  3. 現状、実際に理論をプログラムに起こして理論通りになるように修正中。MATLABを用いて結果をグラフにプロットすることで、確認を行っている。2023/6/25現在、まだうまくいっていない。


動歩行の実装の進捗状況は、GitHubに挙げている開発リポジトリの以下のIssueで発信しています。理論通りにいっていないグラフとかがあります。

github.com

また、以下のGitHubリポジトリに、開発中のソフトウェアを公開しています。

github.com

参考文献