此篇博客转自本作者在古月居的博客:https://www.guyuehome.com/33978

前言:

大概在大一的时候由于Robocon比赛就开始调试麦克纳姆轮底盘。恰好,最近有个项目需要用到这个,在此重温了下当初做的内容。对麦克纳姆轮底盘的速度分解问题,网上有很多推导已经详细说明,但都是自身坐标系下的。这对执行有些任务是不够的,因此在这里进行推导和总结。另外,总结了使用麦轮底盘进行里程估计的方法。

由于本人比较懒,所以就在接下来的推导中使用手写的笔记。所推导的内容已经在淘宝买的微宏机器人的麦克纳姆轮底盘上进行了验证。

在世界坐标系中进行任务规划,需要定义一个世界参考坐标系{W},紧接着在定义车身的坐标系{B},对于右前方的轮子中心定义为{b}(这里只定义一个轮子,其他轮子道理相同)。具体如下图(图中紫色区域圈出来的麦轮中心实际就为{b}的中心,这里写不下了,所以表述在了旁边。)

逆向运动学:  

可以在世界坐标系中给与一个目标位移速度和偏航角角速度,堆叠起来形成一个向量,那么可以很容易想到将这个任务向量转化到车身坐标系{B}下,这需要一个齐次的矩阵来映射,具体的表述为

可以得到在{B}下的期望速度为V_B。由于每个轮子和车身通过机构以一定几何关系分布,所以麦轮也需要满足这个速度V_B。进一步的,需要将V_B转化到轮子坐标系下,那么以右上角的轮子为例,转化可以表述为

可以的到V_b。定义轮子旋转形成的线速度为V_r,可以很明显的发现V_r没有办法直接表现出V_b,这可以由麦轮中自由维度和驱动维度解决,理论上就是这两个维度速度矢量形成的V_b,但是这里为了转化到V_r上,采用另一种表述方法。当然也可以计算出自由维度和驱动维度的运行速度(但这是没有必要的)。由于麦轮的小轮倾斜α角度为45°,可以得到V_b转换为V_r表示为

最后总结上述的转换可以表达为一个较长的式子,得到车轮的线速度。这是一种逆向运动学。

这里进行补充下前面式子中的旋转矩阵R,可以表示为以下

由于麦轮底盘有四个轮子,那么堆叠上述的关系可以表达为以下简单的式子

这个式子所表述的思想非常的简单。启发的来看,在任意个轮子的时候这种方法同样适用。更加进一步的,这种方法适用于分布式的底盘,这将不仅限于麦克纳姆轮底盘,例如还有全向轮底盘,舵轮底盘(需要在{b}下增加一个旋转角度)也同样适用。所以,从宏观来看,这是一种统一的方法。

另外,许多小伙伴在进阶到一定程度时,都想如何让全向移动底盘可以边跑边转(在满足位移轨迹的前提下,还可以按照指定速率旋转),上述方法提供了参考思路,这点我的学弟们已经验证了有效性。

正向运动学: 

里程估计是正向运动学积分得来的。在每届的Robocon比赛中里程估计(全场定位)都是通过一个两个正交排放的增量式编码器来累计的,这样子的好处就是底盘打滑时仍然可以进行里程估计。然而,有些时候,可能没有额外的设备,因此需要从轮子上的编码器进行里程计算。这点,我在网上找了下几乎没有对此的总结。首先,更加清晰的表述下我们用到的麦轮底盘(这里与最上面的实物图是对应的)

对于麦克纳姆轮底盘的正向运动学,可以由逆向运动学的一般表达式得到。对于微宏机器人的麦克纳姆轮底盘逆向运动学的一般式子可以很容易总结到规律(其他排布的克纳姆轮底盘同样道理),为以下表现形式(速度均为线速度)

进一步的需要将其转化的世界坐标系{W}下,那么在速度矢量前加一个旋转矩阵映射即可。

这是在世界坐标系下的速度矢量,只要对其进行积分即可。

由于微宏机器人的底层代码和硬件都做的非常好,m/s的速度估计非常准确,所以直接添加这部分功能,然后进行测试,实验效果是非常喜人的。代码跑的实时系统FreeRTOS,控制频率为100Hz。为了说明里程累积的准确率,在室内跑 2X8 的矩形路径,7圈后回到起点的定位误差约等于0.25m。

最后需要说下的就是,这种里程估计的方法要求机器人不能打滑。由于麦轮有四个轮子,从机械的角度上来看,他们中不会全部充分着地,维宏机器人在车轴(X方向)中间添加了一个活动铰链,来解决这个问题。还好机械比较稳,不然太大的不平都会是里程累积的严重扰动因素。 最后,车子的重心需要尽量在中间位置,否则前轮或者后轮打滑,都会影响里程。

具体的代码(基于维宏机器人的历程修改的,只添加了一个文件)由于某些原因,晚点放到我的Github上。

具体如果有误,还望指出。

