1.前期准备全程退出 Conda 环境Conda 与 ROS2 的 Python 环境存在严重冲突执行所有命令前先运行conda deactivate直到终端提示符前没有(base)。使用官方源优先使用 ROS2 官方 apt 源国内镜像可能存在 ARM64 包缺失问题。内存充足AGX Thor 拥有 128GB 内存无需配置交换空间可放心并行编译。更新系统与ROS2环境# 退出Conda环境必须执行 conda deactivate # 更新系统软件包 sudo apt update sudo apt upgrade -y # 验证ROS2 Jazzy是否正确安装 echo $ROS_DISTRO # 应输出Jazzy # 安装编译工具链 sudo apt install -y build-essential git cmake python3-colcon-common-extensions \ python3-rosdep python3-vcstool python3-pip wget curl # 初始化rosdep如果首次安装时已经执行过下面的命令则可跳过 sudo rosdep init rosdep update相关实用命令Jetson开发必备1查看包的安装状态# 查看单个包的状态 apt show ros-jazzy-nav2-costmap-2d | grep APT-Manual-Installed # 输出 yes 手动安装no 自动安装2手动修改包的安装状态# 将包从手动安装改为自动安装 sudo apt-mark auto ros-jazzy-nav2-costmap-2d # 将包从自动安装改为手动安装 sudo apt-mark manual ros-jazzy-nav2-costmap-2d3安全清理系统不要随意使用apt autoremove特别是在开发环境中很容易误删依# 只删除真正无用的自动安装包 sudo apt autoremove # 清理下载的deb缓存 sudo apt clean2.Navigation2 导航栈核心中的核心Navigation2 是 ROS2 官方推荐的导航框架提供路径规划、避障、行为树等核心能力无人机三维导航基于其扩展实现。Jazzy 中所有 3D 导航消息已整合到标准的nav2_msgs包中包含 VoxelGrid、3D 路径等3D 规划功能通过Navigation2 插件实现无需安装独立包无人机三维导航使用标准 Navigation2 栈 专用规划器插件即可。# 如非首次安装可先清理可能存在的旧版本残留避免依赖冲突 sudo apt remove -y ros-jazzy-navigation2* ros-jazzy-nav2-* sudo apt autoremove -y sudo apt autoclean # 安装完整Navigation2栈包含所有核心模块ros-jazzy-navigation2元包会自动依赖并安装nav2-costmap-2d、nav2-planner、nav2-controller等子包。 sudo apt install -y ros-jazzy-navigation2 ros-jazzy-nav2-bringup ros-jazzy-nav2-msgs ros-jazzy-nav2-common ros-jazzy-nav2-util # 验证安装 ros2 pkg list | grep nav2 # 应输出20个nav2相关包 # 安装无人机专用导航扩展好像有错误 sudo apt install -y ros-jazzy-nav2-3d-msgs ros-jazzy-nav2-3d-planner安装官方演示与测试包必须安装用于验证(显示已经安装过了)Jazzy 版本不再使用turtlebot3-gazebo而是使用新的nav2-minimal-tb演示包专为 Gazebo Harmonic 设计# 安装官方最小Turtlebot演示包自动包含Gazebo Harmonic支持 sudo apt install -y ros-jazzy-nav2-minimal-tb* # 安装RViz2导航可视化插件 sudo apt install -y ros-jazzy-nav2-rviz-plugins3.OctoMap 三维建图与占用栅格OctoMap 是无人机三维导航的标准建图工具将点云数据转换为高效的八叉树占用栅格用于路径规划的避障检测。# 安装OctoMap核心库与ROS2接口 sudo apt install -y ros-jazzy-octomap ros-jazzy-octomap-server ros-jazzy-octomap-msgs ros-jazzy-octomap-ros # 安装点云处理依赖 sudo apt install -y ros-jazzy-pcl-ros ros-jazzy-pcl-conversions libpcl-dev libeigen3-dev # 验证安装 ros2 pkg list | grep octomap # 应输出4个octomap相关包4.无人机专用功能包4.1 MAVROS 飞控通信接口MAVROS 是连接 ROS2 与 PX4/ArduPilot 飞控的标准桥梁实现无人机状态读取、指令发送、传感器数据传输等功能。# 安装MAVROS与MAVLink sudo apt install -y ros-jazzy-mavros ros-jazzy-mavros-extras ros-jazzy-mavlink # 安装地理信息数据库必须执行否则MAVROS无法启动 sudo apt install -y geographiclib-tools sudo geographiclib-get-geoids egm96-5 # 验证安装 ros2 run mavros mavros_node --ros-args -p fcu_url:udp://:14540 # 若终端输出MAVROS started则安装成功按CtrlC退出4.2 Robot Localization 状态估计融合 IMU、GPS、里程计、视觉 SLAM 等多传感器数据提供无人机高精度的位姿估计是导航的基础。sudo apt install -y ros-jazzy-robot-localization # 验证安装 ros2 pkg list | grep robot_localization ros2 interface list | grep robot_localization # 启动EKF扩展卡尔曼滤波节点 ros2 run robot_localization ekf_node --ros-args -p publish_tf:True -p frequency:30.0 -p odom_frame:odom -p base_link_frame:base_link -p world_frame:odom5.仿真环境安装开发测试必备JetPack 7.0 ROS2 Jazzy 默认使用Gazebo Harmonic新一代 Gazebo不再支持 Gazebo Classic。1.1 先清理所有旧版 Gazebo 残留必须执行# 彻底卸载所有旧版Gazebo相关包 sudo apt remove -y ros-jazzy-gazebo* gazebo* libgazebo* sudo apt autoremove -y sudo apt autoclean # 删除可能存在的旧源文件 sudo rm -f /etc/apt/sources.list.d/gazebo*.list1.2 添加 OSRF 官方 Gazebo 源Jetson ARM64 必需ROS 官方源中缺少部分 ARM64 架构的 Gazebo 包必须添加 OSRF 官方源才能获取完整安装# 安装密钥管理工具 sudo apt install -y curl lsb-release gnupg # 添加OSRF官方GPG密钥 sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg # 添加Gazebo稳定源支持ARM64 echo deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] https://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main | sudo tee /etc/apt/sources.list.d/gazebo-stable.list /dev/null # 更新软件包列表 sudo apt update1.3 安装 Gazebo Harmonic 核心与 ROS2 桥接# 只需要安装这两个核心包完全满足PX4仿真和无人机导航需求ros-jazzy-ros-gz自动包含所有Gazebo组件和ROS2桥接,ros-jazzy-gz-ros2-control用于无人机电机控制 sudo apt install -y ros-jazzy-ros-gz ros-jazzy-gz-ros2-control echo export GZ_VERSIONharmonic ~/.bashrc # 将用户个人模型库路径和系统模型库路径添加到环境变量适合日常开发和使用因为它能让你在仿真中同时调用自己下载的模型和系统自带的模型 echo export GZ_SIM_RESOURCE_PATH$HOME/.gz/sim/models:/usr/share/gz/gz-sim8/models ~/.bashrc # 未使用--将Gazebo系统模型库路径和ROS2 Jazzy专用模型库路径添加到环境变量适合服务器部署或纯净的系统环境确保Gazebo只加载系统和ROS自带的标准模型而不加载个人目录下的杂乱模型 echo export GZ_SIM_RESOURCE_PATH/usr/share/gz/gz-sim8/models:/opt/ros/jazzy/share/gz-sim-models/models ~/.bashrc source ~/.bashrc1.4 手动安装 Gazebo 模型库必须执行Gazebo Harmonic 不再通过 apt 包分发模型所有模型都需要从官方 GitHub 仓库下载# 创建Gazebo模型目录 mkdir -p ~/.gz/sim/models # 克隆官方基础模型库约500MB包含常用几何模型和环境 git clone --depth 1 https://github.com/gazebosim/models.git ~/.gz/sim/models/gazebo_models # 克隆PX4专用无人机模型库包含X500四旋翼等所有PX4仿真模型 git clone --depth 1 https://github.com/PX4/PX4-SITL_gazebo.git ~/.gz/sim/models/px4_gazebo_models5.1 安装 Gazebo Harmonic 与 ROS2 接口# 安装Gazebo Harmonic sudo apt install -y ros-jazzy-gazebo-ros-pkgs ros-jazzy-gazebo-ros2-control ros-jazzy-gazebo-dev 正在读取软件包列表... 完成 正在分析软件包的依赖关系树... 完成 正在读取状态信息... 完成 没有可用的软件包 ros-jazzy-gazebo-ros-pkgs但是它被其它的软件包引用了。 这可能意味着这个缺失的软件包可能已被废弃 或者只能在其他发布源中找到 E: 软件包 ros-jazzy-gazebo-ros-pkgs 没有可安装候选 E: 无法定位软件包 ros-jazzy-gazebo-ros2-control E: 无法定位软件包 ros-jazzy-gazebo-dev # 验证安装 gazebo --version # 应输出Gazebo Harmonic 8.0.05.2 安装 PX4 无人机仿真环境PX4 是最常用的开源无人机飞控提供完整的 Gazebo 仿真模型和 SITL软件在环仿真支持。JetPack 7.0 ROS2 Jazzy 推荐使用PX4 v1.15.0而非 v1.14.3v1.15 对 Gazebo Harmonic 有更好的支持。# 安装PX4依赖 sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ python3-jinja2 python3-numpy python3-toml python3-yaml # 克隆PX4源码v1.15.0稳定版支持Gazebo Harmonic cd ~ git clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot git checkout v1.15.0 # 安装PX4依赖 bash ./Tools/setup/ubuntu.sh # 编译SITL仿真Jetson AGX Thor编译约8分钟适用于 PX4 v1.14 及 main 分支,Ubuntu22.04及以后支持的Gazebo版本 make px4_sitl gz_x500 # 验证安装 # 编译完成后会自动启动Gazebo和PX4仿真看到无人机模型则成功 # 按CtrlC退出子模块缺失时的修复git submodule status cd PX4-Autopilot git clone https://github.com/PX4/NuttX.git platforms/nuttx/NuttX/nuttx如果因为网络环境特殊导致镜像也无法使用可以尝试分步克隆将庞大的操作拆解# 1. 先创建文件夹并初始化一个空仓库 mkdir PX4-Autopilot cd PX4-Autopilot git init # 2. 添加远程地址 git remote add origin https://github.com/PX4/PX4-Autopilot.git # 3. 先进行一次浅克隆只下载最新代码不下载历史记录数据量小很多 git fetch --depth 1 origin # 4. 检出主分支 git checkout main # 5. 最后拉取所有子模块PX4 的依赖库 git submodule update --init --recursive核心组件验证# 1. 启动PX4 SITL仿真X500四旋翼 cd ~/PX4-Autopilot make px4_sitl gz_x500 # 2. 新开终端启动MAVROS连接 ros2 launch mavros px4.launch fcu_url:udp://:14540 # 3. 新开终端启动OctoMap服务器 ros2 run octomap_server octomap_server_node --ros-args \ -p frame_id:map -p resolution:0.2 -p base_frame_id:base_link # 4. 新开终端启动RViz2并加载导航配置 rviz2 -d /opt/ros/jazzy/share/nav2_bringup/rviz/nav2_default_view.rviz5.3可选但强烈推荐的功能包功能包用途安装命令RTAB-Map视觉 SLAM无需激光雷达即可建图导航sudo apt install ros-jazzy-rtabmap-rosORB-SLAM3单目 / 双目 / 深度相机 SLAM需源码编译https://github.com/UZ-SLAMLab/ORB_SLAM3BehaviorTree.CPP自主决策行为树开发sudo apt install ros-jazzy-behaviortree-cpp-v3rosbag2数据录制与回放sudo apt install ros-jazzy-rosbag2 ros-jazzy-rosbag2-storage-mcaprviz2-plugins导航可视化插件sudo apt install ros-jazzy-nav2-rviz-pluginsplotjuggler数据可视化与分析sudo apt install ros-jazzy-plotjuggler-ros5.4环境最终验证执行以下命令验证所有核心组件是否正常工作# 1. 启动PX4 SITL仿真 cd ~/PX4-Autopilot make px4_sitl gazebo # 2. 新开终端启动MAVROS ros2 launch mavros px4.launch fcu_url:udp://:14540 # 3. 新开终端启动OctoMap服务器 ros2 run octomap_server octomap_server_node --ros-args \ -p frame_id:map -p resolution:0.1 # 4. 新开终端启动RViz2并加载导航配置 rviz2 -d /opt/ros/jazzy/share/nav2_bringup/rviz/nav2_default_view.rviz如果 RViz 中能看到无人机模型、坐标系和 OctoMap 栅格说明环境搭建成功。6.常用路径规划算法包源码编译以下算法没有官方 ARM64 二进制包需要从源码编译均已验证支持 ROS2 Jazzy 和 Jetson AGX Thor。6.1创建 ROS2 工作空间# 创建工作空间 mkdir -p ~/drone_ws/src cd ~/drone_ws # 初始化工作空间 colcon build --symlink-install # 将工作空间添加到环境变量永久生效 echo source ~/drone_ws/install/setup.bash ~/.bashrc source ~/.bashrc6.2 安装 Nav2 3D Voxel Costmap 插件这是 Navigation2 官方的 3D 体素代价地图插件用于三维环境的避障检测。cd ~/drone_ws/src # 克隆Jazzy兼容版本 git clone https://github.com/ros-navigation/navigation2.git -b jazzy # 只编译3D相关包避免编译整个Navigation2栈 cd ~/drone_ws colcon build --packages-select nav2_voxel_costmap nav2_3d_costmap \ --cmake-args -DCMAKE_BUILD_TYPERelease # 验证安装 ros2 pkg list | grep voxel6.3 安装Fast-Planner 全局路径规划适用于复杂三维环境的快速全局路径搜索常与 EGO-Planner 配合使用全局规划 局部避障。cd ~/drone_ws/src # 克隆经过Jazzy验证的版本 git clone https://github.com/HKUST-Aerial-Robotics/Fast-Planner-ROS2.git # 安装依赖 cd ~/drone_ws rosdep install --from-paths src --ignore-src -r -y # 编译 colcon build --packages-select fast_planner fast_planner_msgs \ --cmake-args -DCMAKE_BUILD_TYPERelease # 验证安装 ros2 pkg list | grep fast_planner6.4 安装EGO-Planner 快速局部路径规划目前无人机领域最常用的局部避障规划算法适合动态环境下的实时路径生成。cd ~/drone_ws/src # 克隆ROS2版本代码 git clone https://github.com/ZJU-FAST-Lab/ego-planner-ros2.git # 安装依赖 cd ~/drone_ws rosdep install --from-paths src --ignore-src -r -y # 编译Jetson支持多线程编译 colcon build --packages-select ego_planner ego_planner_msgs \ --cmake-args -DCMAKE_BUILD_TYPERelease # 验证安装 ros2 pkg list | grep ego_planner