麦克纳姆轮运动特性分析

2023-05-16

混沌无形

混沌系统是世界本质,无形之中存在规律。机器人智能化发展从线性过渡到混沌,本号将分享机器人全栈技术(感知、规划、控制;软件、机械、硬件等)。

43篇原创内容

公众号

[文末提供原文PDF免费下载(期刊论文版式)]

摘要:本文先描述了麦克纳姆轮的构型及基本特点,接着对单个麦克纳姆轮进行了受力分析,指出沿辊子轴线的静摩擦力为有效力,并在此基础上分析了麦轮线速度和平行于辊子轴线的分速度之间的关系,给出速度分解方程;最后,总结分析了麦克纳姆轮的在实际使用过程中的特点及问题。

01

图片

引言

图片

本为介绍麦克纳姆轮全向移动平台的运动学模型,结果在分析麦克纳姆轮本身的时候发现里面藏着一些有趣的东西,故写此文介绍。(感兴趣的读者可以先点击下图链接感受麦轮平台炫酷运动的视频)

图片

图 1.1 MIT RACECAR (DIY Mecanum Wheels Robot)

我们生活中随处可见的是橡胶轮胎(如图 1.2(a)),但麦克纳姆轮(下文简称麦轮)在生活中并不常见,但这并不影响麦轮平台非常炫酷的运动模式,包括前行、横移、斜行、旋转及其组合等多种运动方式。

如图 1.1所示,麦轮平台就是由四个麦克纳姆轮按照一定规律排布组成的移动平台。麦轮平台具备全方位移动性能的奥秘就在于麦轮及其布置方式。这里先贴一段维基百科对麦克纳姆轮(如图 1.2(b))由来的介绍:

麦克纳姆轮是一种全向轮,因为由在瑞典麦克纳姆公司(Mecanum AB)工作的工程师本特·艾隆(Bengt Erland Ilon,1923~2008)发明而得名,在1972年11月13日在美国专利及商标局注册。[1]

图片

图 1.2 轮. (a)橡胶轮,(b)麦克纳姆轮

02

图片

麦轮构型分析

图片

如图 1.2所示,相较于生活中常见的橡胶轮胎,麦克纳姆轮显得与众不同,从图 1.2(b)中可知,麦轮由轮毂和辊子组成:轮毂是整个轮子的主体支架,辊子则是安装在轮毂上的鼓状物(小轮),两者组成一个完整的大轮。

如图 2.1(a)所示,轮毂轴线与辊子转轴夹角呈45度,理论上该夹角可为任意值,但市面上主流为45度。为满足该几何关系,轮毂边缘采用了折弯工艺,可为辊子的转轴提供安装孔,因此辊子是被动轮

图片

图 2.1 麦克纳姆轮结构示意图. (a)轮结构分析, (b)辊子受力分析. 图中坐标系红色表示_x_轴,绿色表示_y_轴,蓝色表示_z_轴,辊子坐标系用虚线表示,轮毂坐标系用实线表示;黄色箭头表示麦轮和辊子的受力分析;蓝色箭头表示速度方向。

03

图片

单麦轮受力分析

图片

3.1

接触点摩擦力分析

从图 2.1(a)中可知,麦轮外围的辊子是与地面接触的,当麦轮绕轮毂轴转动时,辊子会与地面产生摩擦力F_f_,其作用力方向为轮毂坐标系_y_轴正方向(至关重要)。

具体分析,如图 2.1(b)所示,当轮毂前向(绕轮毂轴线逆时针)转动时,辊子被动与地面接触,而辊子与地面接触可理想化视为点接触,该接触点在“碰到”地面瞬间会受到与其运动方向相反的作用力(和普通轮胎分析相似),接触点的“运动方向”为正向后(图 2.1(b)蓝色箭头),所以摩擦力方向为正向前(图 2.1(b)轮毂坐标系_y_轴正向)

[引用:摩擦力总是朝着阻碍运动的方向]。

3.2

摩擦力分解

