4WSロボトレーサ — キングピンオフセットは舵角を変えない
4WSのステアリンクを設計するとき、キングピンオフセットを含めた厳密なアッカーマン式は陰関数になる。これを解こうとして、そもそも解く必要がないことがわかった話。
#目的
4WSロボトレーサのステアリンクを設計している。左右輪に正しい舵角差をつけるには、まず目標となる 理想舵角を知る必要がある。キングピンオフセット(キングピン軸と接地点の横方向ずれ)が8mmあるので、 これを含めた式で計算したい。
#陰関数になってしまう
キングピンオフセット e を含めると、接地点の位置が舵角によって動く。旋回中心から接地点までの 距離が舵角に依存するので、式の両辺に δ が出てくる。
外輪: tanδo = (Le + e·sinδo) / (R + Wk/2 + e·cosδo)
内輪: tanδi = (Le − e·sinδi) / (R − Wk/2 − e·cosδi)
Le = L/2 (4WS:旋回中心はホイールベース中央の真横)
Wk = T − 2e
閉じた形で解けないので、不動点反復で解くコードを書いた。δ = atan(f(δ)) を繰り返す形。
#結果:1回目で収束した
初期値に atan(Le / (R + Wk/2)) を入れて回したら、残差が最初から厳密にゼロだった。 反復が1回も進まない。バグを疑ってトレースを出したが、値が全く動いていない。
init outer deg 14.969550802798484
0 14.969550803 delta 0.000e+0
1 14.969550803 delta 0.000e+0
#原因
バグではなかった。式を展開すると e の項が恒等的に消える。
tanδ·(X + e·cosδ) = Le + e·sinδ X = R + Wk/2
X·tanδ + e·sinδ = Le + e·sinδ tanδ·cosδ = sinδ より
X·tanδ = Le
∴ tanδ = Le / X
幾何的にも納得できる。舵角が正しいとき、キングピンから接地点へのオフセットベクトル (e·sinδ, e·cosδ) の向きは、旋回中心から見た半径方向とちょうど一致する。接地点が半径方向に ずれるだけなら、そこを通る円の接線方向は変わらない。だから必要な舵角も変わらない。
内輪側(符号が逆)でも同じように消える。R = 60〜600mm、e = 0〜20mm の範囲で数値確認したが、 残差はすべて 1e-15 以下だった。
#わかったこと
キングピンオフセットが効くのは舵角ではない。 効くのは次の2つだけ。
- 必要クリアランス — キングピン軸まわりにタイヤが回るので、半径
√((e + タイヤ幅/2)² + (タイヤ径/2)²)の円筒内に干渉物を置けない。e=8, 幅8, 径24 なら約17mm。 - 据え切りトルク —
T1 = μ·N·√(e² + a²)なので、e が大きいほどサーボが重くなる。
つまり e は「小さくしたい」パラメータで、舵角設計とはトレードオフの関係にない。リンク設計の 自由度として使える。
もう一つ副産物があった。この項が消えるのは分子と分母で符号が揃っているときだけで、分子だけ符号を 間違えると X·tanδ = Le − 2e·sinδ になって別の答えが出る。以前のバージョンで符号を間違えていた のはこれだった。「e を変えても舵角が動かないこと」が、この式の実装の検算そのものになる。
#次にやること
- [ ] ベルクランク角 β=54°, r=9.5, h=21.5 のリンクで、この理想舵角にどれだけ追従できるかを評価
- [ ] ロック角±49°に対する最小旋回半径を確定させる
- [ ] 吸引を載せたときの据え切りトルクを実測し、8520コアレスの余裕を確認
- [ ] 前後独立2軸なので、逆位相・同位相の切り替え時に舵角配分をどう持つか決める
計算はツールにまとめてあるが、まだ公開していない。
間違いや、もっと良い方法があればX(@AsachiMakes)まで教えてください。Build Logの一覧へ戻る