ヒト型ロボット 74 歩行パターン生成
目標脚位置、目標ZMP、支持多角形の算出。

・ロボットの状態
ロボットの状態を有限状態機械(FSM)として実装てみました。
ロボットが停止状態から歩行を開始する際には、目標ZMPを片方の脚に移動させてからもう片方の脚を上げて歩行開始する、といったことが必要となり、プログラムとして実装するのは面倒なのですが、有限状態機械としてロボットの状態を表現することで実装が容易になります。
状態のパターンは、今のところ
停止状態
片脚支持状態(左脚)
片脚支持状態(右脚)
両脚支持状態
の4つのパターンを実装しています。
例として、簡単な歩行は
停止 -> 両脚支持 -> 左脚支持 -> 両脚支持 -> 右脚支持 -> 両脚支持 -> 停止
のように状態が推移していきます。
この有限状態機械から、目標脚位置、目標ZMPを計算します。
有限状態機械の実装は
実例で学ぶゲームAIプログラミング、Mat Buckland 著、松田 晃一 訳、オライリー・ジャパン
を参考にさせていただきました。
・支持多角形の算出
足部の接地点の集合から凸包を求めます。
凸包の算出には、こちらのページを参考にさせていただきました。
凸包 (Andrew's Monotone Chain)
今回は、それぞれの時刻の目標脚位置、目標ZMP、支持多角形の情報をもとに、モデル予測制御により歩行パターンの生成を行います。

・ロボットの状態
ロボットの状態を有限状態機械(FSM)として実装てみました。
ロボットが停止状態から歩行を開始する際には、目標ZMPを片方の脚に移動させてからもう片方の脚を上げて歩行開始する、といったことが必要となり、プログラムとして実装するのは面倒なのですが、有限状態機械としてロボットの状態を表現することで実装が容易になります。
状態のパターンは、今のところ
停止状態
片脚支持状態(左脚)
片脚支持状態(右脚)
両脚支持状態
の4つのパターンを実装しています。
例として、簡単な歩行は
停止 -> 両脚支持 -> 左脚支持 -> 両脚支持 -> 右脚支持 -> 両脚支持 -> 停止
のように状態が推移していきます。
この有限状態機械から、目標脚位置、目標ZMPを計算します。
有限状態機械の実装は
実例で学ぶゲームAIプログラミング、Mat Buckland 著、松田 晃一 訳、オライリー・ジャパン
を参考にさせていただきました。
・支持多角形の算出
足部の接地点の集合から凸包を求めます。
凸包の算出には、こちらのページを参考にさせていただきました。
凸包 (Andrew's Monotone Chain)
今回は、それぞれの時刻の目標脚位置、目標ZMP、支持多角形の情報をもとに、モデル予測制御により歩行パターンの生成を行います。
OpenHRP version 3.1.0 Release
9月21日にOpenHRP version 3.1.0-Releaseがリリースされたようです。
Ver.3.1.0β4からの変更点を確認した後、アップデートしたいと思います。
動作パターン設計ツールの公開は、まだなのかな?
ずっと楽しみに待っているのですが・・・
Ver.3.1.0β4からの変更点を確認した後、アップデートしたいと思います。
動作パターン設計ツールの公開は、まだなのかな?
ずっと楽しみに待っているのですが・・・
ヒト型ロボット 73 Qwt
Qtでグラフの描写ができるQwtライブラリを使ってグラフ描写プログラムを開発。
Qwt - Qt Widgets for Technical Applications

D-Bus経由でデータを更新。
いまだにQtDBusで配列をやり取りする方法がわからない。
一気にグラフを書き換えられないので、毎回少しずつデータを送って更新していく方式にしました。
以前開発していたOpenGLを使ったグラフ描写プログラムはお蔵入り。
今後は、このプログラムとgnuplotを併用。
Qwt - Qt Widgets for Technical Applications

D-Bus経由でデータを更新。
いまだにQtDBusで配列をやり取りする方法がわからない。
一気にグラフを書き換えられないので、毎回少しずつデータを送って更新していく方式にしました。
以前開発していたOpenGLを使ったグラフ描写プログラムはお蔵入り。
今後は、このプログラムとgnuplotを併用。
QtとCORBA
QtとCORBAを組み合わせてみようとしたのですが、どうもうまくいかない。
検索して調べてみたら、QtとCORBAの組み合わせは、よろしくないみたいです。
以前のバージョンのQtではCORBAを扱うモジュールがあったみたいですが、現在では商用版のQtでのみのサポートとなっており、使用は非推奨。
代わりに現在のQtではD-Busを扱うQDBusモジュールが用意されています。
詳しいことはまだ理解していないのですが、D-BusもCORBAと同じように、アプリケーション間のやりとりを行う技術のようです。
検索して調べてみたら、QtとCORBAの組み合わせは、よろしくないみたいです。
以前のバージョンのQtではCORBAを扱うモジュールがあったみたいですが、現在では商用版のQtでのみのサポートとなっており、使用は非推奨。
代わりに現在のQtではD-Busを扱うQDBusモジュールが用意されています。
詳しいことはまだ理解していないのですが、D-BusもCORBAと同じように、アプリケーション間のやりとりを行う技術のようです。
ヒト型ロボット 71 CORBA勉強中
分散オブジェクト技術のCORBAを勉強中です。
CORBAを利用すれば簡単にプログラム間の連携ができる・・・らしいです。
現在、シミュレーション表示用のプログラムはソケット通信を利用していますが、これをCORBAによる通信にしてみようかと思っています。
とりあえず手始めに簡単なプログラムで実験をして、データの相互のやりとりができるようになりました。
CORBAは利用する際のお膳立てが少々面倒ですが、実際の利用はすごく簡単にできて便利です。
CORBAを利用すれば簡単にプログラム間の連携ができる・・・らしいです。
現在、シミュレーション表示用のプログラムはソケット通信を利用していますが、これをCORBAによる通信にしてみようかと思っています。
とりあえず手始めに簡単なプログラムで実験をして、データの相互のやりとりができるようになりました。
CORBAは利用する際のお膳立てが少々面倒ですが、実際の利用はすごく簡単にできて便利です。