麦克纳姆轮(麦轮)原理

一、麦轮原理

麦克纳姆轮:简称麦轮,由轮毂和围绕轮毂的辊子组成。

辊子:没有动力的从动小滚轮。

麦克纳姆轮辊子轴线和轮毂轴线夹角是45度。

A轮(左旋)与B轮(右旋)互为镜像关系

 麦轮在车上的分布:(“外八”,AB对角安装

 地面投影:(“内八”

1.前进:(AB轮可以相互抵消轴向速度,正转:沿辊子轴向上;反转:沿辊子轴向下

2.倒退:(AB轮可以相互抵消轴向速度

3.左移:(A轮反转,B轮正转

4.右移:(A轮正转,B轮反转

4.原地左转掉头:(左前:反转;右前正转;左后:反转;右后:正转。即同侧左:反转;同侧右:正转

5.原地右转掉头:(左前:正转;右前反转;左后:正转;右后:反转。即同侧左:正转;同侧右:反转

6.左前对角B轮:正转,对角A轮:不转

7.右前对角A轮:正转,对角B轮:不转

8.左后对角A轮:反转,对角B轮:不转

9.右后 对角B轮:反转,对角A轮:不转

10.绕前轴中心左转前轴A、B轮:不转;后轴B轮:反转,A轮:正转

11.绕前轴中心右转 前轴A、B轮:不转;后轴B轮:正转,A轮:反转

12.绕后轴中心左转后轴A、B轮:不转;前轴B轮:正转,A轮:反转

13.绕后轴中心右转后轴A、B轮:不转;前轴B轮:反转,A轮:正转

 

运动方向左前——A轮右前——B轮左后——B轮右后——A轮
前进正转正转正转正转
倒退反转反转反转反转
左移反转正转正转反转
右移正转反转反转正转
原地左转掉头反转正转反转正转
原地右转掉头正转反转正转反转
左前不转正转正转不转
右前正转不转不转正转
左后反转不转不转反转
右后不转反转反转不转
绕前轴中心左转不转不转反转正转
绕前轴中心右转不转不转正转反转
绕后轴中心左转反转正转不转不转
绕后轴中心右转正转反转不转不转

 

### STM32 控制小车麦氏通信实现方法 #### 1. 系统架构概述 为了使基于STM32的小车能够通过麦氏(Mecanum Wheel)实现出色的全向运动性能,整个控制系统的设计至关重要。通常情况下,这种类型的机器人底盘会配备四个带有编码器反馈机制的电机来驱动各个方向上的独立子[^2]。 #### 2. 编码器接口配置 对于每个安装有麦氏的电机而言,在硬件连接方面需要考虑的是如何将旋转编码器接入到MCU上用于速度监测以及位置闭环控制。一般做法是利用TIM定时器模块捕捉来自增量式光电编码器A/B相脉冲信号,并据此计算当前转速与位移变化量[^1]。 ```c // 初始化 TIM 输入捕获模式 (假设使用 TIM2) void Encoder_Init(void){ GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_TIM2_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); // 配置 PA0,PA1 作为输入浮空 GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA,&GPIO_InitStruct); htim2.Instance=TIM2; // 设置计数方式为向上/向下双向计数 htim2.Init.CounterMode = TIM_COUNTERMODE_CENTERALIGNED1; ... } ``` #### 3. CAN总线数据交换协议 当涉及到多节点间的信息传递时,则可以采用CAN(Controller Area Network)现场总线标准来进行高效可靠的通讯交互操作。具体来说就是让主控端发送指令给各从属设备(比如不同轴向上的直流无刷马达),后者接收解析后再执行相应动作并向源地址回复状态报告包。 ```c /* 发送消息 */ static void CanTxMessage(CAN_HandleTypeDef *hcan,uint32_t StdId,uint8_t DLC,uint8_t* Data){ CAN_TxHeaderTypeDef TxHeader; uint32_t Mailbox; /* Fill CAN message structure */ TxHeader.StdId = StdId; TxHeader.IDE = CAN_ID_STD; TxHeader.RTR = CAN_RTR_DATA; TxHeader.DLC = DLC; if(HAL_CAN_AddTxMessage(hcan ,&TxHeader,Data,&Mailbox)!=HAL_OK){ Error_Handler(); } } /* 接收回调函数 */ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan){ CAN_RxHeaderTypeDef RxHeader; uint8_t aRxData[8]; if(HAL_CAN_GetRxMessage(hcan,CAN_RX_FIFO0,&RxHeader,aRxData)==HAL_OK){ ProcessReceivedFrame(RxHeader.Identifiers.ExtId,RxHeader.DLC,(uint32_t*)aRxData); } } ``` #### 4. PID算法调优策略 针对实际运行过程中可能出现的位置偏差问题,引入PID控制器有助于提高轨迹跟踪精度和平稳性表现。通过对误差累积项、比例系数Kp、积分时间常数Ti及微分提前参数Td合理设定调整,可有效减少静态偏移现象的发生概率并加快响应速率。 ```matlab function u = pid_controller(e,kp,ki,kd,Ts) % e: error signal % kp ki kd : proportional integral derivative gains respectively. % Ts sampling time. integral_e=integral_e+e*Ts; derivative_e=(e-e_prev)/Ts; u=kp*e+ki*integral_e+kd*derivative_e; e_prev=e; end ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车人——EEA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值