![[具身智能-806]:RDK X5 与亚博 STM32 运动扩展板串口指令:整车速度,还是单电机速度?](http://pic.xiahunao.cn/yaotu/[具身智能-806]:RDK X5 与亚博 STM32 运动扩展板串口指令:整车速度,还是单电机速度?)
RDK X5 与亚博 STM32 运动扩展板串口指令整车速度还是单电机速度标准 ROS2 工作模式出厂默认RDK X5 下发【整车层面的速度方向】不是四个电机各自的速度。 下发的是 Twist 消息Vx(横向)、Vy(前后)、ωz(车身旋转角速度)单位 m/s、rad/s代表整个小车想要怎么运动完全不涉及M1/M2/M3/M4 电机转速。完整数据流标准模式RDK X5导航、避障、视觉、激光雷达输出整车运动诉求Vx, Vy, ωz通过 USB 串口下发给 STM32 运动扩展板传递整车速度指令STM32 内部执行逆运动学算法把整车的 Vx/Vy/ω解算换算出 M1 M2 M3 M4 四个电机各自目标转速STM32 再做减速比换算、编码器 PID 闭环输出 PWM 信号给电机驱动芯片电机转动机械本体合成整车运动。关键点运动学解算放在 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 四路电机速度跳过运动学直接执行电机速度电机调试、单电机测试不用于导航通俗举例麦克纳姆小车标准整车模式RDK X5 串口指令含义Vx0.2m/sVy0ωz0诉求小车整体向右横移。 RDK 不会算出 M1 反转、M2 正转这些值全部交给 STM32 运动学代码完成。直接电机模式RDK 直接发送M1:-200M2:200M3:200M4:-200。 STM32 收到直接控制四个电机不再做运动学运算如果数值写错小车运动完全错乱。工程上为什么默认选择下发整车速度解耦上层导航算法不需要关心底盘类型。麦克纳姆、阿克曼、滑移四驱上层指令格式完全一致只需要修改 STM32 底层固件。实时性运动学、PID 闭环需要高频毫秒级刷新RDK X5 是 Linux 系统非实时把实时运动解算下沉到 STM32 硬实时 MCU抖动更小。协议标准化ROS2 标准/cmd_vel话题就是输出整车 Twist 速度这是移动机器人行业通用接口。反向数据STM32 回传给 RDK X5STM32 向上回传四路编码器脉冲、电机实际转速STM32 还会做正运动学解算算出真实的Vx,Vy,ωz里程计信息串口上报给 RDK X5用于 ROS2 里程计、SLAM 定位。一句话总结正常跑导航时RDK X5 发整车的速度与方向四个电机的各自速度由 STM32 运动扩展板内部的运动学算法算出来。调试的时候才可以选择直接下发每个电机的速度。