麦克纳姆轮运动学分析
是最常见的安装方式
![](https://img2018.cnblogs.com/blog/1054888/201905/1054888-20190515100110142-1096441561.png)
麦轮底盘的正逆运动学模型
以O-长方形的安装方式为例,四个轮子的着地点形成一个矩形。正运动学模型(forward kinematic model)将得到一系列公式,让我们可以通过四个轮子的速度,计算出底盘的运动状态;而逆运动学模型(inverse kinematic model)得到的公式则是可以根据底盘的运动状态解算出四个轮子的速度。需要注意的是,底盘的运动可以用三个独立变量来描述:X轴平动、Y轴平动、yaw 轴自转;而四个麦轮的速度也是由四个独立的电机提供的。所以四个麦轮的合理速度是存在某种约束关系的,逆运动学可以得到唯一解,而正运动学中不符合这个约束关系的方程将无解。
先试图构建逆运动学模型,由于麦轮底盘的数学模型比较复杂,我们在此分四步进行:
①将底盘的运动分解为三个独立变量来描述;
②根据第一步的结果,计算出每个轮子轴心位置的速度;
③根据第二步的结果,计算出每个轮子与地面接触的辊子的速度;
④根据第三部的结果,计算出轮子的真实转速。
一、底盘运动的分解
我们知道,刚体在平面内的运动可以分解为三个独立分量:X轴平动、Y轴平动、yaw 轴自转。如下图所示,底盘的运动也可以分解为三个量:
表示 X 轴运动的速度,即左右方向,定义向右为正;
表示 Y 轴运动的速度,即前后方向,定义向前为正;
表示 yaw 轴自转的角速度,定义逆时针为正。
以上三个量一般都视为四个轮子的几何中心(矩形的对角线交点)的速度。
以上三个量一般都视为四个轮子的几何中心(矩形的对角线交点)的速度。
![](https://pic1.zhimg.com/80/3ce8a6a3875b19fb0000fe05920da1d4_hd.jpg)
二、计算出轮子轴心位置的速度
定义:
为从几何中心指向轮子轴心的矢量;
为轮子轴心的运动速度矢量;
为轮子轴心沿垂直于
的方向(即切线方向)的速度分量;
那么可以计算出:
![\vec{v}=\vec{v_t}+\vec{\omega} \times \vec{r}](https://www.zhihu.com/equation?tex=%5Cvec%7Bv%7D%3D%5Cvec%7Bv_t%7D%2B%5Cvec%7B%5Comega%7D+%5Ctimes+%5Cvec%7Br%7D)
分别计算 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}](https://www.zhihu.com/equation?tex=%5Cbegin%7Bequation%7D%0A%5Cbegin%7Bcases%7D%0Av_x%3Dv_%7Bt_x%7D-%5Comega+%5Ccdot+r_y+%5C%5C%0Av_y%3Dv_%7Bt_y%7D%2B%5Comega+%5Ccdot+r_x+%5C%5C%0A%5Cend%7Bcases%7D%0A%5Cend%7Bequation%7D)
![](https://pic1.zhimg.com/80/99df1225217acf4d3add5d305cc7d700_hd.jpg)
同理可以算出其他三个轮子轴心的速度。
![](https://pic1.zhimg.com/80/2b90eb6fdcab1c67324afa54471be580_hd.jpg)
三、计算辊子的速度
根据轮子轴心的速度,可以分解出沿辊子方向的速度
和垂直于辊子方向的速度
。其中
是可以无视的(因为垂直方向速度对轮子转速没有贡献),而
![\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](https://www.zhihu.com/equation?tex=%5Cvec%7Bv_%5C%7C%7D%3D%5Cvec%7Bv%7D+%5Ccdot+%5Chat%7Bu%7D%3D%28v_x%5Chat%7Bi%7D%2Bv_y%5Chat%7Bj%7D%29%5Ccdot%28-%5Cfrac%7B1%7D%7B%5Csqrt%7B2%7D%7D%5Chat%7Bi%7D%2B%5Cfrac%7B1%7D%7B%5Csqrt%7B2%7D%7D%5Chat%7Bj%7D%29%3D-%5Cfrac%7B1%7D%7B%5Csqrt%7B2%7D%7Dv_x%2B%5Cfrac%7B1%7D%7B%5Csqrt%7B2%7D%7Dv_y)
其中
是沿辊子方向的单位矢量。
![](https://pic4.zhimg.com/80/05324c0f199de5828dbd2246ab6973cb_hd.jpg)
四、计算轮子的速度
从辊子速度到轮子转速的计算比较简单:
![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](https://www.zhihu.com/equation?tex=v_w%3D%5Cfrac%7Bv_%5C%7C%7D%7Bcos+45%5E%5Ccirc%7D%3D%5Csqrt%7B2%7D%28-%5Cfrac%7B1%7D%7B%5Csqrt%7B2%7D%7Dv_x%2B%5Cfrac%7B1%7D%7B%5Csqrt%7B2%7D%7Dv_y%29%3D-v_x%2Bv_y)
根据上图所示的
和
的定义,有
![\begin{equation} \begin{cases} v_x=v_{t_x}+\omega b \\ v_y=v_{t_y}-\omega a \\ \end{cases} \end{equation}](https://www.zhihu.com/equation?tex=%5Cbegin%7Bequation%7D%0A%5Cbegin%7Bcases%7D%0Av_x%3Dv_%7Bt_x%7D%2B%5Comega+b+%5C%5C%0Av_y%3Dv_%7Bt_y%7D-%5Comega+a+%5C%5C%0A%5Cend%7Bcases%7D%0A%5Cend%7Bequation%7D)
结合以上四个步骤,可以根据底盘运动状态解算出四个轮子的转速:
![\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}](https://www.zhihu.com/equation?tex=%5Cbegin%7Bequation%7D%0A%5Cbegin%7Bcases%7D%0Av_%7Bw_1%7D%3Dv_%7Bt_y%7D-v_%7Bt_x%7D%2B%5Comega%28a%2Bb%29+%5C%5C%0Av_%7Bw_2%7D%3Dv_%7Bt_y%7D%2Bv_%7Bt_x%7D-%5Comega%28a%2Bb%29+%5C%5C%0Av_%7Bw_3%7D%3Dv_%7Bt_y%7D-v_%7Bt_x%7D-%5Comega%28a%2Bb%29+%5C%5C%0Av_%7Bw_4%7D%3Dv_%7Bt_y%7D%2Bv_%7Bt_x%7D%2B%5Comega%28a%2Bb%29+%5C%5C%0A%5Cend%7Bcases%7D%0A%5Cend%7Bequation%7D)
以上方程组就是O-长方形麦轮底盘的逆运动学模型,而正运动学模型可以直接根据逆运动学模型中的三个方程解出来,此处不再赘述。
另一种计算方式
「传统」的推导过程虽然严谨,但还是比较繁琐的。这里介绍一种简单的逆运动学计算方式。
我们知道,全向移动底盘是一个纯线性系统,而刚体运动又可以线性分解为三个分量。那么只需要计算出麦轮底盘在「沿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}](https://www.zhihu.com/equation?tex=%5Cbegin%7Bequation%7D%0A%5Cbegin%7Bcases%7D%0Av_%7Bw_1%7D%3D-v_%7Bt_x%7D+%5C%5C%0Av_%7Bw_2%7D%3D%2Bv_%7Bt_x%7D+%5C%5C%0Av_%7Bw_3%7D%3D-v_%7Bt_x%7D+%5C%5C%0Av_%7Bw_4%7D%3D%2Bv_%7Bt_x%7D+%5C%5C%0A%5Cend%7Bcases%7D%0A%5Cend%7Bequation%7D)
当底盘沿着 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}](https://www.zhihu.com/equation?tex=%5Cbegin%7Bequation%7D%0A%5Cbegin%7Bcases%7D%0Av_%7Bw_1%7D%3Dv_%7Bt_y%7D+%5C%5C%0Av_%7Bw_2%7D%3Dv_%7Bt_y%7D+%5C%5C%0Av_%7Bw_3%7D%3Dv_%7Bt_y%7D+%5C%5C%0Av_%7Bw_4%7D%3Dv_%7Bt_y%7D+%5C%5C%0A%5Cend%7Bcases%7D%0A%5Cend%7Bequation%7D)
当底盘绕几何中心自转时:
![\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}](https://www.zhihu.com/equation?tex=%5Cbegin%7Bequation%7D%0A%5Cbegin%7Bcases%7D%0Av_%7Bw_1%7D%3D%2B%5Comega%28a%2Bb%29+%5C%5C%0Av_%7Bw_2%7D%3D-%5Comega%28a%2Bb%29+%5C%5C%0Av_%7Bw_3%7D%3D-%5Comega%28a%2Bb%29+%5C%5C%0Av_%7Bw_4%7D%3D%2B%5Comega%28a%2Bb%29+%5C%5C%0A%5Cend%7Bcases%7D%0A%5Cend%7Bequation%7D)
将以上三个方程组相加,得到的恰好是根据「传统」方法计算出的结果。这种计算方式不仅适用于O-长方形的麦轮底盘,也适用于任何一种全向移动的机器人底盘。
参考 https://zhuanlan.zhihu.com/p/20282234?utm_source=qq&utm_medium=social
转载于:https://www.cnblogs.com/FangLai-you/p/10867791.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)