open-rdc / aiformula

2 stars 0 forks source link

従属輪問題のソフトウェア側の対応 #10

Closed Ryusei-Baba closed 4 months ago

kyo0221 commented 4 months ago

従属輪が元に戻りにくい現象をシミュレータ上で再現するために, gazeboのプラグインを使用して外乱を加えることにする.

kyo0221 commented 4 months ago

~/ros2_ws/src/EC7D_AIformula_Control/simulator/models/ai_car1/model.sdfにgazebo_ros_forceをプラグインすることで力を加えることができた.

現在は/ai_car1/caster_forceというトピック名で力を送る仕組みになっている.

例) y方向に150[N]の力を加えるトピックをパブリッシュ

ros2 topic pub /ai_car1/caster_force geometry_msgs/msg/Wrench "{force: {x: 0.0, y: 150.0, z: 0.0}, torque: {x: 0.0, y: 0.0, z: 0.0}}"
kyo0221 commented 4 months ago

トピックを送ってシミュレータ環境でロボットを動かしたときの動画です. https://youtu.be/S7bacPv0vc8

yasuohayashibara commented 4 months ago

従属輪の影響を考慮したシステムの挙動を再現するためには,おそらくURDFファイルを変更したほうが良いと思います. 実ロボットの挙動に合わせて力を加えても再現できるかもしれませんが,モデル化するのは難しいと思いますので,URDFの変更の方が簡単だと思います. (といってもURDFで再現するのも難しいとは思いますが...)

yasuohayashibara commented 4 months ago

私も調べて初めて知りましたが,従動輪のキャスタのことをswivel casterというのですね. URDFで検索しても,これを再現しているところがあまりなさそうですので,これをモデル化するだけでも価値があるかもしれません.

kyo0221 commented 4 months ago

AIFormula_private/EC7D_AIformula_Control/vehicle/xacro/parts/caster_back_macro.xacroで

    <inertia ixx="0.01517" ixy="0.0" ixz="0.0" iyy="0.01517" iyz="0.0" izz="0.025"/> 

のizz="0.025"を書き換えることで従動輪が動きにくくなるように慣性を加えようとしたが, シミュレータ上でのロボットの動きに変化が見られなかった.

xacro ai_car1.xacro > ai_car1.urdf

を実行してURDFを作成しなおしたが, シミュレータ上でのロボットの動きに変化は見られなかった.

yasuohayashibara commented 4 months ago

変更するのは慣性ではなくて摩擦です. どのように重たいものでも氷上のような摩擦が少ない場所では動かすことができます. (加速度は変化しますが...)

摩擦を大きくするとそれを超える力が無いと動かなくなります. gazeboであまり議論している人がいないので,難しい問題かもしれません.

参考 https://qiita.com/Yuya-Shimizu/items/1fd238211ed35d187e10#step3-gazebo%E4%B8%8A%E3%81%A7%E3%81%AE%E8%89%B2%E6%83%85%E5%A0%B1%E3%81%A8%E6%91%A9%E6%93%A6%E3%82%92%E8%BF%BD%E5%8A%A0

kyo0221 commented 4 months ago

https://github.com/open-rdc/AIFormula_private/issues/35 こちらのissuesにて従属輪問題は解決したのでcloseします.

yasuohayashibara commented 4 weeks ago

こちらのissueですが,以下で対応しました. https://github.com/open-rdc/aiformula/pull/5

従動輪の動きですが,ほぼ再現できたと思います. トレイルの距離により動きが変わります. SDFを始めて使用したので,結構試行錯誤が必要でした.

の値がどうも相対座標ではなく,絶対座標でを入力するようで,そこでだいぶ時間を取られました. 可視化ツールも充実していなかったので余計に大変でした... ちなみに,SDFファイル以外にURDFファイルもあり,どうして2重に定義されているのか未だに分かりません. モータのトルクは実ロボットの値を入れていますが,その他はまだ適当な値ですのでもう少し調整しますが,とりあえず再現できました.