hsr-project / tmc_wrs_docker

BSD 3-Clause Clear License
63 stars 22 forks source link

HSRの移動について #18

Open TakahashiNanami opened 3 years ago

TakahashiNanami commented 3 years ago

/hsrb/command_velocityのトピックを使って真っ直ぐに進もうとすると少し回転して進んでしまうのですが、これはこのシミュレータの仕様でしょうか?

yosuke commented 3 years ago

どの程度曲がるかにもよるのですが、シミュレーションを高速化するためにある程度物理演算を端折ってタイヤがスリップしやすくなっている環境を使っており、できればこの環境で本番も行いたい(シミュレーション速度を優先したい)と思っています。 ひどく曲がるようであれば対策を考えるので教えてください。

akaitatitatisann commented 3 years ago

物体把持を行う際、物体を掴める位置を算出し微調整を行うのですが、その際スリップしてしまい、物体把持が失敗してしまいます。可能であれば、スリップしにくくしていただけないでしょうか?

yosuke commented 3 years ago

どの程度改善すればよいかわからないので、失敗する様子の動画を見させてもらえるでしょうか? 把持の際のズレの問題に関しては、 #11 も参考にしてください。

akaitatitatisann commented 3 years ago

こちらが把持失敗時の動画になります。プログラムの詳細としては、立ち位置を算出してから把持に移行するのですが、その際の調整の時に直進せずに少しずつ曲がってしまいます。ご確認よろしくお願い致します。 https://drive.google.com/file/d/108bNOUcaJc29TIuasoj1l3vDzjwUgDX-/view?usp=sharing

yosuke commented 3 years ago

ハンドを前に出してからの動きが本来まっすぐのはずの動きだと思いますが、かなり曲がっていますね、、、。 こちらではこのような動きはなかったはずなのでちょっとおかしいです。 再現するか試してみます。

yosuke commented 3 years ago

問題が再現しました。HSRの台車はアクティブキャスタ機構を使っているのですが、その機構がステアリング軸で回転するときに曲がってしまうようです。 動輪のスリップの問題だと思うので、少し調整してみます。

yosuke commented 3 years ago

物理演算の高速化機能(fast_physics)をオフにしても曲がる症状あり。 gazeboの最近のアップデートだろうか?

yosuke commented 3 years ago

Gazebo 9.16.0のリリース日が2020-11-24なので少し怪しい。 https://github.com/osrf/gazebo/blob/gazebo9/Changelog.md

yosuke commented 3 years ago

一つ前のパッケージ(Gazebo 9.9.0)に戻したところひどく曲がる症状は多少改善された。 最近気になっていたシミュレーション速度低下の症状もなくなったのでまずはこれで様子見するか?

yosuke commented 3 years ago

@TakahashiNanami @akaitatitatisann 最近アップデートされたGazeboの影響もあったようなのでダウングレードしました。docker-compose pullしてイメージを更新して試してみてください。 とはいえ、まだ多少は曲がります。HSRの動輪の幅を薄くすればさらに改善できることは確認したのですが、それだと実機と変わってしまうので今回は実施していません(実機でも同じ使い方をすると多少曲がると思います)。 基本的には自己位置推定を使って絶対座標に移動できるrosnavの移動を使うのがお勧めです。また、cmd_velを使う場合もスピードを抑えれば曲がりは多少改善します。

yosuke commented 3 years ago

シミュレータの速度低下については、以下のissueで解決する。 https://github.com/hsr-project/tmc_gazebo_task_evaluators/issues/1

akaitatitatisann commented 3 years ago

ありがとうございます。試してみます!

yosuke commented 3 years ago

ご推察の通り0.1です。ただこれをこれ以上小さくすると収束しなかったような、、、。 https://github.com/hsr-project/hsrb_rosnav/blob/master/hsrb_rosnav_config/config/move_base.yaml#L69 通常の使い方だとここからMoveItの座標指定で誤差が吸収されるのですが、そうではない使い方なのですよね、、、。

TakahashiNanami commented 3 years ago

ありがとうございます。説明していただいた使い方とは異なる使い方をしておりました。これを機に他の方法を試してみようと思います。様々対応していただき、ありがとうございました。

yosuke commented 3 years ago

念のためxy_goal_toleranceを0.01に設定して動かしてみたのですが、やはり収束しないようで厳しそうです。 もし今回実装している戦略が実機で使っているのと同じもの(シミュレータだけで動かない)ようであれば、今後改善しなければならない課題になりますので教えてください。他のシミュレータ(SigVerseなど)で動いていたものの場合、それぞれのシミュレータが提供するタイヤのスリップなどが無い理想世界でのみ有効な戦略の可能性があるので、工夫を検討してください。