一个月不见,甚是想念,又和大家见面了,今天主要想和大家聊聊全向轮底盘运动。
首先先介绍一下什么是全向轮吧。全向轮是海丹等人的一款专利产品。全向轮包括轮毂和从动轮,该轮毂的外圆周处均匀开设有3个或3个以上的轮毂齿,每两个轮毂齿之间装设有一从动轮,该从动轮的径向方向与轮毂外圆周的切线方向垂直。本实用新型是一种结构简单、适用范围广、可以在较差的路况上运动的全向轮。
全向轮
全向轮底盘
可以看到,选用全向轮的原因就是无论移动还是旋转,全向轮很容易就进行方向控制和跟踪,并尽可能快地转动。全方位轮无需润滑或现场维护和安装选项是非常简单和稳定。
当然从图中可以看出,与四轮底盘不同,全向轮虽然在旋转上非常敏捷,但是其运动分析和运动控制却比四轮底盘要麻烦,那么今天就来分析一下全向轮的运动吧。
①运动学分析
在运动建模之前,为简化运动学数学模型,做下列几种理想化假设:
(1)全向轮不与地面打滑,同时地面有足够摩擦力;
(2)电机轴线中心正是底盘重心;
(3)各轮之间是绝对的互成120°安装。
通过简单的速度分解,可以得到以下公式:
ω为机器人角速度,L 为全向轮中心与底盘中心的距离,VA,VB,VC分别为 3 个轮子的转速,Vx、Vy 为机器人的 X、Y 方向的运动速度。
②C语言实现
void Drive_Motor(float Vx,float Vy,float Vz)
{
MOTOR_A.Target=Vy + Omni_turn_radiaus*Vz;
MOTOR_B.Target=-X_PARAMETER1*Vx - Y_PARAMETER1*Vy + Omni_turn_radiaus*Vz;
MOTOR_C.Target=+X_PARAMETER1*Vx - Y_PARAMETER1*Vy + Omni_turn_radiaus*Vz;
}
#define X_PARAMETER1 (sqrt(3)/2.f)
#define Y_PARAMETER1 (0.5f)
#define L_PARAMETER1 (1.0f)
再进行运动分解完后,我们就能确定三个轮子的目标值,当然直接赋值是在理想的情况下,在现实中,我们也要考虑底盘在运动过程中遇到的摩擦等等。因此,像我们的智能小车或者机器人的底盘,一般都是带有编码器的,目的就是为了得到当前底盘实际的运动情况。
这次就是本次文章的全部内容了,欢迎大家积极讨论呀!