news 2026/4/22 9:36:25

Jetson Orin NX 开发指南(9): MAVROS 的安装、配置与运行

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Jetson Orin NX 开发指南(9): MAVROS 的安装、配置与运行

1. MAVROS简介与Jetson Orin NX适配性

MAVROS是ROS(Robot Operating System)与MAVLink协议之间的桥梁,专门用于无人机和地面站之间的通信。在Jetson Orin NX这类高性能嵌入式平台上部署MAVROS,可以实现与PX4或ArduPilot飞控的高效数据交互。

为什么选择Jetson Orin NX作为无人机机载电脑?这块开发板搭载了NVIDIA最新的Orin系列处理器,算力高达100TOPS,却只有信用卡大小。我在实际项目中测试发现,它不仅能流畅运行MAVROS,还能同时处理视觉SLAM、路径规划等计算密集型任务。

MAVROS的核心功能包括:

  • 实时传输飞控状态数据(位置、姿态、电池电压等)
  • 接收来自地面站的控制指令
  • 支持多种连接方式(USB、串口、网络)
  • 提供丰富的ROS话题和服务接口

2. 安装ROS Noetic与MAVROS

2.1 基础环境准备

Jetson Orin NX默认搭载JetPack 5.1.2,对应Ubuntu 20.04系统。首先需要安装ROS Noetic:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 sudo apt update sudo apt install ros-noetic-desktop-full -y

安装完成后,记得在~/.bashrc中添加环境变量:

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

2.2 MAVROS安装步骤

官方提供了两种安装方式:二进制包和源码编译。对于大多数应用场景,推荐使用APT安装:

sudo apt-get install ros-noetic-mavros ros-noetic-mavros-extras -y

这个命令会安装:

  • mavros核心包
  • 常用插件(如地理围栏、航点任务等)
  • 基础配置文件

安装完成后,检查/usr/share/GeographicLib目录。我第一次安装时发现这个目录是空的,需要补充地理数据集。

3. 地理数据集配置

3.1 自动安装方法

官方提供了自动化脚本:

cd ~ wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo chmod +x ./install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh

