全向移动小车运动控制_童心制物优化你的程序,让麦轮底盘的移动更加灵活(初学者向)...

全向移动小车运动控制_童心制物优化你的程序,让麦轮底盘的移动更加灵活(初学者向)...麦克纳姆轮想必各位经常参加比赛的老师和同学们都不陌生 麦轮底盘优秀的机动性的确深受很多人的喜爱 那么关于麦轮的基础知识的科普我就不再细说了 想要了解的可以看这个视频 介绍得还是蛮详细的 https www bilibili com video BV1zE411c7SH from search amp seid

大家好,我是讯享网,很高兴认识大家。

        麦克纳姆轮想必各位经常参加比赛的老师和同学们都不陌生,麦轮底盘优秀的机动性的确深受很多人的喜爱,那么关于麦轮的基础知识的科普我就不再细说了,想要了解的可以看这个视频,介绍得还是蛮详细的

https://www.bilibili.com/video/BV1zE411c7SH?from=search&seid=

        麦轮的基本使用大家应该都了解,我们以最常用的四轮 O-长方形(O-rectangle)分布式麦轮底盘为例子,也就是上面视频中的轮子的安装和分布方式,四个轮子分别为前左,前右,后左,后右,我们用1A 1B 2A 2B来代替这几个轮子:

2b77c5a805727a9b324f753c873f3941.png
讯享网

1A和2A逆时针转,1B和2B顺时针转的时候,底盘前进;

dde53198a013a3dd5927c0736c909016.png

1A和2A顺时针转,1B和2B逆时针转的时候,底盘后退;

07edb560773be72f72996043fc33e163.png

1A和1B顺时针转,2A和2B逆时针转的时候,底盘左横移;

b3450d8f5d53e08229da4748de30b429.png

1A和1B逆时针转,2A和2B顺时针转的时候,底盘右横移;

8f6e19a599e9bfa4a16132ce337e6d5a.png

1A,1B,2A和2B同时逆时针转的时候,底盘沿YAW轴右旋转;

426a82bf6eb37785f7dcd09d13cf2e07.png

1A,1B,2A和2B同时顺时针转的时候,底盘沿YAW轴左旋转;

8fbbcad11b1ef7047ef91a09ca60ea04.png

        今天我们的操控统一按手柄的左摇杆LY控制底盘前进后退,左摇杆LX控制底盘左右横移,右摇杆RX控制底盘左右旋转。

        对应的基本程序是:

99847787c199bee7b6343194dd797fad.png  f6e7dc4b2bb46877197a96af60dcf8ca.png

        这里以马达正功率为顺时针转,负功率为逆时针转为例,同时因为目前我手头只有一块MegaPi主板,一块2.4G接收模块和一个2.4G手柄,所以我只能用mblock3来作程序示例,不过其实mblock3和mblock5基本上编程结构和思路是一样的,除了一些参数不同。这里要特别说一下,mblock3的手柄和马达的数值都是从-255~+255。

        OK,估计这个控制原理各位老师和同学应该是熟记于心,所以我就不在这里水内容了。但是在实际比赛的时候,我确实看到不少底盘有且仅有这几个运动状态,横向、纵向和左右转的这个移动方式。也就是说其程序是直接套用了这几个运动方向的公式,那种横平竖直的机械式移动效果实在是别扭啊。

e47707dc246834c6c0e8e767b7b8d3ab.gif

        而实际上,我们是可以采用手柄的XY轴的返回值来动态实现底盘的八向的全向移动的。

        刚才有说过,手柄的返回值是一个的数值区间,我们可以通过一个程序来查看:

60af2b96d3f12d7e200275f03f87e2f9.png

        当我们把摇杆推到斜方向的时候,会发现数值为0,510,0,-510,这是因为在斜方向的时候,X和Y轴均为最大值,那么显示的结果就是两个值相加。

        好的,接下来,我们可以再进一步了解一下麦克纳姆轮的运动原理和公式,这是我从CSDN上找到的一篇关于麦轮的运动原理与实现,有着非常详细的说明:

https://blog.csdn.net/weixin_/article/details/

        好吧,其实看完上面那篇文章估计有不少人会有和我差不多的感觉,一堆的数学公式和三角函数,看得一脸懵逼。

699bfa9428ea4283fc7238739549eb73.gif

        其实我们只需要明白,麦轮上四个轮子的功率,都通过手柄上的摇杆的X轴数值反馈和Y轴的数值反馈,再经过公式计算赋值给马达的功率就行,也就是说,关键点就是那4个公式:

88531924-7038-eb11-8da9-e4434bdf6706.svg

        然而这4个公式,其实就是我们上面六张图,那6个运动形态的结合。那么接下来我们来进行逐一的分析。

        1.首先,对于所有轮子的功率设置,其实可以用速度v来体现,那么对于机器人纵向移动,前后的功率控制,其实就可以把手柄的左摇杆Y轴数值直接来控制4个马达的旋转

即对应公式

89531924-7038-eb11-8da9-e4434bdf6706.svg

但对应着马达1A,1B,2A,2B是以不同的方向旋转才会产生前进后退的效果,所以这里的程序就应该写成

22daf4f223917e358f69138ba093be9e.png

这时候底盘就有了纵向前进后退的功能

        2.对于机器人横向移动,就可以把手柄左摇杆的X轴数值直接来控制4个马达的旋转

即对应公式

8b531924-7038-eb11-8da9-e4434bdf6706.svg

对应的程序是:

6339d4d43399896df1decf01c592b84a.png

这时候底盘就有了横向左移和右移的功能

        3.对于机器人YAW轴转向移动,就可以把手柄右摇杆的X轴数值直接来控制4个马达的旋转

即对应公式

8d531924-7038-eb11-8da9-e4434bdf6706.svg

        这里的w(a+b)就是一个角速度,简单对于这个底盘来说,就是给出转向速度,我们在前面说过,都用手柄的右摇杆的X轴来实现转向,那么这里就很简单了。

ab04b14a96042061cd0c1335e9849f58.png

这时候底盘就有了绕YAW轴左转和右转的功能

接下来就是把这个公式里所有的模块合到一起,就可以成为我们最终麦轮的控制程序。

88531924-7038-eb11-8da9-e4434bdf6706.svg

对应的程序就是

d9ac9f4ee0b694251a7c46794a2bc24d.png

        好了,这就是最终的麦轮控制程序,只有4行积木块指令。接下来我们看一下它实际运行的效果如何。

033777f322ca295df6b61479cbc8d331.gif

        从视频上看,在我拉动左摇杆到斜方向的时候,底盘可以进行斜方向的移动,而且是可以调整任意角度的。同时底盘的移动速度也是可以通过摇杆拉动的幅度来进行微调的,这样控制起来就得心应手多了。

        最后,秀一段青岛美亚机器人社团的双麦轮底盘的飘移视频,这段视频里的双麦轮机器人也使用了同样的底盘程序控制方法。

        OK,这样就有了控制一个全向移动底盘的感觉了,可以尽情地飙车了,希望这篇文章可以帮助到准备学习和了解麦轮的朋友们。

0f4d6d69421a854b1e6594c9c9faed11.gif

小讯
上一篇 2025-02-19 09:53
下一篇 2025-01-06 20:38

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/33928.html