[choreonoid-users-ja 00095] Re: ロボットの末端リンクの取得について

中岡 慎一郎 s.nakaoka @ aist.go.jp
2013年 6月 14日 (金) 17:52:02 JST


小島さん

モデルファイルの.yamlのファイルに、そのような情報を書くことができます。

例えば、サンプルモデルのGR001について、share/model/GR001 以下に
"GR001.yaml" というファイルがあります。

もともとのモデルファイルのメインは GR001.wrl の方なのですが、このyamlの
ファイルを作っておくと、いろいろな情報を書いておいて、プログラム中で参照
することができます。

GR001.yaml では、

footLinks:
  - link: R_ANKLE_R
    soleCenter: [ -0.005, -0.01, -0.022 ]
  - link: L_ANKLE_R
    soleCenter: [ -0.005,  0.01, -0.022 ]

という記述があるかと思います。

ここでは、足のリンクが R_ANKLE_R と L_ANKLE_R という名前を持つリンクで、
それぞれの足裏中心(ZMPを置いておきたいところ)の座標をリンクのローカル座
標で記述しています。

これと同様の記述を他のモデルファイルでも書いておくことで、
例えばバランス関係で足の操作をする処理を統一的に書くことができます。

足りない情報があれば、好きなように書いて好きなように使ってもらって結構です。

各自好きに使ってもらえば、そのうちよく使われて便利なものは自然に統一され
てくる(生き残る)んじゃないかと思ってます。

プログラム中でここの内容を読むには、src/Util 以下の ValueTree.h のクラス
を使います。具体的な使い方については、まずはソースを見てみてください。


(06/14/13 16:04), k-kojima (imi) wrote:
> 東京大学の小島です。
> 
> ロボットのモデルの特定のリンクの取得について質問です。
> 
> Bodyクラスポインタに対して
> Link* link = body->link("RLEG_JOINT5");
> などとすれば、リンクを取得することができるのは分かるのですが、
> これだと、ロボットのモデルによって"RLEG_JOINT5"の部分が変わってしまうので、
> 汎用性の低いプログラムになってしまいます。
> 
> 例えば、「異なる種類のヒューマノイドロボットにおいて右足の末端リンクを取得する」といった処理を同一のプログラムで書くにはどうすれば良いでしょうか?
> (末端リンクかどうかだけならLinkクラスのchild変数を見ればいいのは分かるのですが、左or右及び手or足を指定したいという事です。)
> 
> 恐らくBalancerPluginの中では腰から足先リンクへのJointPathを取得していると思うのですが、
> その際に足先リンクはどのように指定しているのでしょうか?
> 
> よろしくお願いい致します。
> 
> --
> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
> 東京大学 大学院
> 情報理工学系研究科 知能機械情報学専攻
> 小島 邦生 (KOJIMA KUNIO)
> k-kojima @ jsk.imi.i.u-tokyo.ac.jp
> Tel 03-5841-7416
> Fax 03-5841-6285
> 携帯 090-4501-5285
> _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
> _______________________________________________
> choreonoid-users-ja mailing list
> choreonoid-users-ja @ choreonoid.org
> https://choreonoid.org/mailman/listinfo/choreonoid-users-ja
> 


-- 
中岡 慎一郎 <s.nakaoka @ aist.go.jp>
産業技術総合研究所 知能システム研究部門
ヒューマノイド研究グループ
Phone: 029-861-5161  Fax: 029-862-6519


choreonoid-users-ja メーリングリストの案内