AGV-麦克纳姆轮总结

基础原理:注意这种分解的安装方式,共有4种安装方式

转自:https://blog.csdn.net/zhaoyuaiweide/article/details/75560257

我们来画个受力示意图吧

先来看看前后移动

图中红色实线箭头是车轮向前转产生的摩擦力

蓝色箭头是车轮向后转产生的摩擦力

虚线是分力

于是左边的小车就会向前跑,右边的小车会向后跑

接下来我们画原地旋转


于是左边的小车就顺时针旋转

右边的小车逆时针旋转

让我们再来看看平移


左边的小车向左平移

右边的小车向右平移

接下来看看斜着跑


只要同向转动对角线上两个轮子,

就能斜着跑啦

运动学分解:

参考https://bbs.robomaster.com/thread-3960-1-1.html

速度分解计算:

参考https://blog.csdn.net/banzhuan133/article/details/69229922

里程计:

参考https://blog.csdn.net/ethan_guo/article/details/82781179

向量点乘和叉乘:转自https://blog.csdn.net/dcrmg/article/details/52416832

点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影,有公式:

叉乘:

叉乘几何意义:法向量!

在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。

especially, 在二维空间中,叉乘还有另外一个几何意义就是:aXb等于由向量a和向量b构成的平行四边形的面积。

以下内容为转载:

运动学模型:

以O-长方形的安装方式为例,四个轮子的着地点形成一个矩形。正运动学模型(forward kinematic model)将得到一系列公式,让我们可以通过四个轮子的速度,计算出底盘的运动状态;而逆运动学模型(inverse kinematic model)得到的公式则是可以根据底盘的运动状态解算出四个轮子的速度。

底盘的运动可以用三个独立变量来描述:X轴平动、Y轴平动、yaw 轴自转;四个麦轮的合理速度是存在某种约束关系的,逆运动学可以得到唯一解,而正运动学中不符合这个约束关系的方程将无解。

尝试构建逆运动学模型,分四步进行:

①将底盘的运动分解为三个独立变量来描述;

②根据第一步的结果,计算出每个轮子轴心位置的速度;

③根据第二步的结果,计算出每个轮子与地面接触的辊子的速度;

④根据第三部的结果,计算出轮子的真实转速。

一、底盘运动的分解

底盘运动分解为3个独立变量:

v_{t_x} 表示 X 轴运动的速度,即左右方向,定义向右为正;

v_{t_y} 表示 Y 轴运动的速度,即前后方向,定义向前为正;

\vec{\omega} 表示 yaw 轴自转的角速度,定义逆时针为正。

以上三个量一般都视为四个轮子的几何中心(矩形的对角线交点)的速度。

二、计算出轮子轴心位置的速度

定义:

\vec{r} 为从几何中心指向轮子轴心的矢量;

\vec{v} 为轮子轴心的运动速度矢量;

\vec{v_r} 为轮子轴心沿垂直于 \vec{r} 的方向(即切线方向)的速度分量;

那么可以计算出:
\vec{v}=\vec{v_t}+\vec{\omega} \times \vec{r}  ?wxr??
 

分别计算 X、Y 轴的分量为:

\begin{equation}\begin{cases}v_x=v_{t_x}-\omega \cdot r_y \\v_y=v_{t_y}+\omega \cdot r_x \\\end{cases}\end{equation}

同理可以算出其他三个轮子轴心的速度。

三、计算辊子的速度

根据轮子轴心的速度,可以分解出沿辊子方向的速度 \vec{v_\|} 和垂直于辊子方向的速度 \vec{v_\perp} 。其中 \vec{v_\perp} 是可以无视的(思考题:为什么垂直方向的速度可以无视?),而

\vec{v_\|}=\vec{v} \cdot \hat{u}=(v_x\hat{i}+v_y\hat{j})\cdot(-\frac{1}{\sqrt{2}}\hat{i}+\frac{1}{\sqrt{2}}\hat{j})=-\frac{1}{\sqrt{2}}v_x+\frac{1}{\sqrt{2}}v_y

其中 \hat{u} 是沿辊子方向的单位矢量。

四、计算轮子的速度

从辊子速度到轮子转速的计算比较简单:

v_w=\frac{v_\|}{cos 45^\circ}=\sqrt{2}(-\frac{1}{\sqrt{2}}v_x+\frac{1}{\sqrt{2}}v_y)=-v_x+v_y

根据上图所示的 a 和 b 的定义,有

\begin{equation}\begin{cases}v_x=v_{t_x}+\omega b \\v_y=v_{t_y}-\omega a \\\end{cases}\end{equation}

结合以上四个步骤,可以根据底盘运动状态解算出四个轮子的转速:

\begin{equation}\begin{cases}v_{w_1}=v_{t_y}-v_{t_x}+\omega(a+b) \\v_{w_2}=v_{t_y}+v_{t_x}-\omega(a+b) \\v_{w_3}=v_{t_y}-v_{t_x}-\omega(a+b) \\v_{w_4}=v_{t_y}+v_{t_x}+\omega(a+b) \\\end{cases}\end{equation}

以上方程组就是O-长方形麦轮底盘的逆运动学模型,而正运动学模型可以直接根据逆运动学模型中的三个方程解出来,此处不再

里程计计算:

由上可得:Vy=(V4+V3+V2+V1)/4,Vx=(V4-V3+V2-V1)/4,w=(V4-V3-V2+V1)/(4(a+b)),(v1,v2,v3,v4应该存在某个关系,未推导)

固定短间隔积分Vx,Vy,w即可获得里程计数值。

另一种计算方式

「传统」的推导过程虽然严谨,但还是比较繁琐的。这里介绍一种简单的逆运动学计算方式。

我们知道,全向移动底盘是一个纯线性系统,而刚体运动又可以线性分解为三个分量。那么只需要计算出麦轮底盘在「沿X轴平移」、「沿Y轴平移」、「绕几何中心自转」时,四个轮子的速度,就可以通过简单的加法,计算出这三种简单运动所合成的「平动+旋转」运动时所需要的四个轮子的转速。而这三种简单运动时,四个轮子的速度可以通过简单的测试,或是推动底盘观察现象得出。

当底盘沿着 X 轴平移时:

\begin{equation}\begin{cases}v_{w_1}=-v_{t_x} \\v_{w_2}=+v_{t_x} \\v_{w_3}=-v_{t_x} \\v_{w_4}=+v_{t_x} \\\end{cases}\end{equation}

当底盘沿着 Y 轴平移时:

\begin{equation}\begin{cases}v_{w_1}=v_{t_y} \\v_{w_2}=v_{t_y} \\v_{w_3}=v_{t_y} \\v_{w_4}=v_{t_y} \\\end{cases}\end{equation}

当底盘绕几何中心自转时:

\begin{equation}\begin{cases}v_{w_1}=+\omega(a+b) \\v_{w_2}=-\omega(a+b) \\v_{w_3}=-\omega(a+b) \\v_{w_4}=+\omega(a+b) \\\end{cases}\end{equation}

将以上三个方程组相加,得到的恰好是根据「传统」方法计算出的结果。这种计算方式不仅适用于O-长方形的麦轮底盘,也适用于任何一种全向移动的机器人底盘。

正运动学模型:

This problem, in general,has no solution,since it represents an overdetermined system of simultaneous linear equations. The physical meaning of this is: if four arbitrary rotational velocities are chosen for the four wheels, there is in general no vehicle motion which does not involve some wheel "scrubbing" (slipping) on the floor. However, a matrix [F] which generates a "best fit" least squares solution can be found.

猜你喜欢

转载自blog.csdn.net/fantasysolo/article/details/84304653
今日推荐