在图 2.1(b)中,将地面摩擦力F_f_沿着垂直和平行于辊子轴线方向进行力分解,由于辊子是被动轮,因此会受到垂直于轮毂轴线的分力F⊥作用而被动转动,也说明分力F⊥是滚动摩擦力,对辊子的磨损较大;平行于轮毂轴线的分力F∥也会迫使辊子运动,只不过是主动运动(辊子被轴线两侧轮毂机械限位),所以分力F∥是静摩擦。

总结下来,地面作用于辊子的摩擦力分解为滚动摩擦力和静摩擦力,滚动摩擦力促使辊子转动,属于无效运动;静摩擦力促使辊子相对地面运动(类似于普通橡胶轮胎运动情况),而辊子被轮毂“卡住”,因而带动整个麦轮沿着辊子轴线运动(即轮毂逆时针旋转,运动方向为左上45°;轮毂顺时针旋转,运动方向为右下45°)。

进一步总结:电机输入轮毂的扭矩,一部分被辊子自转“浪费掉”,另一部分形成静摩擦驱动麦轮整体运动;单个麦轮实际的(受力)运动方向为辊子轴向方向,因此改变辊子轴线和轮毂轴线的夹角,就可以改变麦轮实际的(受力)运动方向。

3.3

深入探讨

问题1:为什么垂直于轮毂轴线的分力迫使辊子被动自转是无效运动?

这里对“分力F⊥迫使辊子被动自转是无效运动”做进一步分析,请跟随笔者做两个想象实验:

图片

图 3.1 假想的无效麦轮

①假如辊子轴线和轮毂轴线平行(如图 3.1),轮毂受电机驱动而主动转动,则地面作用于辊子的摩擦力全为滚动摩擦力,滚动摩擦力全部用于驱动辊子飞速转动,但麦轮本身并不会有丝毫的前进或后退。这个现象就如滚子轴承(或行星齿轮),外圈固定,内圈疯狂转动,但被滚子转动给抵消掉了,外圈自身并不会运动。

②我们日常滑轮滑时,如果让两只轮滑鞋方向始终保持平行运动,我们肯定是原地不动的,只能让别人来推动前进,所以我们要让两只滑冰鞋呈一定夹角(外八字)而相对运动,这样我们才能这种“夹角”借力逐渐“提升”速度,这个力就是平行于轮子轴线的分力,这个分力和惯性会使得我们“向前”运动,而垂直于轮子轴线的分力只是促使轮子滚动运动合力中一个部分,并不“推动”我们“向前”运动。

所以垂直于轮毂轴线的分力并不用于主动驱动机器人运动,而是被辊子消耗掉了。

有条件的读者可以做一个简易实验感受下:如图 3.2所示,将麦轮通过联轴器与电机轴相连,并控制电机转动,让麦轮与地面接触,就可感受到麦轮自身是沿着平行于轮毂轴线方向运动。这就是麦轮的独特之处,也是麦轮平台运动模式多变的根本原因。

图片

图 3.2 麦轮运动方向分析(图片来源参考[3])

04

图片

速度分解

图片

如图 4.1所示,将麦轮按照一定排布方式进行配置,就组合为经典的麦轮平台,以机器人几何中心为原点建立坐标系,前向运动方向为_x_轴正方向(红色箭头),与之垂直向左为_y_轴正方向(绿色箭头),_z_轴垂直于纸面向外,满足右手定则。速度定义方式与《两轮差速驱动机器人运动模型及应用分析》相似。

图片图 4.1 运动分解示意图

而要对麦轮平台运动学模型分析的前提是要对麦轮运动的速度进行分析。这里单独将右前轮的子系统拿出来分析,具体如图 4.2所示。

其中,_v_4表示麦轮在麦轮平台中的实际运动速度(即图 4.2中的线速度),但与本节分析的内容关系不大。_v__w_4表示辊子外侧与地面接触点的线速度,也可以理解为麦轮悬空时转动最外侧的麦轮边界的线速度,_w_4表示轮毂转动角速度,_v_∥4表示平行于辊子轴线的速度,也可以理解为单个转动的麦轮在地面上的实际运动速度(即图 3.2中的纸张运动的线速度)。

图片

图 4.2 右前轮速度分解

这里主要分析辊子外侧与地面接触点的线速度(_v__w_4)和平行于辊子轴线的速度(_v_∥4)之间的关系。这是因为平行于辊子轴线的速度是有效速度,而垂直于辊子轴线的速度是被动的无效速度。

