兩輪差分底盤運動學模型
目前使用最為廣泛的底盤可以說就是兩輪差分底盤,此類底盤具有結構簡單、成本低、模型簡單的特點。
1.差分底盤運動模型
差分底盤運動模型如圖。
- 輪子到底盤中心的距離: d d d
- 底盤中心圓弧運動的半徑: r r r
- 底盤中心線速度: v v v
- 底盤中心角速度: ω \omega ω
- 左輪線速度、右輪線速度: v L 、 v R v_L、v_R vL、vR
差速底盤系統是一種欠驅動系統,它存在三個自由度( X 、 Y 、 θ X、Y、\theta X、Y、θ)但僅存在兩個輸入( v R 、 v L v_R、v_L vR、vL),這使得其運動是耦合的,不能單獨分解分析。
差分底盤僅能進行圓弧運動(直線運動可以視為圓弧半徑 R → ∞ R\to\infty R→∞即 r → 0 r\to0 r→0時)
2.運動解算
由于兩輪角速度相同,等于底盤中心角速度,則可以得到底盤中心圓弧運動的半徑
ω = v L r − d = v R r + d ( r + d ) v L = ( r − d ) v R r = v R + v L v R − v L d \omega=\frac{v_L}{r-d}=\frac{v_R}{r+d}\\ (r+d)v_L=(r-d)v_R\\ r=\frac{v_R+v_L}{v_R-v_L}d ω=r−dvL=r+dvR(r+d)vL=(r−d)vRr=vR−vLvR+vLd
将其帶入等式 ω = v R r + d \omega=\frac{v_R}{r+d} ω=r+dvR得到:
r = v R + v L v R − v L d d = v R − v L v R − v L d r + d = 2 v R v R − v L d w = v R − v L 2 d r = \frac{v_R+v_L}{v_R-v_L}d\\ d = \frac{v_R-v_L}{v_R-v_L}d\\ r+d = \frac{2v_R}{v_R-v_L}d\\ w=\frac{v_R-v_L}{2d} r=vR−vLvR+vLdd=vR−vLvR−vLdr+d=vR−vL2vRdw=2dvR−vL
已知公式: v = ω × r v=\omega \times r v=ω×r,代入公式可得:
v = ω × r = v R − v L 2 d × v R + v L v R − v L d v = v R + v L 2 v = \omega \times r=\frac{v_R-v_L}{2d}\times\frac{v_R+v_L}{v_R-v_L}d\\ v=\frac{v_R+v_L}{2} v=ω×r=2dvR−vL×vR−vLvR+vLdv=2vR+vL
由此,得到二輪差分底盤的運動學模型:
{ w = v R − v L 2 d v = v R + v L 2 \begin{cases}w=\frac{v_R-v_L}{2d}\\v=\frac{v_R+v_L}{2}\end{cases} {w=2dvR−vLv=2vR+vL
{ v R = v + ω d v L = v − ω d \begin{cases}v_R=v+\omega d\\v_L=v-\omega d\end{cases} {vR=v+ωdvL=v−ωd
三輪全向底盤的運動學模型
三輪全向輪能夠在任何方向平移,其結構簡單,是一種全驅動系統,能夠進行運動學分解。
1.三輪全向運動模型
三輪全向運動模型是一種全驅動系統,有三個輸入( v 1 、 v 2 、 v 3 v_1、v_2、v_3 v1、v2、v3)和三個輸出( X 、 Y 、 θ X、Y、\theta X、Y、θ)對每個運動方向可以進行解耦分析。
三輪全向模型在世界坐标系 X W O Y W X_WOY_W XWOYW中如下圖所示:
- 世界坐标系: X W O Y W X_WOY_W XWOYW
- 取車輪1為車體坐标系正方向,建構車輛坐标系: X R O Y R X_ROY_R XROYR
- 車輪線速度: v 1 、 v 2 、 v 3 v_1、v_2、v_3 v1、v2、v3
- 底盤中心角速度: v θ v_\theta vθ
- 車輪到底盤中心的距離: d d d
- 三輪間夾角為120°
已知車輛的線速度在 X R X_R XR和 Y R Y_R YR方向有 v x v_x vx和 v y v_y vy
2.運動解算
由于三輪全向模型為全驅動模型,可進行運動分解,則對三個方向分解計算:
運動分解方向:平移X方向
當小車僅在X方向進行平移運動時:
v x ≠ 0 ; v y = 0 ; v θ = 0 v_x\neq0;v_y=0;v_{\theta}=0 vx=0;vy=0;vθ=0
此時,隻需将 v x v_x vx分解至三個車輛速度上:
{ v 1 = 0 v 2 = − s i n 60 ° × v x v 3 = s i n 60 ° × v x \begin{cases}v_1=0\\ v_2=-sin{60\degree}\times v_x\\ v_3=sin{60\degree}\times v_x \end{cases} ⎩⎪⎨⎪⎧v1=0v2=−sin60°×vxv3=sin60°×vx
運動分解方向:平移Y方向
當小車僅在Y方向進行平移運動時:
v x = 0 ; v y ≠ 0 ; v θ = 0 v_x=0;v_y\neq 0;v_{\theta}=0 vx=0;vy=0;vθ=0
此時,隻需将 v x v_x vx分解至三個車輛速度上:
{ v 1 = v y v 2 = − c o s 60 ° × v y v 3 = − c o s 60 ° × v y \begin{cases}v_1=v_y\\ v_2=-cos{60\degree}\times v_y\\ v_3=-cos{60\degree}\times v_y \end{cases} ⎩⎪⎨⎪⎧v1=vyv2=−cos60°×vyv3=−cos60°×vy
運動分解方向:旋轉方向
當小車僅進行旋轉運動時:
v x = 0 ; v y = 0 ; v θ ≠ 0 v_x=0;v_y=0;v_{\theta}\neq0 vx=0;vy=0;vθ=0
由于同一底盤角速度相同,可知:
{ v 1 = v θ × d v 2 = v θ × d v 3 = v θ × d \begin{cases}v_1=v_\theta \times d\\ v_2=v_\theta \times d\\ v_3=v_\theta \times d\\ \end{cases} ⎩⎪⎨⎪⎧v1=vθ×dv2=vθ×dv3=vθ×d
運動合成
将上述運動分解進行合成可以得到如下表達式:
{ v 1 = 0 × v x + 1 × v y + d × v θ v 2 = − s i n 60 ° × v x − c o s 60 ° × v y + d × v θ v 1 = s i n 60 ° × v x − c o s 60 ° × v y + d × v θ \begin{cases} v_1 = 0\times v_x + 1\times v_y + d\times v_\theta\\ v_2 = -sin{60\degree}\times v_x - cos{60\degree}\times v_y + d\times v_\theta\\ v_1 = sin{60\degree}\times v_x - cos{60\degree}\times v_y + d\times v_\theta\\ \end{cases} ⎩⎪⎨⎪⎧v1=0×vx+1×vy+d×vθv2=−sin60°×vx−cos60°×vy+d×vθv1=sin60°×vx−cos60°×vy+d×vθ
計算三角函數值并寫成矩陣方式,可以得到三輪全向模型的運動學模型:
[ v x v y v θ ] = [ 0 − 3 3 3 3 2 3 − 1 3 − 1 3 1 3 d 1 3 d 1 3 d ] [ v 1 v 2 v 3 ] \begin{bmatrix} v_x \\v_y\\v_\theta\end{bmatrix}= \begin{bmatrix} 0 & -\frac{\sqrt{3}}{3} & \frac{\sqrt{3}}{3}\\ \frac{2}{3} & -\frac{1}{3} & -\frac{1}{3}\\ \frac{1}{3d} & \frac{1}{3d} & \frac{1}{3d}\\ \end{bmatrix} \begin{bmatrix} v_1 \\v_2\\v_3\end{bmatrix} ⎣⎡vxvyvθ⎦⎤=⎣⎡0323d1−33
−313d133
−313d1⎦⎤⎣⎡v1v2v3⎦⎤
[ v 1 v 2 v 3 ] = [ 0 1 d − 3 2 − 1 2 d 3 2 − 1 2 d ] [ v x v y v θ ] \begin{bmatrix} v_1 \\v_2\\v_3\end{bmatrix}= \begin{bmatrix} 0 & 1 & d\\ -\frac{\sqrt{3}}{2} & -\frac{1}{2} & d\\ \frac{\sqrt{3}}{2} & -\frac{1}{2} & d\\ \end{bmatrix} \begin{bmatrix} v_x \\v_y\\v_\theta \end{bmatrix} ⎣⎡v1v2v3⎦⎤=⎣⎢⎡0−23
23
1−21−21ddd⎦⎥⎤⎣⎡vxvyvθ⎦⎤