-
Notifications
You must be signed in to change notification settings - Fork 41
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
[robot-interface] Add option to restrict rotation angle of unlimited rotational joint #388
base: master
Are you sure you want to change the base?
[robot-interface] Add option to restrict rotation angle of unlimited rotational joint #388
Conversation
8a00cac
to
7b6009b
Compare
はいテストコードを書いてみてください。 |
2つの補間方法は両立できないので、 |
コードが腕に絡まることを防ぐためには、ハードウェア的に無限に回転させることができないということなので、 |
URDFを書き換えると元に戻すのが大変なので、あまり推奨しません |
HRP2では、小手先の変更が積み重なった結果、実際に新入生(私)が理解するのが大変なシステムになっていまして、最近このコメントの重みを実感しているところなので、できればおおもとから変えた方がよいのではないかと思います。 |
URDF->robot_controller->eusの三段階あると思いますが、URDFから変えるのはその動作をこれ以降しないことをほぼ意味します |
https://sourceforge.net/p/jsk-ros-pkg/tickets/91/
https://github.com/jsk-ros-pkg/jsk_pr2eus/blob/a228cc7d3bb5b26b92ed25c7d55f32a64d9d7825/pr2eus/test/pr2-ri-test-arm.l#L90
#319 (comment)
でいろいろ書いてあるんだけど読んでみてもよくわからない感じで,状況は整理しないといけないんだけど,
pr2の場合は,
(dolist (angle (list 0 150 -150)) (send *robot* :larm :wrist-r
:joint-angle angle)) としたときは
一回0を経由してもらいたくて,無限回転を積極的に使いたい場合は,
(dolist (angle (list 150 170 -170 -150)) (send *robot* :larm :wrist-r
:joint-angle angle)) としたらできる,
とかなんかなっていて両立できていたかとおもいます.
fetchの場合はmoveit 経由している話もあるのと,コントローラの補間機ros_controlベースで,
pr2の方はpr2_controller だったかと思うので,
-実機のコントローラは無限回転の場合,最小パスを通るように回転方向を決めるようになっている
みたいにちょっと不思議な仕様になっていて,おそらくfetchはパスを考えずに補間しているので,
コントローラへの送り方も少し変えないといけないかもしれない,というところですが,
いずれにせよ,テストコードを作って,そもそもこういう挙動になってほしいよね,というのを
共有することが良いとおもいます.
URDFで無限回転を制限するとeusのモデルも反映されて,無限回転が使えなくなるのでもったいないですね.
|
fetchの知識に乏しいのでもしかしたら自分はよく理解できていないのかもしれないのですが、
現在のpr2-interfaceの実装を見た限りでは、
のいずれにもなっておらず、 ところが、kinematics simulatorでは実機の場合と異なる挙動になっているというバグがあり#451 で問題になったので、#452 で直しました。 |
ハードウェアを作らない人の目線で話を進めている気がします.
https://github.com/fetchrobotics/fetch_ros/blob/indigo-devel/fetch_moveit_config/launch/planning_context.launch#L10 |
そもそもこのPRはオプションを増やすというものでデフォルト挙動をかえるものではなく,追加機能について必要か不必要かを議論すること自体が不毛だとおもいました. |
robot-interfaceのオプションを増やす話について 現状では、 controller側には2種類のモードがあります。 pr2-controllerとkinematics simulatorはB robot-interface側には4種類のモードがあります。 robot-interfaceとkinematics-simulator時のpr2-interfaceはア イ、ウ、エのモードをrobot-interfaceに追加して、オプションで選択できるようにするのは便利なので良いと思います。 |
おおもとから変えた方が良いのではないかという話について このissueなどで行われている議論と似たようなことがこのPRで行われようとしているように感じ、数年後にどうなったのかを知っている者として老婆心ながら口を出してしまいました。 HRP2では、handは頻繁に交換するだろうからとおおもとからは変えない実装にしてあり、そのぶん
のような技巧を各所に凝らした実装になっています。 すぐに新しいハンドを開発していくことが確定していて、他の人は今のハンドを使わないのであれば関係ないかもしれないですが、そうでないのであればこのような先例があったということを参考までに共有させていただければと思います。 |
ややこしくなるというのは,それはそうで,全てを理解せずとも隠蔽されていれば,ライトユーザは問題ないので,我々などややこしいシステムに詳しくなってしまった人は,うまく隠蔽する手法について考えるべきです.
ハードウェアの研究をしている人がいる以上,変えられるように実装していくのが妥当で,昔にきまった方針も理解できます. まぁ結局はそのロボットを使う人たちが合意してきめればよいことで,HRP2も平岡くんが昔の人達が決めた方針に異議があるのであれば,そちらで議論をたててみてはどうでしょうか |
#319 で話されていた無限回転関節問題ですが、
:angle-vector-sequence
の引数で無限回転を制限するかどうかを選択できるようにしました。テストコードとして
fetch
実機に以下のプログラムを送ったところ、コードが腕に絡まないことが確認できました。動画
この解決方法で問題なさそうであればtravis用のテストコードを書こうと思うのですが、どうでしょうか? @k-okada