-
Notifications
You must be signed in to change notification settings - Fork 86
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
Fix collision loop #990
Fix collision loop #990
Conversation
1b370e0
to
2a07885
Compare
Refer to this link for build results (access rights to CI server needed): |
Refer to this link for build results (access rights to CI server needed): |
多分これと同様の問題が発生していて、今までcollision_loopが設定できませんでしたが、ありがとうございます。 |
11 のテストが落ちているのは期待通り? できれば,テストだけ入れた段階でpushしてtravisはしらせて全部Xになることを確認して,修正をpushして治ったか見たい所.
|
if (m_safe_posture && m_recover_time == 0) { // 1. current safe angle | ||
// 1. current safe angle or collision angle .. check based on qRef | ||
// 2. recovery .. check based on q'(m_recover_jointdata) | ||
if (m_recover_time == 0 || m_recover_time == default_recover_time ) { // 1. current safe angle or collision angle |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
m_safe_posuture の条件がが消えているけど大丈夫?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
以前の条件が冗長でして、
(!m_safe_posture && m_recover_time == 0)
という条件が成立しないので、ここはこれで大丈夫です。
たしかに,一回のPRでテスト中のバージョンチェックはできないですね.いっかい機能を入れてリリースしてバージョンをあげないと,ダメか.どうしましょうかね.
|
collision_loopを設定した時は、
となっています。 safe -> collisionの判定は問題なくて、recoverモードの時だけ、毎ループrobot->q (collision checkされる関節角度)を更新していて、 そうなると、そこから復帰するための補間がなされると、hoffarbib補間では最初の1ステップはごく小さいので、lastsafe_angleがsafeでないと、復帰のための1ステップ目がcollisionしているため、recoverの動作に移行できないということだった。 |
これは、期待とはちょっと違うのですが、これまでのCollisionDetectorのテストは確率的に落ちていたのではないかと思っています。 これについても、collisionしたあとのcollision判定をreferenceを見るように変更しています。 |
#993 |
collision_loopを設定すると、挙動がおかしくテストが通らない問題を修正しました。
主には、recover時のcollision_check姿勢の更新タイミングがsafe時と違っているのを修正しました。
collision_loopを使うと、lastsafe_jointdataと出力されている関節角度が違ってしまう
(collision_loopの回数前のデータがlastsafe_jointdata)のをcollision判定されたら戻すようにしました。