以后轴为中心的车辆底盘位姿解算

汽车底盘的运动学模型分为两类:

  • 以后轴为中心的车辆运动学模型
  • 以质心为中心的车辆运动学模型

本文主要介绍以后轴为中心的车辆运动学模型。即将机体坐标系原点设置在后轴中心,假设只存在前轮偏角,推导以后轴为原点的运动学模型。

在这里插入图片描述
如图,

  • XY坐标系为惯性坐标系, X 轴正向为东,Y 轴正向为北;
  • xy坐标系为车体坐标系, x 轴正向为车辆前方、y 轴正向为车辆左侧;
  • 在惯性坐标系 XOY 下,后轴中心为 ( X r , Y r ) (X_r, Y_r) (Xr,Yr),前轴中心为 ( X f , Y f ) (X_f, Y_f) (Xf,Yf)
  • 横摆角或航向角 φ \varphi φ(车体坐标系 x 轴与惯性坐标系 X 轴之间的夹角,正向为逆时针方向)
  • 前轮转角 δ f \delta_f δf(正向为逆时针方向)
  • 后轴中心的速度 v r v_r vr
  • 后轴中心的速度 v f v_f vf
  • 后轴中心的瞬时转向半径 R R R
  • 轴距

下面开始推导运动学模型:
首先,后轴中心 ( X r , Y r ) (X_r, Y_r) (Xr,Yr) 处的速度:

