PX6C USB 连接 MAVROS
本机固定使用 USB 线连接 NUC 与 PX6C / V6C 类飞控。Pixhawk 6C 通过 USB 连接时通常显示为 /dev/ttyACM0。
安装 MAVROS
本教程主路径使用 MAVROS master 分支源码工作空间。NUC 总览中的固定源码仓库表已经把 MAVROS 列为必装项,本页用于确认 MAVROS 工作空间、USB 权限、fcu_url 和连接验证。
主路径:源码工作空间
启动脚本默认从以下工作空间加载 MAVROS,源码固定放在 src/mavros:
~/rosprojects/init_mav/mavros_ws/src/mavros
安装:
mkdir -p ~/rosprojects/init_mav/mavros_ws/src
cd ~/rosprojects/init_mav/mavros_ws/src
git clone https://github.com/mavlink/mavros.git mavros
cd ~/rosprojects/init_mav/mavros_ws
source /opt/ros/noetic/setup.bash
rosdep install --from-paths src --ignore-src -r -y
catkin build
source devel/setup.bash
如果实际源码工作空间不同,需要同步修改 启动脚本与启动顺序 中的 source 路径。
备选:二进制快速验证
二进制包只用于快速验证 MAVROS 是否能连接飞控,不作为本教程最终启动脚本的主路径:
sudo apt update
sudo apt install -y ros-noetic-mavros ros-noetic-mavros-extras ros-noetic-mavros-msgs
无论使用源码还是二进制,都需要安装 GeographicLib 地理数据:
wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh
sudo bash ./install_geographiclib_datasets.sh
配置 USB 权限
把当前用户加入 dialout 组:
sudo usermod -a -G dialout $USER
执行后重启 NUC,或注销后重新登录。
确认飞控设备名
ls /dev/ttyACM* /dev/ttyUSB* 2>/dev/null
dmesg | grep -i "ttyACM\|ttyUSB\|pixhawk"
ls -la /dev/ttyACM* /dev/ttyUSB* 2>/dev/null
成功识别时,PX6C USB 通常是:
/dev/ttyACM0
固定 MAVROS fcu_url
本教程固定使用:
roslaunch mavros px4.launch fcu_url:=/dev/ttyACM0:921600
如果直接修改 px4.launch,对应参数为:
<arg name="fcu_url" default="/dev/ttyACM0:921600" />
补充记录中提到 57600 可用,但本教程为了与启动脚本、参数表保持一致,主路径固定为 921600。
验证 MAVROS 连接
启动:
roslaunch mavros px4.launch fcu_url:=/dev/ttyACM0:921600
检查状态:
rostopic echo /mavros/state
rostopic hz /mavros/state
成功标志:
connected: True
示例:
connected: True
armed: False
guided: False
manual_input: True
mode: "MANUAL"
system_status: 3
检查 IMU 数据:
rostopic echo /mavros/imu/data
有连续数据且数值变化正常,即说明 NUC 与飞控的 MAVROS 基础连接可用。
常见问题
- 如果
/dev/ttyACM0不存在,重新插拔 USB 并检查dmesg。 - 如果权限不足,确认已经加入
dialout并重启。 - 如果 QGC 正在占用同一个 USB 连接,MAVROS 可能无法稳定连接。调试时避免 QGC 和 MAVROS 同时抢占同一飞控串口。