Skip to main content

底盘运动学 全向轮系

四全向轮轮系

介绍演示

坐标关系

如图所示,建立如下世界坐标系XOYXOY,世界坐标系中XX正方向为机器人全局0度方向,建立机器人本地坐标系xoyxoy,车头方向为本地坐标系xx正方向。

机器人中心到轮子的距离为LL,机器人旋转角速度为ω\omega,逆时针方向为角速度正方向。

三轮全向运动学

逆运动学

四轮全向机器人局部坐标系下的控制量为[vxvyωz]\left[\begin{array}{l} v_{x} \\ v_{y} \\ \omega_{z} \end{array}\right],逆解待解量为[v1v2v3v4]\left[\begin{array}{l} v_{1} \\ v_{2} \\ v_{3} \\v_{4} \end{array}\right]

vxv_{x}vyv_{y}ωz\omega_{z}分别代表局部坐标系下的 xx 方向线速度, yy 方向线速度和绕 zz 轴旋转的角速度,v1v_1v2v_2v3v_3v4v_4分别表示每个轮子的正向旋转线速度。

通过上图中的速度矢量关系不难得到:

v1=+vxcos45+vysin45+ωzLv2=vxsin45+vycos45+ωzLv3=vxcos45vysin45+ωzLv4=+vxsin45vycos45+ωzL\begin{aligned} &v_{1}=+v_{x} \cos45+v_{y} \sin45+\omega_z L \\ &v_{2}=-v_{x} \sin45+v_{y} \cos45+\omega_z L \\ &v_{3}=-v_{x} \cos45-v_{y} \sin45+\omega_z L \\ &v_{4}=+v_{x} \sin45-v_{y} \cos45+\omega_z L \end{aligned}

转换为矩阵形式可表示为:

[v1v2v3v4]=[cos45sin45Lsin45cos45Lcos45sin45Lsin45cos45L][vxvyωz]\left[\begin{array}{l} v_{1} \\ v_{2} \\ v_{3} \\ v_{4} \end{array}\right]=\left[\begin{array}{ccc} \cos45 & \sin45 & L \\ -\sin45 & \cos45 & L \\ -\cos45 & -\sin45 & L \\ \sin45 & -\cos45 & L \end{array}\right]\left[\begin{array}{l} v_{x} \\ v_{y} \\ \omega_z \end{array}\right]

则运动逆解函数可以写为:

// 轮子到车体质心的距离【m】
#define WHEEL_CENTER_DIST 0.36f
// 轮子半径【m】
#define WHEEL_RADIUS 0.08f
// 60/(2*PI*R) 轮子速度MPS转换到RPM的系数
#define WHL_MPS2RPM (60)/(2*PI*WHEEL_RADIUS)

void ikine_omni4(chassis_t *chs)
{
float L = WHEEL_CENTER_DIST;

chs->out.whl_spd[0] = +chs->out.vx * cos_45 + chs->out.vy * sin_45 + chs->out.wz * L;
chs->out.whl_spd[1] = -chs->out.vx * sin_45 + chs->out.vy * cos_45 + chs->out.wz * L;
chs->out.whl_spd[2] = -chs->out.vx * cos_45 - chs->out.vy * sin_45 + chs->out.wz * L;
chs->out.whl_spd[3] = +chs->out.vx * sin_45 - chs->out.vy * cos_45 + chs->out.wz * L;

chs->out.whl_spd[0] = chs->out.whl_spd[0] * WHL_MPS2RPM;
chs->out.whl_spd[1] = chs->out.whl_spd[1] * WHL_MPS2RPM;
chs->out.whl_spd[2] = chs->out.whl_spd[2] * WHL_MPS2RPM;
chs->out.whl_spd[3] = chs->out.whl_spd[3] * WHL_MPS2RPM;
}

正运动学

未完待续

待续...

三全向轮轮系

介绍演示

坐标关系

提示
  • 本文的运动学仅讨论机器人自身坐标系下的情况
  • 如需世界坐标系还需加上旋转矩阵

如图所示,建立如下世界坐标系 XOYXOY ,世界坐标系中 XX 正方向为机器人全局0度方向,建立机器人本地坐标系 xoyxoy ,车头方向为本地坐标系 xx 正方向。

机器人中心到轮子的距离为LL,机器人旋转角速度为ω\omega,逆时针方向为角速度正方向。

三轮全向运动学

逆运动学

注意

本文中ωz\omega_{z}等效于ω\omega

所谓逆解,为给定机器人局部坐标系下的控制量[vxvyωz]\left[\begin{array}{l} v_{x} \\ v_{y} \\ \omega_{z} \end{array}\right],分解到每个轮子的速度控制量[v1v2v3]\left[\begin{array}{l} v_{1} \\ v_{2} \\ v_{3} \end{array}\right]的过程。

vxv_{x}vyv_{y}ωz\omega_{z}分别代表局部坐标系下的 xx 方向线速度, yy 方向线速度和绕 zz 轴旋转的角速度,v1v_1v2v_2v3v_3分别表示每个轮子的正向旋转线速度。

通过上图中的速度矢量关系不难得到:

v1=vy+ωzLv2=+vxsin60+vycos60+ωzLv3=vxcos30+vysin30+ωzL\begin{aligned} &v_{1}=-v_{y}+\omega_z L \\ &v_{2}=+v_{x} \sin60+v_{y} \cos60+\omega_z L \\ &v_{3}=-v_{x} \cos30+v_{y} \sin30+\omega_z L \end{aligned}

转换为矩阵形式可表示为:

[v1v2v3]=[01Lsin60cos60Lcos30sin30L][vxvyωz]\left[\begin{array}{l} v_{1} \\ v_{2} \\ v_{3} \end{array}\right]=\left[\begin{array}{ccc} 0 & -1 & L \\ \sin60 & \cos60 & L \\ -\cos30 & \sin30 & L \end{array}\right]\left[\begin{array}{l} v_{x} \\ v_{y} \\ \omega_z \end{array}\right]

则运动逆解函数可以写为:

// 轮子到车体质心的距离【m】
#define WHEEL_CENTER_DIST 0.36f
// 轮子半径【m】
#define WHEEL_RADIUS 0.08f
// 60/(2*PI*R) 轮子速度MPS转换到RPM的系数
#define WHL_MPS2RPM (60)/(2*PI*WHEEL_RADIUS)

void ikine_omni3(chassis_t *chs)
{
float L = WHEEL_CENTER_DIST;

chs->out.whl_spd[0] = -chs->out.vy + chs->out.wz * L;
chs->out.whl_spd[1] = +chs->out.vx * sin_60 + chs->out.vy * cos_60 + chs->out.wz * L;
chs->out.whl_spd[2] = -chs->out.vx * cos_30 + chs->out.vy * sin_30 + chs->out.wz * L;

chs->out.whl_spd[0] = chs->out.whl_spd[0] * WHL_MPS2RPM;
chs->out.whl_spd[1] = chs->out.whl_spd[1] * WHL_MPS2RPM;
chs->out.whl_spd[2] = chs->out.whl_spd[2] * WHL_MPS2RPM;
}

正运动学

未完待续

待续...

四麦克纳姆轮轮系

未完待续

待续...

介绍演示

坐标关系

逆运动学

正运动学