calcCMJacobian関数について

初めて質問させていただきます.
calcCMJacobian関数の使い方について質問があります.

calcCMJacobian関数の第一引数にはBodyクラスのインスタンス, 第二引数にはベースリンク, 第三引数には重心ヤコビアンを格納する変数のアドレスを渡すと理解しておりますが, この第二引数にはどこのリンクを指定すれば良いのかが分かりません.

@RyuYamamoto様や@wukunn様の記事によると, 第二引数には支持脚の末端リンクを渡すらしいのですが四脚ロボットの脚すべてが支持脚となっているような場合はどの脚の末端リンクを渡せば良いのでしょうか?

当方の目標としては, 4脚全てが接地している場合に重心ヤコビアンを利用して機体の重心位置を制御したいと考えております.

@wukunn様の記事↓

@RyuYamamoto様の記事↓

ご教示頂けると幸いです.

はじめまして.
重心ヤコビアンについては私も詳しくないのですが,理解している範囲で回答させていただきます.

結論から申し上げると,choreonoid上の実装を見たところ,環境接触リンクが環境と面接触で,かつ1つのリンクであるときの重心ヤコビアンを導出する仕様のようです.

ですので,複数リンクが同時接触する場合については,別の実装が必要になるかと思われます……
(もしかしたら別に存在するかもしれません,いかがでしょうか>> @nakaoka 先生)

参考:
杉原,中村:非駆動自由度の陰表現を含んだ重心ヤコビアンによる脚型ロボットの全身協調反力操作

1 Like

Yuki_Onishi様

回答ありがとうございます.
choreonoidで4脚ロボットを重心ヤコビアンを用いて動かすような例が私の方では見つけられなかったので今回質問させていただきました.

やはり複数個のリンクが同時接触している場合はなにかしら他の方法を用いる必要がありそうなので調査を続けたいと思います.
本当にありがとうございました.

1 Like

Yuki_Onishi さんコメントありがとうございます。

私もよく分かっていませんが、各足先をベースリンクとする複数のヤコビアンを組み合わせて、それらの解をミックスするとかして、適当に近似したりするとできるかもしれませんね。

すみません、よく分かっていませんでしたが、杉原先生の論文があるのですね。素晴らしいです。

もしかしたら別に存在するかもしれません,いかがでしょうか

残念ながら、そのようなものはありません。
ご自分で実装する必要があるかもしれませんが、ひょっとすると杉原先生のRokiに含まれていたりするかもしれません。(すみません、未確認です。)