Skip to content

従動輪のプリロード可変機構の再現 - #218

Open
ken222d wants to merge 13 commits into
deployfrom
feat/sim_preload_caster
Open

従動輪のプリロード可変機構の再現#218
ken222d wants to merge 13 commits into
deployfrom
feat/sim_preload_caster

Conversation

@ken222d

@ken222d ken222d commented May 20, 2026

Copy link
Copy Markdown
Contributor

No description provided.

@kyo0221

kyo0221 commented May 20, 2026

Copy link
Copy Markdown
Contributor

何のPRかわからないので説明を追加してください

@ken222d

ken222d commented May 20, 2026

Copy link
Copy Markdown
Contributor Author

現在の従動輪プリロード可変機構をシミュレータで再現するため, 以下の開発を行う
・従動輪の回転軸についているパーツ(青枠で囲った部分)とその穴に通っているパーツ(赤枠で囲った部分)同士のcollisionを用いて動作をさせる
image
・ばねによる従動輪のステアリング角の動きやすさを再現するpluginを自作

@ken222d

ken222d commented May 24, 2026

Copy link
Copy Markdown
Contributor Author

Inventorから再現に必要な部品の形状ファイルを作成し, Gazeboで表示させた.
現在, 形状ファイルの形にcollisionが発生するように設定してある.
そのため, Gazeboの物理エンジンのODEの計算負荷が高くなり, GUIがかなり重い.
collisionの設定を簡単な形(例: boxやcylinder )にすることで解決する.

@ken222d

ken222d commented May 24, 2026

Copy link
Copy Markdown
Contributor Author

上記のコメントの通りに対処したところ, Gazeboの物理エンジンODEの処理が軽くなり, GUIが重い問題を軽減できた.
以下の動画は, 並進時のプリロード可変機構に関する部品の動作の様子.

2026-05-24.230919.mp4

以下の動画は, 旋回のプリロード可変機構に関する部品の動作の様子.

2026-05-24.231101.mp4

今後は, ばねの動作再現pluginの作成と以下の画像の緑パーツと赤パーツのスライド可動域などの調整を行う予定.
スクリーンショット 2026-05-24 232019

@yasuohayashibara

Copy link
Copy Markdown
Member

挙動を部品レベルで再現する方法もあると思いますが,関節レベルで再現する方法もあります.
参考までに,こちらに例がありますので,共有いたします.
こちらの方が,計算量を少なく抑えられます.

https://github.com/gazebosim/gz-sim/blob/main/src/systems/joint_controller/JointController.cc

@ken222d
ken222d force-pushed the feat/sim_preload_caster branch from 7779b44 to dbcb503 Compare August 2, 2026 21:47
@ken222d ken222d changed the title feat/sim preload caster 従動輪のプリロード可変機構の再現 Aug 5, 2026
@ken222d

ken222d commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

現在, プリロードの可変に伴ってYaw軸回転のしやすさを変化させるpluginを作成しています.
実機ではchassis_driverノードから従動輪モータの目標角度がパブリッシュされているので, その目標角度を受け取り, 角度とプーリー半径の積からプリロード長を計算しています.
preload = プーリー半径 × 目標角度

バネの力は, 以下のように計算しています.
バネの力 = ばね係数 ×(回転体の回転によって縮んだバネの長さ + プリロード長)

回転体に対する復元トルクは以下のように計算しています.
復元トルク = (バネの力の接線方向のみの力)×(回転体の半径)

この復元トルクをYaw軸回転に与えることでバネによる回転のしやすさを変化しています.

以下が動画です.

以下のようにjoint名とトピック名, パラメータ指定をできるようにしています.
スクリーンショット 2026-08-05 141747

計算は以下のようにしました.
image

@kyo0221

kyo0221 commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

指令値に対しての舵角の応答性が気になりますね
良かったらデータ取って見せてくれるとありがたいです

@ken222d

ken222d commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

シミュレータでの様子は以下になります.
ターミナルの右下でプーリーの目標角度を送信しています.
ターミナルの左がプラグインのログになります.

Screencast.from.2026-08-06.14-25-07.mp4

@ken222d

ken222d commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

実機での駆動輪目標速度と従動輪モータ目標角度の送信をシミュレータに適用させた.
chassis_driverの駆動輪目標速度と従動輪モータ目標角度の送信部分を変更している(新たにsim_chassis_driver作成).
以下が動画です.
左下ターミナルが従動輪モータ目標角度の様子です.
直進時に従動輪モータ目標角度が0.0(プリロード=0), 旋回時に1.5(プリロード>0)になっていることがわかる

Screencast.from.2026-08-06.14-40-32.mp4

@kyo0221

kyo0221 commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

ターミナル上のログを追う形式だと少し見えにくいのと対外向けのデータとして使いにくいので、挙動の確認をする場合は軌跡をプロットした図にしてみると良いと思います

↓こちらでは軌跡を図にして解析しています
#199 (comment)

リンク先の図を出したコード:https://github.com/open-rdc/aiformula/blob/main/scripts/path_error_plotter.py

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.

3 participants