机器人实战:调车与开发经验

1.5k 词

来自实际机器人开发和调试的经验总结,涵盖常见问题排查、开发流程和实用技巧。

开发流程

新车部署检查清单

  1. 网口配置:确认工控机与路由器/交换机 IP 在同一网段
  2. CAN 通信candump can0 确认能收到电机数据
  3. IMU 校准:消除零偏
  4. 遥控器配对:DJI 遥控器校准
  5. 自启脚本:确保开机自动启动核心节点

常用自启方式

1
2
3
4
5
6
7
8
9
10
11
12
13
# systemd service 示例
[Unit]
Description=Robot Core Service
After=network.target

[Service]
Type=simple
User=robot
ExecStart=/home/robot/start.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

电机调试

PID 调参经验

  1. 先 P 后 I 最后 D
  2. Kp 从小往大调,直到出现轻微振荡再回退
  3. Ki 消除静差,不宜过大
  4. Kd 从零开始一点一点加

常见电机参数

  • GM6020:云台电机,内置驱动器,CAN 通信
  • 最大力矩计算:$T_{max} = K_t \cdot I_{max}$
  • 最大转速计算:$\omega_{max} = V_{max} / K_e$

IMU 零飘补偿

1
2
3
# 静置状态下采集一段数据求均值
rosbag record /imu/data -O imu_calib.bag --duration 30
# 分析偏置值并写入配置文件

调车工具

rosbag

1
2
3
4
5
rosbag record -a                    # 记录所有话题
rosbag record /topic1 /topic2 # 指定话题
rosbag play my_bag.bag # 回放
rosbag play --clock my_bag.bag # 使用 bag 时间(配合 use_sim_time)
rosbag info my_bag.bag # 查看信息

rqt 工具集

1
2
3
4
5
rqt_graph           # 节点关系图
rqt_plot # 数据曲线
rqt_reconfigure # 动态调参
rqt_console # 日志查看
rqt_tf_tree # TF 树可视化

远程遥控

1
2
3
4
5
6
# SSH 远程连接
ssh robot@192.168.1.100

# 多机 ROS 通信
export ROS_MASTER_URI=http://192.168.1.100:11311
export ROS_IP=192.168.1.101

常见问题排查

症状 可能原因 排查方法
电机不转 CAN 未连接/ID 错误 candump can0 检查数据
云台抖动 PID 参数过大 rqt_plot 观察曲线
TF 报错 坐标系未发布 rosrun tf view_frames
编译报错 依赖缺失 rosdep check
SSH 拒绝 未安装 SSH 服务 sudo apt install openssh-server
GPU 黑屏 驱动问题 sudo prime-select nvidia

实用命令速查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Git 拉取他人分支
git remote add upstream <url>
git fetch upstream
git checkout -b my_branch upstream/their_branch

# CAN 相关
sudo ip link set can0 type can bitrate 1000000
sudo ip link set up can0

# IMU 标定
rosrun imu_calib do_calib

# 相机标定
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.025

# 手眼标定
rosrun easy_handeye easy_handeye