需要理解的一个问题是:平行于辊子轴线的速度(_v_∥4)是怎么产生的呢?

基于章节3.2中的分析,将图 4.2视为一套独立系统,电机M4转动带动轮毂转动,假如麦轮悬空未与地面接触(辊子未绕辊子轴线转动),则辊子外侧速度方向与_x_轴平行,其大小表示为

式中,_w_4表示轮毂转动角速度,_R_表示麦轮(等效)半径,即辊子外侧到轮毂轴线的距离,_v__w_4表示辊子外侧与地面接触点的线速度。

但当麦轮与地面接触,情况则会发生变化:摩擦力会使辊子绕辊子轴线转动,电机扭矩提供的主动力则会产生分解,而有效转换的静摩擦力是分力F∥4(参考图 2.1(b)),也就是说分力F∥4是促使麦轮平台有效运动的力(主动),对应速度分解也是一个道理,可理解为假如只有图 4.2中一个麦轮在地面运动,当电机以速度_w_4转动,那么麦轮4将以分速度_v_∥4沿着辊子轴线主动运动,而辊子将自动适应以某一速度绕自身轴线被动旋转,所以平行于辊子轴线的分速度(_v_∥4)与电机转速的关系可表示为

式中,_w_4表示电机输出轴的实际角速度,_R_表示麦轮的实际半径,45度表示辊子轴线与轮毂轴线的夹角,可见改变该夹角便可改变上式的比例关系。

可见,电机输出轴转速与麦轮分速度(_v_∥4)[也是麦轮实际有效运动速度]呈固定比例关系,而垂直于辊子轴线的速度用于提供辊子自身旋转了,也可以认为是被用于滚动摩擦内耗掉了,并没有对麦轮实际运动提供有效推动作用。

因此,可以控制4个麦轮以不同的速度旋转,麦轮平台便可实现不同的运动效果。

05

图片

结论

图片

总结上述分析,麦轮运动过程中存在较大滚动摩擦,辊子的磨损比普通轮胎严重,因此适用于比较平滑的路面,若遭遇粗糙复杂的地形时耐久性要大打折扣。

麦轮旋转角速度与麦轮沿着辊子轴线运动的速度(实际有效速度)是呈正比关系的,且与轮毂轴线和辊子轴线夹角有关,这是麦轮平台速度分解的基础。

此外,由于辊子之间的非连续性,所以麦轮运动过程总存在连续微小震动,这需要设计悬挂机构等辅助机构来消除,也可改变辊子材料属性使得辊子变软来减小震动幅度。且轮毂结构较为复杂,单个麦轮的零部件较多,因此生产制造成本也较高。

后面会持续更新麦轮平台运动模型分析,敬请期待。

(文章仅笔者个人分析,有误请指正,谢谢!)

参考资料

[1] https://en.wikipedia.org/wiki/Mecanum_wheel

[2] Li X , Herberger W , Xu W , et al. Experimental validation of energy consumption model for the four-wheeled omnidirectional Mecanum robots for energy-optimal motion control[C]// 2016 IEEE 14th International Workshop on Advanced Motion Control (AMC). IEEE, 2016.

[3]https://www.bilibili.com/video/BV1gJ411V7sy?from=search&seid=6746914678707764427

福利放送

笔者为小伙伴们整理了期刊论文版式原文PDF,方便收藏和回味

链接:https://pan.baidu.com/s/1K_jcHpW4wlgNa-CrPl_TWQ

提取码:6a0g

若链接失效,可在后台回复关键字:13463C0或发送邮件:Zippen-Huang@outlook.com

延伸阅读

Car-like Robot运动模型及应用分析

四轮驱动(SSMR)移动机器人运动模型及应用分析

履带式机器人运动模型及应用分析

两轮差速驱动机器人运动模型及应用分析

-----------------------------------------------------------------------------

相关声明

1.如果转载本文,文末务必注明:“转自微信公众号:混沌无形”

2.若有侵权,请联系作者

图片

全文完,感谢阅读!!如果觉得写的不错,那就点个赞或者“在看”吧。

混沌无形

