[choreonoid-users-ja 00155] Re: Choreonoid 1.4におけるRIC30モデルの不具合?

中岡 慎一郎 s.nakaoka @ aist.go.jp
2015年 11月 26日 (木) 00:33:48 JST


産総研の中岡です。

添付のファイルで確認させてもらったのですが、この症状の原因は逆運動学にあ
るようにみえます。膝が伸びた姿勢になっているので、この問題が出てきます。

まず、モデルの一部の部位(腰とか足先とか)については、その補間に関して、
逆運動学で行うモードと順運動学で行うモードがあります。これはポーズロール
の左のツリー上でIKというチェックがあって、これがチェックされているかどう
かで切り替わります。チェックが入っていると、そのリンクについてはリンクの
位置姿勢がデカルト座標上でまず補間され、それを実現するような関節角が逆運
動学で計算されます。

通常は腰と足先についてはチェックを入れて逆運動学にしておきます。足につい
てはそうしないと床にちゃんと接地しない軌道になってしまいますし、腰につい
ても揺れるような軌道になってしまいます。その場合、バランス補正もちゃんと
かけられなくなります。

ただし、逆運動学モードでは、腰と足先の間で逆運動学を解く必要があります。
この際に膝が伸びた姿勢だと、特異点の問題で解が出ないことがあります。その
場合仕方ないので前フレームの関節角を使ったりしますが、これは何の解決にも
なりません。その後解が出る姿勢まで進んだ時に、姿勢が突然変わるような症状
になってしまいます。

この問題があるので、Choreonoidで二足ロボの振り付けを行うときは、膝を曲げ
気味にしておく必要があります。バランス補正をかける場合は、その分の余裕も
必要です。膝の伸びに関して余裕がないと、振り付けが破綻します。ただし、ど
れくらい余裕を持たせればよいかは事前には分からないのが、困ったところで
す。最初は十分余裕をもたせておいて、膝を少しでも伸ばしたいところでは、
徐々に伸ばしていく、といったことをします。

GR001とRIC30で症状が変わったとのことですが、機構の差異による逆運動学の差
異があるので、破綻するまでの程度に差がでるのだと思います。(あとは
GRobotPluginをビルドしているとGRobotCustomizerもインストールされて、これ
があるとGR001とRIC30で脚の逆運動学の解析解が使われるようになります。これ
を使うかどうかでも挙動が変わるかもしれません。)

接地やバランスが関係ない場合は、IKのチェックを外して順運動学のモードで補
間をすると、この問題はなくなります。マニピュレータとかはそれで問題ないの
ですが、二足ロボの脚については、前述の問題があるので、少なくとも接地中と
接地の前後では使えません。主に遊脚となる期間で、順運動学モードを使う意味
がでてきます。

結局、歩行やバランス補正を入れる場合は、二足歩行ロボットでよく問題視され
る、膝を曲げた姿勢でないとできないということになります。ここは改善したい
ところなのですが、汎用的な振り付けインタフェースという枠組みの中で実現す
るのは、なかなか難しかったりします。

On 2015年11月22日 17:33, MASUTANI Yasuhiro wrote:
> Choreonoid開発チームの皆様,
> CC: アールティ中川様,
> 
> 再び大阪電通大の升谷です.
> 
> 同じことをChoreonoid 1.5 on Ubuntu 14.04で試してみました.
> 
> R_KNEE_Pだけを変化させたポーズを与えたところ,ポーズとポーズの間で他の
> 関節が動くという現象は同様でしたが,ポーズを与えた時刻には,設定した通
> りの角度になります.
> 
> ・関節の連動は仕様でしょうか?
>   何の狙いがありますか?
> 
> ・この部分でバージョン1.4と1.5の違いは何でしょうか?
>   1.4で1.5と同じ様な動作をさせることができないでしょうか?
> 
> ・RIC30とGR001の違いは何でしょうか?
>   モデルファイルの内容はよく似ているようなのですが.
> 
> 学生にWindowsで使わせたいので,1.4で動作してくれると大変助かります.
> 
> At Sun, 22 Nov 2015 14:37:20 +0900,
> MASUTANI Yasuhiro <masutani @ isc.osakac.ac.jp> wrote:
>>
>> Choreonoid 1.4 Windows版で添付のRIC30のモデルを使っていてよくわからな
>> い現象に遭遇しましたので,助けてください.
>>
>> 不具合が再現するできるだけ簡単な事例を以下に記します.
>>
>> ------------------------------------------------------------------------
>> Choreonoid 1.4を起動
>>
>> ファイル→新規→ワールド
>>
>> ワールドを選択し,ファイル→読み込み→OpenHRPモデルファイル
>>   C:\Program Files (x86)\Choreonoid 1.4\share\model\RIC30\RIC30.yaml
>>
>> RIC30を選択し,ファイル→新規→ポーズ列
>>
>> PoseSeqを選択
>>
>> 関節スライダ
>>   全関節を表示
>>   ラジアンを選択
>>
>> ポーズロール
>>   0秒において,全関節0を挿入
>>
>> 関節スライダ
>>   R_KNEE_Pだけを-0.4[rad],他は全て0
>>
>> ポーズロール
>>   1秒において「挿入」
>>
>> 関節スライダに表示される関節角度は
>>   R_HIP_P   -0.144
>>   R_KNEE_P  -0.112
>>   R_ANKLE_P  0.144
>> になってしまう.
>>
>> シーンに表示されるロボットを見ても,股関節と足関節のピッチは0ではない.
>>
>> ポーズロール
>>   時刻同期にチェックを入れて,0~1秒で時刻を動かしてみると,
>>   0.645秒において
>>   R_HIP_P    0.000
>>   R_KNEE_P  -0.282
>>   R_ANKLE_P  0.000
>>   だったものが,0.646秒において
>>   R_HIP_P   -0.127
>>   R_KNEE_P  -0.033
>>   R_ANKLE_P  0.127
>>   に急変する.
>>
>> 以上のポーズ列を保存したpseqファイルの中では,
>>     time: 1
>>     (中略)
>>       q: [ 
>>         0, 0, 0, -0.4, 0, 0, 0, 0, 0, 
>>         0, 0, 0, 0, 0, 0, 0, 0, 0 ]
>> となっている.
>>
>> Choreonoid 1.4を起動し直し,ワールドとRIC30を設定し,上記で保存した
>> pseqファイルを読み込むと,1秒における関節角度は,
>>   R_HIP_P   -0.144
>>   R_KNEE_P  -0.112
>>   R_ANKLE_P  0.144
>> になっている.
>>
>> この問題は,上記の「-0.4」を「-0.3」にすると起こらない.
>>
>> 上記の「-0.4」を「-2.0」のような大きな値にすると,R_HIP_PとR_ANKLE_Pだ
>> けでなく,他の3関節R_HIP_Y, R_HIP_R, R_ANKLE_Rも連動してしまう.
>>
>> 同様のことを似たモデルであるGR001で試すと,関節の連動は起きているが,
>> ポーズを与えた時刻で異なるポーズになってしまう問題は起きない.
>>
>> ------------------------------------------------------------------------
>>
>> 以上です.cnoidファイルとpseqファイルをこのメイルに添付します.
>>
>> この問題は,皆様の環境でも再現するでしょうか?
>>
>> 関節が連動するのは仕様でしょうか?意味のある動きのように見えません.
>> また,RIC30では,ポーズを与えた時刻にポーズが再現しないのは困ります.
>>
>> 解決方法をご教示いただけると幸いです.
>>
>> よろしくお願いいたします.
> 


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



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