v r = X ˙ r cos ⁡ φ + Y ˙ r sin ⁡ φ (1) v_r=\dot{X}_r \cos \varphi+\dot{Y}_r \sin \varphi \tag{1} vr=X˙rcosφ+Y˙rsinφ(1)
前、后轴中心的运动学约束(假设没有横向滑移):
{ X ˙ f sin ⁡ ( φ + δ f ) = Y ˙ f cos ⁡ ( φ + δ f ) X ˙ r sin ⁡ φ = Y ˙ r cos ⁡ φ (2) \left\{\begin{array}{l} \dot{X}_{\mathrm{f}} \sin \left(\varphi+\delta_{\mathrm{f}}\right)=\dot{Y}_{\mathrm{f}} \cos \left(\varphi+\delta_{\mathrm{f}}\right) \\ \dot{X}_{\mathrm{r}} \sin \varphi=\dot{Y}_{\mathrm{r}} \cos \varphi \end{array}\right. \tag{2} {X˙fsin(φ+δf)=Y˙fcos(φ+δf)X˙rsinφ=Y˙rcosφ(2)
由公式(1),可以得到下面两个式子:

v r cos ⁡ φ = X ˙ r cos ⁡ 2 φ + Y ˙ r sin ⁡ φ cos ⁡ φ v r sin ⁡ φ = X ˙ r cos ⁡ φ sin ⁡ φ + Y ˙ r sin ⁡ 2 φ (3) v_r \cos \varphi=\dot{X}_r \cos^2 \varphi +\dot{Y}_r \sin \varphi\cos \varphi\\ v_r \sin\varphi=\dot{X}_r \cos \varphi \sin\varphi+\dot{Y}_r \sin^2 \varphi \tag{3} vrcosφ=X˙rcos2φ+Y˙rsinφcosφvrsinφ=X˙rcosφsinφ+Y˙rsin2φ(3)
将(2)中的: X ˙ r sin ⁡ φ = Y ˙ r cos ⁡ φ \dot{X}_{\mathrm{r}} \sin \varphi=\dot{Y}_{\mathrm{r}} \cos \varphi X˙rsinφ=Y˙rcosφ,代入(3)得到后轴中心的速度分量
{ V r x = X ˙ r = v r cos ⁡ φ V r y = Y ˙ r = v r sin ⁡ φ (4) \left\{\begin{array}{l} V_{rx}=\dot{X}_r=v_{\mathrm{r}} \cos \varphi \\ V_{ry}=\dot{Y}_{\mathrm{r}}=v_{\mathrm{r}} \sin \varphi \end{array}\right.\tag{4} {Vrx=X˙r=vrcosφVry=Y˙r=vrsinφ(4)
另外,前、后轴中心之间的几何关系:
{ X f = X r + l cos ⁡ φ Y f = Y r + l sin ⁡ φ . (5) \left\{\begin{array}{l} X_{\mathrm{f}}=X_{\mathrm{r}}+l \cos \varphi \\ Y_{\mathrm{f}}=Y_{\mathrm{r}}+l \sin \varphi \end{array}\right. .\tag{5} {Xf=Xr+lcosφYf=Yr+lsinφ.(5)
对(5)求导得到:
{ X ˙ f = X ˙ r − l sin ⁡ φ Y ˙ f = Y ˙ r + l cos ⁡ φ . (6) \left\{\begin{array}{l} \dot X_{\mathrm{f}}=\dot X_{\mathrm{r}}-l \sin\varphi \\ \dot Y_{\mathrm{f}}=\dot Y_{\mathrm{r}}+l \cos \varphi \end{array}\right. .\tag{6} {X˙f=X˙rlsinφY˙f=Y˙r+lcosφ.(6)

将式 (6) 代入式 (2),解得横摆角速度(对sin(a+b),cos(a+b)展开),最后化简得横摆角速度
φ ˙ = ω = v r l tan ⁡ δ f (7) \dot{ \varphi }=\omega=\frac{v_{\mathrm{r}}}{l} \tan \delta_{\mathrm{f}} \tag{7} φ˙=ω=lvrtanδf(7)

由横摆角速度 ω \omega ω 和后轴中心速度 v r v_r vr ,得后轮的转向半径 R R R 和前轮转角 δ f \delta_{\mathrm{f}} δf
{ R = v r / ω δ f = arctan ⁡ ( l / R ) (8) \left\{\begin{array}{l} R=v_{\mathrm{r}} / \omega \\ \delta_{\mathrm{f}}=\arctan (l / R) \end{array}\right. \tag{8} {R=vr/ωδf=arctan(l/R)(8)

由(4)和(7)得到运动学模型:
{ X ˙ r = v r cos ⁡ φ Y ˙ r = v r sin ⁡ φ φ ˙ = ω = v r l tan ⁡ δ f (9) \left\{\begin{array}{l} \dot{X}_r=v_{\mathrm{r}} \cos \varphi \\ \dot{Y}_{\mathrm{r}}=v_{\mathrm{r}} \sin \varphi \\ \dot{ \varphi }=\omega=\frac{v_{\mathrm{r}}}{l} \tan \delta_{\mathrm{f}} \end{array}\right.\tag{9} X˙r=vrcosφY˙r=vrsinφφ˙=ω=lvrtanδf(9)

写成矩阵形式:
[ X ˙ r Y ˙ r φ ˙ ] = [ cos ⁡ φ sin ⁡ φ tan ⁡ δ r / l ] v r \left[\begin{array}{c} \dot{X}_{\mathrm{r}} \\ \dot{Y}_{\mathrm{r}} \\ \dot{\varphi} \end{array}\right]=\left[\begin{array}{c} \cos \varphi \\ \sin \varphi \\ \tan \delta_{\mathrm{r}} / l \end{array}\right] v_{\mathrm{r}} X˙rY˙rφ˙ = cosφsinφtanδr/l vr
[ X ˙ r Y ˙ r φ ˙ ] = [ cos ⁡ φ 0 sin ⁡ φ 0 0 1 ] [ v φ ] \left[\begin{array}{c} \dot{X}_{\mathrm{r}} \\ \dot{Y}_{\mathrm{r}} \\ \dot{\varphi} \end{array}\right]= \begin{bmatrix} \cos \varphi & 0\\ \sin\varphi & 0 \\ 0 & 1 \end{bmatrix} \begin{bmatrix} v\\ \varphi \\ \end{bmatrix} X˙rY˙rφ˙ = cosφsinφ0001 [vφ]

### RM舵轮底盘运动方法 对于RM舵轮底盘的运动,主要涉及如何将期望的速度指令转换成各个舵轮的具体转速和角度。基于四舵轮底盘的特点,可以采用如下方法来完成这一过程。 #### 1. 坐标系定义与参数设定 按照标准右手坐标系的规定,设移动底盘的正前方为x方向,左侧为y方向,向上为z方向[^2]。具体到四个舵轮的置分布: - 左前轮编号为1 - 右前轮编号为2 - 左后轮编号为3 - 右后轮编号为4 每个舵轮能够独立调整其转向角度以及前进或倒退的速度大小。 #### 2. 运动学方程建立 为了描述整个系统的动态特性,需要构建相应的运动学模型。假设给定线速度\(v\) 和角速度\(\omega\)作为输入,则可以通过下面的关系计出各轮所需的瞬时速度分量\[ v_i \]及其对应的偏航角\[\theta_i\]: \[ v_{ix} = v * cos(\alpha + \beta_i) \\ v_{iy} = v * sin(\alpha + \beta_i) \\ \] 其中, - \(i=1,2,3,4\) 表示不同的轮子; - \(\alpha\) 是车身相对于全局坐标的朝向; - \(\beta_i\) 则代表第 i 个轮子相对车身中心的角度偏差; 当考虑角速度影响时, \[ v'_{ix}=v*cos(\alpha+\beta_i)-r*\omega*sin(\alpha+\beta_i)\\ v'_{iy}=v*sin(\alpha+\beta_i)+r*\omega*cos(\alpha+\beta_i) \] 这里引入了回转半径 r 来表示由于转弯而产生的额外移变化。 #### 3. 控制策略实施 针对上述理论分析结果,在实际应用过程中还需要设计合理的控制器以确保精确跟踪目标轨迹。通常情况下会选用PID调节器或者其他先进的自适应控制技术来优化性能表现。通过不断监测当前状态并与预设路径对比,及时修正误差直至达到理想效果为止。 ```python import numpy as np def calculate_wheel_speeds(v, omega, alpha, beta): """ 计每个轮子的速度 参数: v (float): 线速度 omega (float): 角速度 alpha (float): 车身朝向角 beta ([type]): 各轮相对于车身中心的角度偏差列表 返回值: list of tuples: [(vx1, vy1), ... ,(vx4,vy4)] 每个元组包含对应轮子沿X,Y的速度分量 """ wheel_speeds = [] for b in beta: vx = v*np.cos(alpha+b) - omega*(np.sin(alpha+b)) vy = v*np.sin(alpha+b) + omega*(np.cos(alpha+b)) wheel_speeds.append((vx, vy)) return wheel_speeds # 示例调用 if __name__ == "__main__": # 设定初始条件 line_velocity = 0.5 # m/s angular_velocity = 0.1 # rad/s heading_angle = 0 # 初始化为零度 wheels_angles_offset = [-np.pi/4, np.pi/4, -3*np.pi/4, 3*np.pi/4] speeds = calculate_wheel_speeds(line_velocity, angular_velocity, heading_angle, wheels_angles_offset) print(speeds) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值