混沌系统是世界本质,无形之中存在规律。机器人智能化发展从线性过渡到混沌,本号将分享机器人全栈技术(感知、规划、控制;软件、机械、硬件等)。

43篇原创内容

公众号

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

麦克纳姆轮运动特性分析 的相关文章

  • ROS中发布里程计消息(Odometry)

    目录 1 首先理解里程计是什么 xff1f 2 里程计发布流程3 发布里程计TF变换2 1c 43 43 发布TF变换2 2 python发布TF变换 根据阿克曼转向结构的车辆实现里程计消息的发布 xff0c 本文参考博客如下 xff0c
  • ROS std_msgs/Header 数据含义

    std msgs Header msg消息里数据主要有一下几部分 xff1a uint32 seq time stamp string frame id 分别对这些数据做一个介绍 xff0c 如有错误 xff0c 欢迎批评指正 xff01
  • Carsim中添加路径

    目录 1 新建3D Road 数据库2 设置具体参数3 添加自定义道路信息 利用carsim和simulink联合仿真时 xff0c 需要给定参考轨迹 xff0c 具体设置如下 xff1a 1 新建3D Road 数据库 在Miscella
  • Carsim 2019 Run Now 按钮灰色

    安装carsim后 xff0c Run control with Simulink 模块中的Run Now 和Send to simulink 按钮灰色如下图所示 xff1a 解决办法 xff1a 在License Setting中 xff
  • Ubuntu 添加串口权限

    ubuntu串口添加权限方法 Ubuntu 添加串口权限前言一 添加用户组 xff0c 可长期使用二 给当前终端权限 xff08 单次有效 xff09 1 指定串口2 通用 三 修改文件 Ubuntu 添加串口权限 提示 xff1a 文章写
  • Ubuntu 虚拟机右上角网络连接符号消失

    这里写自定义目录标题 Ubuntu 虚拟机右上角网络连接符号消失解决方案 xff1a Ubuntu 虚拟机右上角网络连接符号消失 Ubuntu 虚拟机右上角网络连接符号消失 xff0c 如下图所示 解决方案 xff1a span class
  • C/C++中局部变量static用法实例

    1 普通局部变量存储于进程栈空间 xff0c 使用完毕会立即释放 xff0c 静态局部变量使用static修饰符定义 xff0c 即使在声明时未赋初值 xff0c 编译器也会把它初始化为0 xff0c 并且静态局部变量存储于进程的全局数据区
  • 嵌入式C语言经典面试题(一)

    1 用预处理指令 define 声明一个常数 xff0c 用以表明1年中有多少秒 xff08 忽略闰年问题 xff09 define SECONDS PER YEAR 60 60 24 365 UL 我在这想看到几件事情 xff1a 1 d
  • 更新Ubuntu内核到最新版本

    想起自己多年前玩Linux的时候知道了两个命令 xff1a sudo apt get update sudo apt get upgrade 以为是能够更新所有软件的 xff0c 后来发现 系统还是不能够更新的 那么 xff0c 系统应该如
  • RK3308 按键Key与LED灯

    硬件原理图 LED指示灯 麦克风阵列子板上使用12颗RGB灯作为效果指示灯 用户可以通过I2C总线配置LED灯驱动IC来是实现不同场景下的灯效 按键Key 麦克风阵列子板上集成五个控制按键 xff0c 分别为 xff1a 控制音量增减的VO
  • if选择结构

    if单选择结构 if双选择结构 if多选择结构 span class token keyword if span span class token punctuation span score span class token operat
  • Windows10下Eclipse+Python环境配置与新项目创建

    最近心血来潮 xff0c 突然想学一下python xff0c 按理说应该不用Eclipse xff0c 但是一想以后还可能会用Java xff0c 那还是装这个 xff0c 然后配置一下环境吧 xff0c 其中也有很多坑 xff0c 希望
  • 理解地址空间和逻辑地址生成

    1 1 地址空间 物理地址 xff1a 硬件 例如内存条 所支持地址空间 xff0c 地址空间的管理由硬件完成 逻辑地址 虚拟地址 xff1a 运行地址所看到的地址空间 xff0c 地址空间是一维的 xff0c 应用程序更加容易访问和管理
  • QT DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x800c000d ()

    使用QT播放音频的时候出现如下错误 DirectShowPlayerService doSetUrlSource Unresolved error code 0x800c000d 原因是url错误
  • 3种蓝牙架构实现方案(蓝牙协议栈方案)

    导言 不同的蓝牙架构可以用在不同的场景中 从而协议帧的架构方案也会不同 转载自 xff1a https www cnblogs com schips p 12293141 html 三种蓝牙架构实现方案 xff08 蓝牙协议栈方案 xff0
  • 驱动遍历句柄表

    xfeff xfeff 驱动遍历句柄表附加第二个方法的反汇编代码 其中还有对其拦截的方式的一些需要HOOK处比如伪造句柄表 因为大量使用硬编码所以此份代码通用性不强一切均在虚拟机XP3下操作 include 34 ntddk h 34 ty
  • Javascript案例:猜数字游戏

    要求 程序随机生成一个1 10之间的数字 xff0c 并让用户输入一个数字 如果大于该数字 xff0c 就提示 xff0c 数字大了 xff0c 继续猜如果小于该数字 xff0c 就提示 xff0c 数字小了 xff0c 继续猜如果等于该数
  • 操作系统之进程 (五) --- 进程、进程实体、PCB...

    文章目录 进程什么叫进程什么叫进程实体进程与进程实体的关系PCB的存储信息与分类 进程的组织方式链接方式索引方式 进程的特征总结感谢 进程 什么叫进程 进程和程序差不多 xff0c 他们有所联系也有所区别 我们以我们熟悉的程序入手 xff0
  • 如何让树莓派默认启动进入图形界面

    设置Raspbian图形启动 当你第一次安装Raspbian系统时 xff0c 确实有一些选项需要你来配置 xff0c 由于匆忙 xff0c 我没有注意到这些 xff0c 只是快速完成屏幕上的选项 如果你遇到了和我一样的情况 xff0c 最

