Skip to content

add condition for wheter there is virtual-link or not #382

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 23, 2016

Conversation

terasawa
Copy link
Contributor

virtual-linkが存在してもparent-linkを参照しにいってエラーが出ないように、parent-linkが存在するかどうかの条件式にvirtual-linkに関する条件を加えました。

@snozawa
Copy link
Contributor

snozawa commented Jun 16, 2016

PRお疲れ様です

if文は、

   (when (and parent-link (derivedp (send self :parent) bodyset-link))

とかみたいにするとどうかな。
parent-linkの存在をチェックしたいけど、virtual-linkはたまたまこういう名前をつけてるというものなので、
もう少し一般的なルールとif文のチェックになるといいかと思います

そもそも今回のエラーの原因をおさらいしてみると、

  • euslispでは、基本はルートリンクにparent-linkがいないはず
  • 逆動力学計算も、ルートリンクのparent-linkはいないはずなので、伝播しないくてよい
  • IKなどでvirtual jointをつけたときは、ルートリンクにparent-linkができてしまう。依然として、このときも逆動力学ではルートリンクのparent-linkはたどらなくてよい

ですね。
なので、「ルートリンクである」というのを適切にif文でチェックする必要があります。
@terasawaくんのif文もその方法の1つだと思います。

上記の新しいif文チェックは、parent-linkでなくてparentをみています。
正しく作られてるロボットは、現状euslispでは

  • ルートリンク以外のリンクは、parentにリンクくらす(bodyset-link)がきて、parent-linkにも同じものがはいる
  • ルートリンクは、parent-linkがなく、parentはロボット自身(jaxon_red-robotとか)になる
  • IK時にvirtual joint、virtual linkをルートリンクにくっつけると、ルートリンクのparent-linkはvirtual link、ルートリンクのparentはロボット自身、ロボットのparentにvirtual linkがくる。つまり、parentがロボット自身、というのはかわらない

になります。
なので、parentがbodyset-linkでない、というのがルートリンクの特徴になるので、
これをif文ではじくといいのではと思いました。

上記のif文で動くか試してみてください。

@snozawa
Copy link
Contributor

snozawa commented Jun 16, 2016

さらに追加でコメント2点

  • コメント追加
    if文のところ2箇所に、root-linkを除外するためですよ、的なコメントをかいておいてください。
  • テストコードの追加
    テストコードを追加しましょう。irteus/test/test-irt-motion.lの後ろの方とかでいいかな。
    *sample-robot*というインスタンスが使えると思います。
    テストするといい内容は、with-append-root-jointで囲った:torque-vectorがエラらない、普通によんだ:torque-vectorと同じ値をかえしてくれる

@terasawa terasawa force-pushed the add-virtual-link-condition branch 3 times, most recently from 303ddcd to 3f51d2e Compare June 17, 2016 04:59
@snozawa
Copy link
Contributor

snozawa commented Jun 20, 2016

テストの:torque-vectorは:calc-torqueにしておいてみてください。
また、

     (assert (eq torque-without-root-joint torque-with-root-joint)) 

     (assert (eps-v= torque-without-root-joint torque-with-root-joint)) 

かな。

… test for calculate torque when using with-append-root-joint in irteus/test/test-irt-motion.l
@terasawa terasawa force-pushed the add-virtual-link-condition branch from 3f51d2e to 459b35c Compare June 20, 2016 07:16
@snozawa snozawa merged commit 831e31d into euslisp:master Jun 23, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants