问题分析
键盘控制正常但校准/导航卡顿,说明底盘硬件和基础通信没问题,问题出在控制参数或反馈回路上。
排查步骤
检查校准参数配置
# 查看校准节点的参数配置
ros2 param dump /calibrate_angular
# 或查看 launch 文件中的参数
find /opt/tros -name "*calibrate*" -type f | grep -E "\.(py|yaml|launch)"
重点关注:
angular_speed/rotational_velocity- 角速度是否过大pid相关参数 - P/I/D 值是否合适timeout- 超时时间设置
降低导航速度测试
# 修改 nav2 参数文件(通常在 ~/dev_ws/src/yahboomcar_ws/ 或 /opt/tros/share/)
# 查找并修改以下参数:
# - max_rotational_vel (最大旋转速度)
# - min_rotational_vel (最小旋转速度)
# - rot_velocity_overshoot (旋转超调)
# 临时测试:将角速度降到 0.3 rad/s 以下
检查 IMU 数据
# 查看 IMU 话题是否正常发布
ros2 topic list | grep imu
ros2 topic echo /imu/data --once
# 检查 IMU 频率
ros2 topic hz /imu/data
正常频率应 ≥ 50Hz,如果频率过低或有延迟,会导致控制卡顿。
检查串口通信
# 查看底盘串口连接
ls -l /dev/ttyUSB*
# 检查串口数据收发
ros2 topic echo /wheel_odom # 里程计话题
ros2 topic hz /wheel_odom
如果里程计频率不稳定,可能是:
- 串口波特率不匹配
- 电源供电不足(转弯时电流增大)
查看节点日志
# 运行校准时,新开终端查看日志
ros2 run yahboomcar_bringup calibrate_angular
# 另一终端查看具体节点日志
ros2 node list
ros2 log info <节点名>
常见解决方案
| 问题 | 解决方案 |
|---|---|
| 角速度过大 | 将 max_rotational_vel 降至 0.3~0.5 rad/s |
| PID 参数过激 | 减小 P 值,增大 D 值 |
| IMU 频率低 | 检查 IMU 驱动,确认供电稳定 |
| 电源不足 | 使用独立电源给底盘供电(≥2A) |
| 串口延迟 | 检查波特率配置,确认与底盘固件匹配 |
建议操作顺序
- 先降低角速度参数测试(最快验证)
- 检查 IMU 和里程计频率
- 查看校准日志找具体报错
- 如仍无法解决,提供以下信息方便进一步排查:
cat /etc/version系统版本- 校准时的完整日志输出
- IMU 和里程计的频率数据
参考社区资源:
- 20届智能车备赛指南 - 包含小车调试经验
- RDK X5 小车巡线避障 - 类似底盘控制问题
建议将排查结果和日志补充到原帖,方便社区持续跟进。