随机推荐

  • ROS与stm32通信

    0 概述 ros和stm32等嵌入式单片机的最大区别在于ros主要用于处理slam 机器视觉 人工智能这种对于算力要求高 xff0c 算法复杂的问题 xff1b 而stm32和arduino等主要用来处理一些边缘事件 xff0c 比如亮个L
  • 硬件仪器的使用

    示波器的使用 用于红外捕捉 xff0c 一开始可以把探头扣在探头补偿的位置 xff0c 显示出一个正常的方波信号5V 1KHz 按下CH1的菜单 xff0c 能够弹出右边的选项 xff0c 注意设置为直流和10X电压 按下触发处的Menu菜
  • pytorch显存越来越多的一个潜在原因-- 这个函数还没有在torch.cuda.Tensor中定义

    最近在用pytorch跑实验 xff0c 有如下操作需要用到 xff08 pytorch版本为0 3 1 xff09 class SpatialFilter nn Module def init self mode 61 True sf r
  • KPI异常检测【一】- 时间序列分解算法

    目录 1 相关概念 2 常见的时间序列 3 时间序列分解 3 1 方法介绍 3 2 经典方法 3 3 Holt Winter 指数平滑 3 4 STL分解 4 异常准则 5 异常检测算法 1 相关概念 1 1 异常 时序异常检测通常形式化为
  • KPI异常检测【三】- 机器学习算法

    目录 1 相关概念 1 1 异常类型 1 2 检测方法 2 点异常检测算法 2 1 基于统计 2 2 基于相似度 2 2 1 基于距离 2 2 2 基于密度 2 2 3 基于聚类 2 2 4 基于树 2 3 基于谱 spectral 3 上
  • 手把手教你如何安装ROS+Gazebo+PX4开发环境(ubuntu18.04 + Melodic)

    参考PX4官网 xff0c 做如下总结 xff1a 1 安装 Ubuntu 43 ROS 步骤省略 xff0c 提前配置好梯子 xff0c 很多安装问题都是网络原因引起的 2 下载并安装PX4源码 git clone https githu
  • ROS+Gazebo+PX4仿真步骤

    本文参考链接 xff1a 入门教程 PX4 Gazebo仿真 知乎 zhihu com 1 参照上一个帖子 手把手教你如何安装ROS 43 Gazebo 43 PX4开发环境 xff08 ubuntu18 04 43 Melodic xff
  • ROS+Gazabo+PX4仿真学习常用网站记录

    1 PX4官网 xff1a PX4 User Guide 中文网站 xff1a https docs px4 io master zh ros mavros custom messages html 2 ROS Wiki xff1a cn
  • 如何订阅(Subscribe)现有功能包节点的话题,介绍实现思路

    我们从github或其他途径获取到的ROS功能包 xff0c 如何快速的加入到自己的工程里边 xff0c 下边介绍一下我实现的思路 1 首先运行功能包 xff0c 利用 rqt graph 命令查看 节点图 xff0c 对功能包的节点和话题
  • PX4仿真时,如何在Gazebo下添加物理环境

    1 安装Gazebo xff0c 步骤略 2 下载安装Gazebo需要的世界模型 xff0c 否则自动安装速度很慢 3 在Ubuntu终端里输入 gazebo xff0c 打开一个空的 Gazebo 界面 4 点击左上方的 insert x
  • 树莓派如何使用串口,树莓派连接pixhawk

    参考链接 xff1a xff08 写的非常详细 xff0c 下述方法亲测有效 xff09 pi 3 How do I make serial work on the Raspberry Pi3 PiZeroW Pi4 or later mo
  • 树莓派备份系统

    使用 rpi backup 脚本进行备份 首先下载该脚本 xff1a git clone https github com nanhantianyi rpi backup git cd rpi backup 用法 xff1a sudo ba
  • Linux和Windows可执行文件的区分

    一些后缀区分 现在PC平台流行的可执行文件格式 xff08 Executable xff09 xff0c 主要有以下两种格式 xff08 COFF xff08 Common file format xff09 格式的变种 xff09 xff
  • 树莓派+ubuntu18.04+ROS-melodic+MAVROS+librealsense+vio+realsense_ros

    目录 一 树莓派安装ubuntu18 04 1 下载ubuntu系统文件 2 将系统文件烧入SD卡 3 强制修改HDMI输出分辨率 xff08 此步骤可忽略 xff09 4 设置wifi xff08 此步骤也可忽略 xff0c 后续连接网线
  • APM+Gazebo 垂起固定翼VTOL软件在环仿真

    APM 43 Gazebo 垂起固定翼VTOL软件在环仿真 1 APM软件环境下载并安装APM固件加入环境变量 2 运行APM仿真3 Gazebo环境安装4 增加VTOL模型5 多机仿真6 使用mavros 1 APM软件环境 参考官网链接
  • 进程间通信的五种方式

    进程间通信的意思就是在不同进程之间传递信息 它是一组编程接口 xff0c 让程序员协调不同进程 xff0c 使能够相互传递消息 IPC目的 1 xff09 数据传输 xff1a 一个进程需要将它的数据发送给另一个进程 xff0c 发送的数据
  • Arduino采集Microzone遥控器信号(ROSMicrozoneBridge)

    关注微信公众号 混沌无形 xff0c 后台回复 xff1a 13462F6 免费获取完整工程源码 xff01 本文采用Arduino mega2560的6个外部中断来采集Microzone接收机的6个通道的PPM信号 xff0c 主要是测量
  • 路径规划之基于优化的规划算法

    关注同名微信公众号 混沌无形 xff0c 阅读更多有趣好文 xff01 原文链接 xff1a 机器人曲线插值拟合算法研究现状简述 xff08 包含原文PDF百度云下载链接 xff09 第三类算法是主要是将多目标多变量多约束耦合的规划模型转化
  • 常见移动机器人多角度对比分析

    混沌无形 混沌系统是世界本质 xff0c 无形之中存在规律 机器人智能化发展从线性过渡到混沌 xff0c 本号将分享机器人全栈技术 xff08 感知 规划 控制 xff1b 软件 机械 硬件等 xff09 43篇原创内容 公众号 文末提供原
  • 麦克纳姆轮运动特性分析

    混沌无形 混沌系统是世界本质 xff0c 无形之中存在规律 机器人智能化发展从线性过渡到混沌 xff0c 本号将分享机器人全栈技术 xff08 感知 规划 控制 xff1b 软件 机械 硬件等 xff09 43篇原创内容 公众号 文末提供原