RDK X5 与亚博 STM32 运动扩展板串口指令:整车速度,还是单电机速度?

标准 ROS2 工作模式(出厂默认):RDK X5 下发【整车层面的速度方向】,不是四个电机各自的速度。 下发的是 Twist 消息:Vx(横向)、Vy(前后)、ωz(车身旋转角速度),单位 m/s、rad/s,代表整个小车想要怎么运动,完全不涉及 M1/M2/M3/M4 电机转速

完整数据流(标准模式)

  1. RDK X5:导航、避障、视觉、激光雷达,输出整车运动诉求:Vx, Vy, ωz
  2. 通过 USB 串口下发给 STM32 运动扩展板,传递整车速度指令
  3. STM32 内部执行逆运动学算法:把整车的 Vx/Vy/ω,解算换算出 M1 M2 M3 M4 四个电机各自目标转速
  4. STM32 再做减速比换算、编码器 PID 闭环,输出 PWM 信号给电机驱动芯片
  5. 电机转动,机械本体合成整车运动。

关键点:运动学解算放在 STM32 下位机,不在 RDK X5 上层上层不知道底盘是麦克纳姆、阿克曼还是滑移四驱;只下发统一的整车速度更换底盘,RDK X5 的导航代码完全不用修改,只需要修改 STM32 固件内的运动学模型,实现软硬件解耦。

亚博板子同时支持第二种模式:直接下发四个电机速度

板子串口协议预留直接电机控制指令:$spd:M1,M2,M3,M4#,可以直接指定四个电机的速度值,绕过运动学解算模块。

  • 这种模式下:RDK X5 发送的就是每个电机的速度,STM32 不再跑运动学,直接把收到的速度作为电机 PID 目标。
  • 使用场景:调试电机、单独测试每一路电机;正常导航、自主运行不会用这个模式

两种模式对比

表格

工作模式RDK X5 串口发送内容STM32 做什么适用场景
标准整车模式(cmd_vel)整车 Vx/Vy/ωz,小车整体运动期望执行逆运动学,换算 4 个电机速度ROS2 导航、自主避障、遥控器遥控(推荐)
直接电机模式M1/M2/M3/M4 四路电机速度跳过运动学,直接执行电机速度电机调试、单电机测试,不用于导航

通俗举例(麦克纳姆小车)

  1. 标准整车模式 RDK X5 串口指令含义:Vx=0.2m/s,Vy=0,ωz=0,诉求:小车整体向右横移。 👉RDK 不会算出 M1 反转、M2 正转这些值,全部交给 STM32 运动学代码完成

  2. 直接电机模式 RDK 直接发送:M1:-200,M2:200,M3:200,M4:-200。 👉STM32 收到直接控制四个电机,不再做运动学运算;如果数值写错,小车运动完全错乱。

工程上为什么默认选择下发整车速度?

  1. 解耦:上层导航算法不需要关心底盘类型。麦克纳姆、阿克曼、滑移四驱,上层指令格式完全一致,只需要修改 STM32 底层固件。
  2. 实时性:运动学、PID 闭环需要高频毫秒级刷新;RDK X5 是 Linux 系统,非实时,把实时运动解算下沉到 STM32 硬实时 MCU,抖动更小。
  3. 协议标准化:ROS2 标准/cmd_vel话题就是输出整车 Twist 速度,这是移动机器人行业通用接口。

反向数据(STM32 回传给 RDK X5)

STM32 向上回传:四路编码器脉冲、电机实际转速,STM32 还会做正运动学解算,算出真实的Vx,Vy,ωz里程计信息,串口上报给 RDK X5,用于 ROS2 里程计、SLAM 定位。

一句话总结:

正常跑导航时,RDK X5 发整车的速度与方向;

四个电机的各自速度,由 STM32 运动扩展板内部的运动学算法算出来

调试的时候,才可以选择直接下发每个电机的速度。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