麦轮的解算(第一部分)

目录

前言

一、麦轮的基本安装

二、单个轮子速度分解

1、单轮向前运动(右上和左下轮)

 2、整车分析

总结

 后续


前言

这篇文章是我在学习单片机控制麦轮运动时写的,因为看了很多文章但是总感觉还是自己总结一下比较好,所以就有了这篇博客。


一、麦轮的基本安装

首先是俯视安装,仔细观察一下麦轮之后发现麦轮其实俯视和透视时是不一样的,因此俯视时看到的轮子左右旋其实和接触地面左右旋(也就是透视)是不同的,也因如此我在第一次安装麦轮的时候出现了问题。其实麦轮有两种安装方法,只要保证对角的轮子左右旋方向相同即可。

 我们在放一张透视图(也就是地面投影图)

二、单个轮子速度分解

1、单轮向前运动(右上和左下轮)

我们先对麦轮有整体的认识,假设麦轮以V的速度在向前旋转,因为辊子(也就是麦轮上的小轮子)的存在我们必须要把速度分解到沿着辊子安装方向和垂直与辊子安装方向,因为辊子会把垂直于辊子的速度抵消掉。

图1


 为了方便下文将会把沿辊子安装的方向称为b方向,垂直与辊子安装方向称为a方向。

图2

 根据图一的分解,我们知道a方向的速度将会被辊子的旋转而抵消,所以这个轮子只会在b方向上起到作用并且V2的速度只有V的二分之根号二倍。

图三

 2、整车分析

此后我们把每个小轮的转速分别成为V~1~、V~2~、V~3~、V~4~,把整车的速度称为V。

我们把V~1~沿着b方向的速度称为V~b1~将沿a方向的速度成为V~a1~。

如图所示实际上右前轮子和左后轮子只对b方向起到了作用,而左前轮子和右后轮子只对a方向起到了作用。

图四

因此我的想法是将左后轮和右前轮看成一个整体他们联合控制b方向的速度,左前轮轮和右后轮看成一个整体他们联合控制a方向的速度。整车的速度就是他们两个方向速度的和速度。

即V~b~=V~b1~=V~b2~

   V~a~=V~a1~=V~a2~他们的和速度即为小车的真实速度。

 图五

 所以如果要实现最终的和速度可以在360度的任何方向和大小只需要控制V~a~和V~b~的大小。

如图列举的是三个不同的速度时候a方向的速度和b方向的速度。

图六

 

总结

所以我们剩下的问题就是知道我们的目标速度方向和大小即V~x~和V~y~如何推算出各个轮子的转速大小。

图七

最后得出结果如果遥控器反馈相应的Vx和Vy那么各个轮子的速度为如下结果。

 

 后续

后续更新麦轮自旋加360度控制、全向轮结算、舵轮结算。

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
麦克纳姆轮机器人通常由三个或四个驱动轮组成,每个驱动轮都由一个电机控制。在控制麦克纳姆轮机器人时,我们需要确定每个电机的速度,以实现所需的运动。以下是一个基于N20电机控制四个麦克纳姆轮机器人的解算方法: 1. 配置每个电机的PWM信号 我们可以通过使用PWM信号来控制每个电机的速度。因此,首先需要配置每个电机的PWM信号。具体来说,我们可以使用与上一个回答中相同的方法来配置STM32的PWM输出。 2. 确定机器人的运动方向和速度 接下来,我们需要确定机器人的运动方向和速度。麦克纳姆轮机器人可以向前、向后、向左、向右和旋转。因此,我们需要在代码中定义一个结构体来表示机器人的速度和方向。例如: ```c typedef struct { float x; // x方向速度 float y; // y方向速度 float r; // 旋转速度 } RobotVelocity; ``` 在这个结构体中,x和y表示机器人在水平面上的速度,r表示机器人的旋转速度。 3. 将机器人速度转换为每个电机的速度 接下来,我们需要将机器人的速度转换为每个电机的速度。具体来说,我们可以将机器人的速度分解为每个电机的速度。对于一个四驱动轮麦克纳姆轮机器人,我们可以使用以下公式计算每个电机的速度: ```c float v1 = x + y + r; float v2 = x - y - r; float v3 = x - y + r; float v4 = x + y - r; ``` 在这个公式中,v1、v2、v3和v4分别表示四个电机的速度,x、y和r分别表示机器人的x方向速度、y方向速度和旋转速度。 4. 将电机速度转换为PWM占空比 最后,我们需要将每个电机的速度转换为相应的PWM占空比。具体来说,我们可以将电机的速度映射到PWM占空比的范围内。例如,假设每个电机的PWM占空比范围为0到1000,我们可以使用以下公式将电机速度转换为PWM占空比: ```c int pwm1 = (int)(v1 * 1000.0 / max_speed); int pwm2 = (int)(v2 * 1000.0 / max_speed); int pwm3 = (int)(v3 * 1000.0 / max_speed); int pwm4 = (int)(v4 * 1000.0 / max_speed); ``` 在这个公式中,pwm1、pwm2、pwm3和pwm4分别表示四个电机的PWM占空比,max_speed表示电机的最大速度。 综上所述,以上就是一个基于N20电机控制四个麦克纳姆轮机器人的解算方法。需要注意的是,具体的代码实现可能会因为硬件平台和机器人设计的不同而有所不同。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值