全向轮小车的数学原理

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

全向轮小车的数学原理

对于场地坐标系的速度Vx,Vy推导到三个轮子的速度一共有两个矩阵公式就能解决。

第一个公式,场地坐标系速度Vx,Vy,W转换到机器人坐标系速度vx,vy,w公式:

角theta是机器人坐标系的x轴正方向与场地坐标系y轴正方向的夹角,最终theta所带值为与陀螺仪偏航角有关的一个变量。

这个公式推导一下也是很方便的,无论定位系统如何安装,这个公式不会变的!!!第二个公式,这个公式需要你人为的推导一下。我举一个典型例子:

1,机器人坐标系与机械结构关系如图(x轴与2号轮平行)

将vx,vy分别分解到轮子方向速度,规定的轮子正方向如白色箭头所示。计算v1:

v1=vx’+vy’+wL;(L为三轮底盘中心到轮中心的距离) v1=-vx*cos(60)-vy*sin(60)+w*L;

明显v2=vx+w*L;

另外将计算v3:

v3=vx’+vy’+w*L;(L为三轮底盘中心到轮中心的距离)

即v3=-vx*cos(60)+vy*sin(60)+w*L;

注意,分解速度的时候一定朝着规定的轮子正方向分解!!!

所以,第二个矩阵诞生了!基本上问题就得到解决了。

将第一个矩阵带入第二个矩阵问题得解,之后可以通过三角公式进行化简。便于我以后方便调试,我就当记笔记把后面的步骤写下来吧!

将第一个矩阵带入后得到下列方程:

计算得:

看到这些公式觉得亲切吗?

sin(A+B)=sin(A)*cos(B)+cos(A)*sin(B);

cos(A+B)=cos(A)*cos(B)-sin(A)*sin(B);

sin(A-B)=sin(A)*cos(B)-cos(A)*sin(B);

cos(A-B)=cos(A)*cos(B)+sin(A)*sin(B);

利用它们化简得:

其他情况都这样推导就行,第一个矩阵不会改变,我们只需手演算即可。

在我们的算法实现中,不考虑小车车身坐标系与地面坐标系之间的夹角θ,因此只需把θ看作0即可。

下边三行代码即为以上算法在项目中的具体实现,见ps2.c文件。其中joy_left_pwm,joy_right_pwm和joy_aux_left_pwm分别代表三个电机接口的PWM电压输出。

joy_left_pwm是底层控制板左侧电机接口输出,joy_right_pwm是底层控制板右侧电机接口输出,joy_aux_left_pwm是顶层左侧电机接口输出。

Ps2手柄在红灯模式下,psx_buf[7]是左侧摇杆X方向模拟值输出,用来控制X 方向速度。psx_buf[8]是左侧摇杆Y方向模拟值输出,用来控制Y方向速度。psx_buf[5]是右侧摇杆X方向模拟值输出,用来控制小车旋转。PS2手柄具体协议和示例程序,参见相应文档。

joy_left_pwm=-(psx_buf[7]-0x7F)/2-(0x7F-psx_buf[8])*0.866+(psx_buf[5] -0x7f)*0.4;

joy_right_pwm=psx_buf[7]-0x7F+(psx_buf[5]-0x7f)*0.4;

joy_aux_left_pwm=-(psx_buf[7]-0x7F)/2+(0x7F-psx_buf[8])*0.866+ (psx_buf[5]-0x7f)*0.4;

相关文档
最新文档