跳转至

15. 坐标系与底盘类型

15.1 学习目标

把“前进、横移、转弯”写成统一的速度变量,并判断本机底盘实际支持哪些自由度。底盘运动模型描述车体速度与各轮速度之间的换算关系。完成后,你应能从一条速度命令推断机器人应该怎样动,也能用轮子反馈解释里程计的方向。

15.2 适用范围

底盘 linear.x linear.y angular.z
差速、四轮两驱、履带 支持 不支持 支持
四驱/滑移转向 支持 不支持 支持
麦克纳姆、全向轮 支持 支持 支持
阿克曼 支持 不支持 通过转向几何实现,不能原地自旋

ROS 版本不影响坐标约定,但具体轮号、正负号和几何参数由底盘固件决定。

15.3 操作前检查

  • 已完成第 10 章底盘类型识别。
  • 轮子编号和前方朝向有清晰标记。
  • 本章公式用于理解底盘运动关系;修改固件中的运动学矩阵前,必须结合轮距、轴距、轮径和轮组安装方向重新验证。

15.4 工作原理

本书采用 ROS 常用机体坐标:x 向前、y 向左、z 向上。地面运动主要用 v_x、v_y 和绕 z 轴的角速度 ω_z。按照右手定则,ω_z > 0 表示从上方看逆时针转动。

部分底盘通信说明会把 CAN 显示方向写成顺时针,这与 ROS 标准约定可能存在表述差异。工程上不能靠文字猜测。应使用低速正命令,观察底盘和 ROS 话题的实际符号,再确认驱动节点是否做过坐标转换。

底盘运动模型有两个方向:

  • 逆运动学把机器人目标速度换成每个轮子的目标速度,用于控制。
  • 正运动学把各轮实际速度换成机器人速度,用于里程计。

差速底盘的逆解可写为:

\[ v_L = v_x - \frac{W}{2}\omega_z,\qquad v_R = v_x + \frac{W}{2}\omega_z \]

其中 W 是左右轮中心间距。麦轮和全向轮还要考虑轮号、滚子方向、轴距与轮距;同一组公式只有在编号和安装方向一致时才成立。

阿克曼底盘用前轮转角形成转弯半径。接近 v_x = 0 时,不能把很大的 ω_z 当成原地旋转命令,否则转角计算会失去物理意义。

15.5 操作步骤

  1. 在底盘俯视图上标出车头、x/y/z 正方向和每个轮号。
  2. 手动转动车轮或用最低速遥控,确认每个编码器正方向。
  3. 列出本机允许的命令组合。例如差速底盘强制 v_y = 0;阿克曼要求非零前进速度才能产生正常转弯。
  4. 查当前固件中的车型选择和运动学函数,记录轮径 r、轮距 W、轴距 H 及单位。
  5. 用一组小数值手算差速左右轮目标速度,再与 OLED、日志或调试变量对照。
  6. 对麦轮或全向轮,只验证当前源码矩阵,不从其他车型复制符号。

15.6 验收标准

  • 配置记录中有车头、坐标轴、轮号和编码器正方向。
  • 正 v_x 代表前进,正/负 ω_z 的实际转向已通过低速测试确认。
  • 不支持横移的车型不会接收非零 v_y 作为有效动作。
  • 差速手算结果与当前底盘实现的左右轮趋势一致。
  • 麦轮/全向轮的轮号和滚子方向与固件矩阵逐项对应。

15.7 故障排查

现象 原因 处理
前进命令导致后退 电机或坐标符号反向 先查车型和编码器方向,不同时改多个符号
原地转向时里程计方向相反 ω_z 转换或 IMU 轴定义不一致 分别检查轮速正解、串口/CAN 转换和 ROS 驱动
麦轮不能直线横移 轮子滚子安装、轮号或矩阵符号错误 按实物逐轮核对
阿克曼收到原地旋转命令后抖动 命令不符合转向结构 在上层限制最小线速度与最大转角

章节导航

上一章:第一次功能验收与问题分层 · 返回本篇 · 下一章:遥控底盘:APP、PS2 与航模遥控