基于Pixhawk与ROS的无人车自主导航(一):底盘驱动与固件配置实战
1. 硬件准备与底盘选型
差速转向无人车的底盘选择直接影响后续控制效果。实验室环境下推荐使用铝合金框架的模块化底盘,这类底盘通常配备两个带编码器的直流减速电机(建议选择12V/300RPM规格),搭配橡胶轮胎和万向轮。我实测过某宝上300元左右的四轮底盘套件,发现电机轴与轮毂的连接件容易松动,后来改用螺丝固定的工业级套件就稳定多了。
Pixhawk飞控的接线是第一个容易踩坑的地方。以Pixhawk 2.4.8为例,主输出接口的1-4号引脚对应电机控制:
- MAIN OUT 1:左轮电机PWM信号(接电机驱动器IN1)
- MAIN OUT 3:右轮电机PWM信号(接电机驱动器IN2)
- MAIN OUT 5/6:可接舵机(差速底盘不需要)
- POWER:必须外接5V/2A以上电源模块
注意:切勿直接连接电机!必须通过电机驱动器(如L298N、DRV8833)中转,否则会烧毁飞控。我曾因偷懒直接接线导致一块Pixhawk冒烟报废。
2. 固件刷写实战
ArduRover固件有多个版本分支,新手建议选择稳定版。最近实测4.2.3版本在室内环境下表现最佳,最新版反而存在GPS漂移问题。刷写步骤:
下载固件:
wget https://firmware.ardupilot.org/Rover/stable-4.2.3/Pixhawk1/ardurover.apj进入Bootloader模式:
- 按住Pixhawk安全按钮(红灯旁)
- 插入USB线
- 待LED变黄松手
Mission Planner刷机:
- 断开当前连接
- 进入"初始设置→安装固件"
- 选择"自定义固件"加载ardurover.apj
- 进度条走完会自动重启
常见刷机故障排查:
- 卡在50%:换USB线(推荐带磁环的短线)
- 提示"签名错误":关闭杀毒软件重试
- 无限重启:可能需要短接BOOT引脚强制恢复
3. 差速底盘关键参数配置
刷完固件后要做三项基础校准(加速度计、罗盘、遥控器),这些在Mission Planner向导界面都有图文指引。重点说下差速转向特有的参数:
| 参数名 | 默认值 | 推荐值 | 说明 |
|---|---|---|---|
| SERVO1_FUNCTION | 33(Throttle) | 37(ThrottleLeft) | 左轮电机控制 |
| SERVO3_FUNCTION | 34(Steering) | 38(ThrottleRight) | 右轮电机控制 |
| SKID_STEER_OUT | 0 | 1 | 启用差速转向模式 |
| MOT_SLEW_RATE | 100 | 30 | 电机加速度限制 |
在参数表中修改后记得点击"写入参数",然后重启飞控生效。有个隐藏技巧:长按参数名可以看到详细说明,比如MOT_SLEW_RATE的悬浮提示会告诉你这个值代表百分比/秒。
4. 遥控器混控与模式设置
普通航模遥控器需要配置三个关键功能:
4.1 通道映射
- 通道1:横滚(控制左右转向差速)
- 通道3:油门(控制前进后退速度)
- 通道5:模式切换(建议用三段开关)
在Mission Planner的"遥控器校准"界面,确保打杆时对应通道的绿条同步移动。如果发现通道反了,可以通过遥控器自身的反向功能调整。
4.2 模式配置
进入"飞行模式"标签页,设置:
- 位置0:HOLD(停车模式)
- 位置1:MANUAL(手动控制)
- 位置2:AUTO(自动导航)
建议给手动模式设置失控保护,在"故障保护"页将FS_THR_ENABLE设为1,这样信号丢失时会自动停车。实测Futaba T8FG遥控器在实验室环境有约50米的可靠控制距离。
5. 解锁机制与安全设置
差速底盘比无人机更危险,务必重视安全设置:
5.1 硬件安全
- 安装急停开关串联在电机供电回路
- 车轮下垫防滑垫防止误移动
- 测试时用扎带固定车身
5.2 软件解锁
两种解锁方式各有适用场景:
- 摇杆组合:适合快速测试(油门中位+方向右偏2秒)
- 地面站按钮:适合调试阶段(Mission Planner界面的"解锁"按钮)
解锁失败常见原因:
- 加速度计未校准(提示"ACCEL NOT HEALTHY")
- 安全开关未按下(红灯常亮表示已解除)
- 遥控器油门未回中(检查通道3的PWM值)
6. ROS通信基础配置
最后一步是建立Pixhawk与ROS的通信链路。推荐使用mavros包:
安装依赖:
sudo apt install ros-noetic-mavros ros-noetic-mavros-extras加载Pixhawk的USB设备:
ls /dev/ttyACM* # 确认设备号 roslaunch mavros apm.launch fcu_url:=/dev/ttyACM0:57600测试话题通信:
rostopic echo /mavros/state # 查看连接状态 rostopic pub /mavros/setpoint_velocity/cmd_vel geometry_msgs/Twist "linear: {x: 0.5}" # 测试速度控制
如果遇到权限问题,记得将用户加入dialout组:
sudo usermod -aG dialout $USER需要特别注意的是,Pixhawk 2.4.8的USB接口在长时间通信后可能掉线,建议改用数传电台或Telem2接口的串口转USB模块。我在实验室环境下测试,数传模块的通信稳定性比直接USB连接高出40%以上。
