这里,我将以类比自行车模型的解算方式进行解算。
基于阿克曼底盘的运动学模型如下 图示所示,车辆是一个二维平面上的运动物体(可以等价与我们是站在天空中的俯视视角),在我们的项目中车前轮为转向轮,只负责控制方向,后轮为左右两个,为驱动轮。在ros中我们会向cmd_vel话题发送两个数据,X和Z。X为车辆行驶时的前进速度,Z为车辆转弯时的角速度,规定逆时针方向为正方向旋转。,现在需要将这两个矢量分别转换为后轮的电机转速和调整前轮转向的电机(也就是前轮转向),这就需要我们在项目中根据角速度和线速度解算出前轮的转角角度。解算过程如下。
Vx为机器人运动的线速度,Vw为机器人运动的角速度,L为车前轮与后轮的轴距,R为洗地车以该角速度行驶时的旋转半径(实际上旋转半径为前轮和后轮的中心连接O的直线段,但是为了法计算方便,约等于后轮中心与O的连线段,网上基本都是这么默认的), θ为机器人的滑移角,就是我们程序中需要的实际转角量,φ为机器人的偏航角(与x轴的夹角),,我们通过将这个值传给底层stm32,控制电机做出相应的转向运动。
因为 φ =V/R
根据三角形相似原理可知:
因为tanθ = L/R
所以 φ =V*tanθ/L
Vx是线速度,Vw是角速度
参考文献:
自动驾驶中的车辆运动学模型 - 知乎 (zhihu.com)
无人驾驶运动控制----pure pursuit算法实践和理解_pure_pursuit原理_liuzengyuan10的博客-CSDN博客
(189条消息) 无人驾驶汽车系统入门(五)——运动学自行车模型和动力学自行车模型_无人车的侧向运动模型_AdamShan的博客-CSDN博客
(189条消息) 移动机器人差速轮运动学模型--(左右轮速度和线速度角速度的相互转换)_奇妙之二进制的博客-CSDN博客