麦克纳姆轮底盘-正反向运动学-里程估计相关推荐

  1. ROS麦克纳姆轮底盘制作(上)

    目录 1.底盘硬件框图 2.麦克纳姆轮模型介绍 2.1 麦克纳姆轮下的运动学模型 2.2 正解运动学模型 2.3 逆解运动学模型 3 底盘软件框架 4 参考资料 在这一个专题中,我们将介绍如何搭建利用 ...

  2. 麦克纳姆轮速度分解计算及里程计计算

    麦克纳姆轮速度分解计算及里程计计算 文章目录 前言 一.速度解算过程 二.里程计计算过程 逆运动学求解速度 总结 前言 麦克纳姆轮在现如今的机器人应用中十分广泛,经我自己的查阅资料和整理,得到下面的解 ...

  3. 麦克纳姆轮小车matlab仿真,学习使用Python控制麦克纳姆轮底盘

    学习使用Python控制麦克纳姆轮底盘 这里小龟给大家分享如何使用Python控制麦克纳姆轮底盘的小龟小车. 首先小伙伴得参考小龟提供的改造手册进行先把小龟小车改造成麦克纳姆轮底盘,假如小伙伴在改造过 ...

  4. 麦克纳姆轮和ROS系统结合实现自主导航避障

    转载请注明出处:麦克纳姆轮和ROS系统结合实现自主导航避障_古道云的博客-CSDN博客_麦克纳姆ros导航 之前做了一个麦克纳姆轮和ROS操作系统结合实现自主导航避障的项目, 虽然中间经历了很多困难, ...

  5. 麦克纳姆轮(万向轮)驱动和玩法

    麦克纳姆轮(万向轮)驱动和玩法 麦克纳姆轮介绍 麦克纳姆轮运动分析及方向确定 麦克纳姆轮安装组合及运动分析 分析错误例子[AAAA] 正确的麦轮分布应该是[ABBA] 麦克纳姆轮的安装位置 安装方法 ...

  6. 【麦克纳姆轮(万向轮)驱动原理及安装方法】

    转载自:https://blog.csdn.net/qq_40374812/article/details/117337556 麦克纳姆轮(万向轮)驱动和玩法 麦克纳姆轮介绍 麦克纳姆轮运动分析及方向 ...

  7. 四轮 控制算法 麦轮_基于麦克纳姆轮的全向移动自主机器人

    龙源期刊网 http://www.qikan.com.cn 基于麦克纳姆轮的全向移动自主机器人 作者:莫然 张进 高淑芝 来源:<山东工业技术> 2017 年第 08 期 摘 要:设计了一 ...

  8. 关于麦克纳姆轮的速度分解,以及多方向控制

    参考文章: [1]李彦文,楼佩煌,楼航飞,翟晶晶.协同搬运系统中的麦克纳姆轮AGV运动控制研究[J].机械制造与自动化,2021,50(06):224-227.DOI:10.19344/j.cnki. ...

  9. 步进电机与直流减速编码电机的优缺点分析 第六届工程训练综合能力竞赛之智能物料搬运机器人的反思-----麦克纳姆轮小车的底盘电机选择--步进电机

    近期刚参加完第六届的全国大学生工程训练综合能力竞赛,发现很多队伍 的麦克纳姆轮小车的底盘电机都选用的步进电机作为动力部分,感到很惊讶, 步进电机还能这么用?  进过一番思考 我觉得步进电机做麦克纳姆轮 ...

最新文章

  1. AMS重要的数据结构解析(一):ActivityRecord
  2. .net framework4.6项目的dll升级后,未找到方法“System.String.GetPathsOfAllDirectoriesAbove”解决
  3. 【深度学习】深入浅出transformer内部结构
  4. 计算机应用办公软件实训报告,办公软件实习报告
  5. 【OpenCV3】旋转矩形(cv::RotateRect)的绘制
  6. 适合新手入门的漏洞调试与分析—CVE-2010-3333
  7. Django(part25)--字段查询
  8. Hibernate HQL 语法大全(上)
  9. 由内省引出JavaBean的讲解
  10. re模块常用修饰符_在c语言中修饰符的用法
  11. CKEditor 5 v19.1.1 发布,新增导出为 PDF 功能
  12. Java基础(四) StringBuffer、StringBuilder原理浅析
  13. [wcf]入门.3.1
  14. C盘满了怎么办?最强清理工具来了
  15. 打印的几种方法(lodop、window.print)
  16. 打开DOSbox时设置指定虚拟路径
  17. 先思索后动笔:论讨论与结论的区别
  18. 察举科目-汉代察举制度的重要环节
  19. 【NOIP practice】BSOJ 3132 卡扎菲 并查集
  20. IT运维工程师要会什么?

热门文章

  1. 机器人操作系统ROS理论与实践
  2. 八分钟项目管理视频教程-专题视频课程
  3. 阿里聚安全攻防挑战赛第三题Android PwnMe解题思路
  4. 费曼、SQ3R、西蒙、 记忆、框架等学习法
  5. wince系统报错异常总结
  6. 金融项目经验之代码安全
  7. java soa是什么_什么是SOA呢
  8. How many ways (记忆化搜索)
  9. 博图V14出现The Automation License Manager Service has not been started!Please start the Service.错误
  10. QT实现CSDN上传资源管理助手Demo之(3)请求上传资源页面并解析