这个脚本会自动下载并安装:

  • EGM96高程模型(5'分辨率)
  • EGM96重力模型
  • EMM2015地磁模型

3.2 手动安装方法

如果自动安装失败(有时确实会遇到网络问题),可以手动下载:

  1. 下载egm96-5高程模型:

    wget https://geographiclib.sourceforge.io/geoids/egm96-5.tar.bz2 tar xvjf egm96-5.tar.bz2 -C /usr/share/GeographicLib/
  2. 下载egm96重力模型:

    wget https://geographiclib.sourceforge.io/gravity/egm96.zip unzip egm96.zip -d /usr/share/GeographicLib/
  3. 下载emm2015地磁模型:

    wget https://geographiclib.sourceforge.io/magnetic/emm2015.zip unzip emm2015.zip -d /usr/share/GeographicLib/

最终目录结构应该是:

/usr/share/GeographicLib/ ├── geoids ├── gravity └── magnetic

4. USB连接配置(/dev/ttyACM0)

4.1 启动文件配置

默认的px4.launch文件可能不适合所有场景,建议创建自定义启动文件:

sudo gedit /opt/ros/noetic/share/mavros/launch/px4_ACM0.launch

文件内容如下:

<launch> <arg name="fcu_url" default="/dev/ttyACM0:921600" /> <arg name="gcs_url" default="" /> <arg name="tgt_system" default="1" /> <arg name="tgt_component" default="1" /> <include file="$(find mavros)/launch/node.launch"> <arg name="pluginlists_yaml" value="$(find mavros)/launch/px4_pluginlists.yaml" /> <arg name="config_yaml" value="$(find mavros)/launch/px4_config.yaml" /> <arg name="fcu_url" value="$(arg fcu_url)" /> <arg name="gcs_url" value="$(arg gcs_url)" /> <arg name="tgt_system" value="$(arg tgt_system)" /> <arg name="tgt_component" value="$(arg tgt_component)" /> </include> </launch>

关键参数说明:

  • fcu_url:指定设备节点和波特率(921600是推荐值)
  • tgt_system:飞控系统ID,默认为1

4.2 权限设置与启动

第一次运行通常会遇到权限问题:

sudo chmod 777 /dev/ttyACM0 roslaunch mavros px4_ACM0.launch

如果遇到持续性的权限问题,可以创建udev规则:

sudo gedit /etc/udev/rules.d/99-px4.rules

添加以下内容:

SUBSYSTEM=="tty", ATTRS{idVendor}=="26ac", ATTRS{idProduct}=="0011", MODE="0666"

然后重新加载udev规则:

sudo udevadm control --reload-rules sudo udevadm trigger

5. 串口连接配置(/dev/ttyTHS0)

5.1 硬件连接指南

Jetson Orin NX的40针GPIO接口中:

  • Pin 6 (GND) -> Pixhawk TELEM2 Pin6
  • Pin 8 (UART1_TX) -> Pixhawk TELEM2 Pin3 (RX)
  • Pin 10 (UART1_RX) -> Pixhawk TELEM2 Pin2 (TX)

注意:TX和RX需要交叉连接!

5.2 软件配置

创建串口启动文件:

sudo gedit /opt/ros/noetic/share/mavros/launch/px4_THS0.launch

内容与USB版本类似,只需修改fcu_url:

<arg name="fcu_url" default="/dev/ttyTHS0:921600" />

启动前同样需要设置权限:

sudo chmod 777 /dev/ttyTHS0 roslaunch mavros px4_THS0.launch

5.3 性能对比

在实际测试中:

  • USB连接:IMU数据频率约200Hz
  • 串口连接:IMU数据频率约150Hz

如果对实时性要求高,建议优先使用USB连接。我在四旋翼项目中实测发现,USB连接的延迟比串口低15-20ms。

6. 通信验证与故障排查

6.1 基础检查命令

查看MAVROS节点是否正常运行:

rosnode list | grep mavros

检查话题列表:

rostopic list | grep mavros

测试IMU数据流:

rostopic hz /mavros/imu/data

6.2 常见问题解决

  1. 连接超时

    • 检查飞控是否上电
    • 确认波特率设置一致(建议统一使用921600)
    • 尝试降低波特率(如57600)测试
  2. 数据异常

    rostopic echo /mavros/state

    查看connected字段是否为True

  3. 权限问题: 永久解决方案是创建用户组:

    sudo usermod -a -G dialout $USER

    然后注销重新登录

7. 高级配置技巧

7.1 多飞控连接

如果需要连接多个飞控,可以修改启动文件:

<arg name="tgt_system" default="1" /> <!-- 第一个飞控ID --> <arg name="tgt_component" default="1" />

为每个飞控创建独立的启动文件,指定不同的系统ID。

7.2 自定义消息转发

在px4_config.yaml中可以配置需要转发的话题。例如增加视觉定位数据:

mavros: ftp: true startup_px4_usb_quirk: true odometry: vision: true vision_pose: true

7.3 日志记录配置

启用MAVLink日志记录:

rosrun mavros mavsys mode -c MANUAL rosrun mavros mavsafety arm rosrun mavros mavlog start ~/mavlink_log

8. 实际应用案例

8.1 与PX4配合使用

在QGroundControl中设置参数:

  • MAV_1_CONFIG = TELEM2
  • MAV_1_MODE = On
  • SER_TEL2_BAUD = 921600

8.2 与ROS导航栈集成

典型的数据转换示例:

#!/usr/bin/env python3 import rospy from sensor_msgs.msg import NavSatFix from mavros_msgs.msg import GlobalPositionTarget def gps_callback(data): target = GlobalPositionTarget() target.latitude = data.latitude target.longitude = data.longitude target.altitude = data.altitude pub.publish(target) rospy.init_node('gps_converter') pub = rospy.Publisher('/mavros/setpoint_raw/global', GlobalPositionTarget, queue_size=10) rospy.Subscriber('/gps/fix', NavSatFix, gps_callback) rospy.spin()

8.3 性能优化建议

  1. 关闭不需要的插件(在px4_pluginlists.yaml中注释)
  2. 调整消息频率:
    rosrun mavros mavcmd stream -s 0 -r 50
  3. 使用USB3.0接口(Jetson Orin NX的Type-C接口)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 9:35:28

解放双手,游戏自由:《第七史诗》自动化助手E7Helper完全指南

解放双手&#xff0c;游戏自由&#xff1a;《第七史诗》自动化助手E7Helper完全指南 【免费下载链接】e7Helper 【Epic Seven Auto Bot】第七史诗多功能覆盖脚本(刷书签&#x1f343;&#xff0c;挂讨伐、后记、祭坛✌️&#xff0c;挂JJC等&#x1f4db;&#xff0c;多服务器支…

作者头像 李华
网站建设 2026/4/22 9:35:28

如何轻松下载30+文档平台的免费资源?kill-doc浏览器脚本全攻略

如何轻松下载30文档平台的免费资源&#xff1f;kill-doc浏览器脚本全攻略 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档&#xff0c;但是相关网站浏览体验不好各种广告&#xff0c;各种登录验证&#xff0c;需要很多步骤才能下载文档&#xff0c;该脚本就…

作者头像 李华
网站建设 2026/4/22 9:32:56

Steam创意工坊下载终极解决方案:WorkshopDL完全指南

Steam创意工坊下载终极解决方案&#xff1a;WorkshopDL完全指南 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否曾在Epic Games Store或GOG平台购买了心爱的游戏&#xf…

作者头像 李华
网站建设 2026/4/22 9:29:10

LinkSwift:八大网盘直链下载神器,彻底告别限速烦恼!

LinkSwift&#xff1a;八大网盘直链下载神器&#xff0c;彻底告别限速烦恼&#xff01; 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 /…

作者头像 李华
网站建设 2026/4/22 9:28:34

CTF新手必看:手把手教你用010 Editor破解zip伪加密(附实战案例)

CTF实战&#xff1a;用010 Editor破解ZIP伪加密的完整指南 第一次参加CTF比赛时&#xff0c;我盯着那个要求密码的ZIP压缩包整整半小时——直到队友提醒这可能是伪加密。那种恍然大悟的体验&#xff0c;让我决定写下这篇真正面向新手的实战手册。不同于理论堆砌&#xff0c;我们…

作者头像 李华