阿克曼转向计算过程
本文档详细说明了阿克曼转向的计算过程,确保车辆在转弯时所有车轮沿同一转弯中心的圆形路径运动。计算过程包括将输入指令(转向角和速度)转换为适当的车轮角度和速度。
1. 输入定义
转向输入:输入通常为期望的转向角δ\deltaδ或车辆的角速度ω\omegaω,表示转弯速率。
速度输入:车辆的输入线速度vvv,通常为沿纵轴的速度。
车辆参数:
LLL:轴距,前后轴之间的距离。
ddd:轮距,同一轴上左右轮之间的距离。
vbackv_{\text{back}}vback:后轮速度,在纯阿克曼转向中假设后轮直线运动。
2. 逐步计算过程
2.1 将角速度转换为转向角
如果输入为角速度ω\omegaω和线速度vvv,需要将其转换为平均转向角δ\deltaδ,利用转弯半径与车辆几何的关系:ω=vR,R=Ltanδ\omega = \frac{v}{R}, \quad R = \frac{L}{\tan \delta}ω=Rv,R=tanδL
推导得到δ\deltaδ:tanδ=ωLv,δ=arctan(ωLv)\tan \delta = \frac{\omega L}{v}, \quad \delta = \arctan \left( \frac{\omega L}{v} \right)tanδ=vωL,δ=arctan(vωL)
如果输入直接是角度,则不需要转换。
2.2 计算转弯半径
转弯半径RRR是从瞬时旋转中心(ICR)到后轴中点的距离:R=LtanδR = \frac{L}{\tan \delta}R=tanδL
这里的计算不是计算最小转弯半径(最大转角下),而是输入转角下的转弯半径。
2.3 分配前轮转向角
阿克曼转向要求内外轮转向角不同,以满足转弯半径的几何约束:
内侧轮转向角δin\delta_{\text{in}}δin:δin=arctan(LR−d2)\delta_{\text{in}} = \arctan \left( \frac{L}{R - \frac{d}{2}} \right)δin=arctan(R−2dL)
外侧轮转向角δout\delta_{\text{out}}δout:δout=arctan(LR+d2)\delta_{\text{out}} = \arctan \left( \frac{L}{R + \frac{d}{2}} \right)δout=arctan(R+2dL)
注意:对于左转,左轮为内侧轮δin\delta_{\text{in}}δin,右轮为外侧轮δout\delta_{\text{out}}δout。右转则相反。
2.4 分配各轮速度
根据阿克曼几何,将车辆速度分配到每个车轮,确保转弯时速度匹配:
后轮速度vbackv_{\text{back}}vback假设为输入线速度vvv,因为后轴直线运动。
前轮速度基于转弯半径和轴距计算:
左前轮速度vLv_LvL:vL=v⋅R−d2Rv_L = v \cdot \frac{R - \frac{d}{2}}{R}vL=v⋅RR−2d
右前轮速度vRv_RvR:vR=v⋅R+d2Rv_R = v \cdot \frac{R + \frac{d}{2}}{R}vR=v⋅RR+2d
将转角和轴距代入可得:vL=v(1−dtanδ2L),vR=v(1+dtanδ2L)v_L = v \left( 1 - \frac{d \tan \delta}{2L} \right), \quad v_R = v \left( 1 + \frac{d \tan \delta}{2L} \right)vL=v(1−2Ldtanδ),vR=v(1+2Ldtanδ)
- 总结
转向角:将角速度转换为平均转向角,然后利用阿克曼几何分配内外轮角度。
速度分配:根据各轮到ICR的径向距离分配输入速度,确保平滑转弯。
该过程保证车辆协调转弯,减少轮胎磨损并保持稳定性。
计算过程:
以给定角速度为例,左转,给定ω=1rad/s\omega = 1 \text{rad/s}ω=1rad/s,v=10m/sv = 10 \text{m/s}v=10m/s,L=1.6mL = 1.6 \text{m}L=1.6m:tanδ=1×1.610=0.16,δ=arctan(0.16)≈0.1585rad\tan \delta = \frac{1 \times 1.6}{10} = 0.16, \quad \delta = \arctan (0.16) \approx 0.1585 \text{rad}tanδ=101×1.6=0.16,δ=arctan(0.16)≈0.1585rad
δ=0.1585rad\delta = 0.1585 \text{rad}δ=0.1585rad,L=1.6mL = 1.6 \text{m}L=1.6m:R=1.6tan0.1585≈1.60.16=10mR = \frac{1.6}{\tan 0.1585} \approx \frac{1.6}{0.16} = 10 \text{m}R=tan0.15851.6≈0.161.6=10m
R=10mR = 10 \text{m}R=10m,d=1.0md = 1.0 \text{m}d=1.0m,L=1.6mL = 1.6 \text{m}L=1.6m:
内侧(左)轮:δin=arctan(1.610−0.5)=arctan(1.69.5)≈0.167rad\delta_{\text{in}} = \arctan \left( \frac{1.6}{10 - 0.5} \right) = \arctan \left( \frac{1.6}{9.5} \right) \approx 0.167 \text{rad}δin=arctan(10−0.51.6)=arctan(9.51.6)≈0.167rad
外侧(右)轮:δout=arctan(1.610+0.5)=arctan(1.610.5)≈0.151rad\delta_{\text{out}} = \arctan \left( \frac{1.6}{10 + 0.5} \right) = \arctan \left( \frac{1.6}{10.5} \right) \approx 0.151 \text{rad}δout=arctan(10+0.51.6)=arctan(10.51.6)≈0.151rad
v=10m/sv = 10 \text{m/s}v=10m/s,d=1.0md = 1.0 \text{m}d=1.0m,L=1.6mL = 1.6 \text{m}L=1.6m,δ=0.1585rad\delta = 0.1585 \text{rad}δ=0.1585rad,tanδ≈0.16\tan \delta \approx 0.16tanδ≈0.16:
后轮速度:vback=vv_{back}=vvback=v
左前轮速度:vL=10(1−1.0×0.162×1.6)=10(1−0.05)=9.5m/sv_L = 10 \left( 1 - \frac{1.0 \times 0.16}{2 \times 1.6} \right) = 10 \left( 1 - 0.05 \right) = 9.5 \text{m/s}vL=10(1−2×1.61.0×0.16)=10(1−0.05)=9.5m/s
右前轮速度:vR=10(1+1.0×0.162×1.6)=10(1+0.05)=10.5m/sv_R = 10 \left( 1 + \frac{1.0 \times 0.16}{2 \times 1.6} \right) = 10 \left( 1 + 0.05 \right) = 10.5 \text{m/s}vR=10(1+2×1.61.0×0.16)=10(1+0.05)=10.5m/s