跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
C++AI算法

Jetson Orin NX + Fast-LIO2 自主无人机完整部署方案

Jetson Orin NX 平台结合 Fast-LIO2 算法构建自主飞行四旋翼无人机系统。涵盖实时 SLAM 定位、A*全局路径规划及势场法动态避障。硬件配置包括 Livox MID360 激光雷达与 PX4 飞控。软件基于 ROS2 Humble 框架,实现点云处理、里程计发布及 MAVLink 通信。环境配置涉及 Ubuntu 22.04 初始化、依赖库安装及工作空间搭建。提供关键模块源码示例、启动脚本及常见问题排查指南,确保系统稳定运行于边缘计算设备。

信号故障发布于 2026/4/5更新于 2026/7/2444 浏览

Jetson Orin NX + Fast-LIO2 自主无人机完整部署方案

一、系统概述

1.1 项目背景

在自主无人机领域,实现高精度定位和自主飞行一直是重要研究课题。本项目结合最新的 SLAM 算法(Fast-LIO2)、高效的路径规划和实时避障,在 Jetson Orin NX 这个边缘计算平台上实现了完整的自主飞行系统。

1.2 核心特性
  • 实时 SLAM 定位 - Fast-LIO2 算法,100Hz 频率,<2% 漂移
  • 自主路径规划 - A*算法实现的全局路径规划,1-5Hz
  • 动态避障 - 势场法实现实时避障,<200ms 反应时间
  • PX4 集成 - 通过 MAVLink 高效通信与飞控集成
  • ROS2 框架 - 完整的中间件和通信栈支持
1.3 系统性能指标
指标数值说明
SLAM 频率100Hz实时定位更新速率
定位精度<2%累积漂移率
处理延迟30-40ms点云到输出
最大速度2-3 m/s自主飞行速度
续航时间15-20 分钟典型任务
CPU 占用60-70%Orin NX 利用率
避障反应<200ms障碍物检测到避开

二、硬件配置

2.1 核心硬件清单
├─ 计算单元 │ ├─ Jetson Orin NX 16GB (Ubuntu 22.04) │ ├─ 冷却风扇 │ └─ NVMe SSD 256GB+ │ ├─ 飞控系统 │ ├─ PX4 飞控板 (Pixhawk 4) │ ├─ GPS/GNSS 模块 │ └─ 遥测模块 (433MHz/3DR) │ ├─ 传感器系统 │ ├─ Livox MID360 激光雷达 (主传感器) │ ├─ IMU (集成在飞控) │ ├─ 气压计 (集成在飞控) │ └─ 光流传感器 (可选) │ ├─ 无人机平台 │ ├─ 四轴机体 │ ├─ 4×无刷电机 │ ├─ 电调 (ESC) │ ├─ 锂电池 │ └─ 螺旋桨 │ └─ 通信模块 ├─ USB-C 线缆 ├─ UART 转 USB 适配器 └─ USB 集线器 (有源)
2.2 硬件连接拓扑

UART 921600bps USB 3.0 MAVLink 🛩️ PX4 Flight Controller Pixhawk 4 💻 Jetson Orin NX 16GB Ubuntu 22.04 + ROS2 🔴 Livox MID360 Laser Lidar 📡 Telemetry Module 433MHz/3DR

2.3 关键参数
连接接口参数备注
Orin → MID360USB 3.05Gbps使用有源集线器
Orin → PX4UART1921600 bpsTTL 电平,不可接 5V
PX4 → 电机PWM50Hz通过 ESC 驱动
PX4 ↔ GPSUART238400 bps可选
PX4 ↔ 指南针I2C400kHz可选

三、软件架构

3.1 系统三层架构
graph TB subgraph Decision["🎯 Decision & Planning Layer"] PathPlanning["📍 Path Planning<br/>A* / RRT / Dijkstra"] LocalAvoid["🚧 Obstacle Avoidance<br/>Potential Field"] end subgraph Navigation["🧭 Navigation & Control Layer"] SLAM["🗺️ SLAM Fast-LIO2<br/>Localization & Mapping<br/>100Hz"] Controller["⚙️ PID Controller<br/>Trajectory Tracking"] end subgraph Hardware["🔧 Hardware Interface Layer"] PX4Driver["🛩️ PX4 (MAVLink)<br/>Firmware Interface"] LivoxDriver["📡 Livox Driver<br/>MID360 SDK"] end Decision --> Navigation Navigation --> Hardware SLAM -.->|Odometry| PathPlanning SLAM -.->|Odometry| LocalAvoid PathPlanning -.->|Global Path| Controller LocalAvoid -.->|Avoid Velocity| Controller Controller -.->|Control Command| PX4Driver style Decision fill:#fff9c4 style Navigation fill:#c8e6c9 style Hardware fill:#bbdefb
3.2 数据流处理

Feedback 🔴 MID360 100Hz 📡 Livox Driver ☁️ Point Cloud /livox/lidar 🗺️ Fast-LIO2 100Hz 📍 Odometry /fastlio2/odometry 📍 Path Planning 1-5Hz 🛣️ Global Path 🚧 Local Planner 20Hz 👁️ Obstacle Detect ⬆️ Avoid Velocity 🎛️ Decision Fusion ➡️ Final Command 🎬 RViz Visualize

四、环境配置

4.1 Jetson Orin NX 初始化(5 分钟)
# 1. 系统更新
sudo apt update && sudo apt upgrade -y
# 2. 安装基础开发工具
sudo apt install -y build-essential cmake git curl wget python3-dev python3-pip libssl-dev libopencv-dev
# 3. 增加交换空间(重要!)
sudo fallocate -l 12G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 4. 验证 CUDA
nvcc --version
nvidia-smi

Tip: Orin NX 内存有限,增加交换空间是编译大型项目的必要步骤。

4.2 ROS 2 Humble 安装(10 分钟)
# 1. 添加 ROS2 源
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | sudo apt-key add -
echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2-latest.list > /dev/null
# 2. 安装 ROS 2 Humble
sudo apt update
sudo apt install -y ros-humble-desktop
# 3. 配置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 4. 验证安装
ros2 --version
4.3 核心依赖库安装(15 分钟)
# PCL - 点云库
sudo apt install -y libpcl-dev pcl-tools ros-humble-pcl-ros
# Eigen - 线性代数
sudo apt install -y libeigen3-dev
# OpenCV - 计算机视觉
sudo apt install -y libopencv-dev opencv-data
# YAML - 配置文件处理
sudo apt install -y libyaml-cpp-dev
# Ceres Solver - 优化库(可选但推荐)
cd ~/workspace
git clone https://github.com/ceres-solver/ceres-solver.git
cd ceres-solver && mkdir build && cd build
cmake .. -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF
make -j$(nproc)
sudo make install
4.4 创建 ROS2 工作空间
# 创建工作空间
mkdir -p ~/uav_ws/src
cd ~/uav_ws
# 初始化工作空间
colcon build --symlink-install
# 配置环境
echo "source ~/uav_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

五、关键模块部署

5.1 Fast-LIO2 SLAM 部署
5.1.1 源码编译
cd ~/uav_ws/src
git clone https://github.com/hku-mars/Fast-LIO2.git
# 编译 Fast-LIO2
cd ~/uav_ws
colcon build --packages-select fast_lio2 --cmake-args -DCMAKE_BUILD_TYPE=Release
# 验证
ros2 pkg list | grep fast_lio2
5.1.2 MID360 配置文件

创建 ~/.ros/fast_lio2_mid360.yaml:

common:
  lidar_type: 1 # 1=Livox
  time_sync_en: false
  imu_en: true
  scan_pub_en: true
lidar:
  lidar_cov: 0.03 # 激光雷达噪声
  blind: 0.5 # 盲点距离 (m)
imu:
  gyr_cov: 0.1 # 陀螺仪噪声
  acc_cov: 0.1 # 加速度计噪声
  b_gyr_cov: 0.0001 # 偏差协方差
  b_acc_cov: 0.0001
mapping:
  res_mean_size: 0.05 # 体素大小
  cube_len: 200 # 地图范围
  max_cov: 100.0
  min_cov: 0.001
5.1.3 启动命令
# 启动 MID360 驱动
ros2 launch livox_ros2_driver livox_ros2_driver.launch.py
# 启动 Fast-LIO2(新终端)
ros2 run fast_lio2 fastlio2_node --ros-args -p config_file:=~/.ros/fast_lio2_mid360.yaml
# 验证输出(第三个终端)
ros2 topic hz /fastlio2/odometry # 预期:100Hz
5.2 路径规划模块
5.2.1 A*算法实现核心
// src/path_planner.cpp
#include<rclcpp/rclcpp.hpp>
#include<nav_msgs/msg/path.hpp>
#include<sensor_msgs/msg/point_cloud2.hpp>
#include<queue>
#include<map>

class PathPlanner : public rclcpp::Node {
public:
  PathPlanner() : Node("path_planner") {
    // 初始化订阅和发布
    cloud_sub_ = this->create_subscription<sensor_msgs::msg::PointCloud2>("/fastlio2/cloud_registered", 10, std::bind(&PathPlanner::cloud_callback, this, std::placeholders::_1));
    path_pub_ = this->create_publisher<nav_msgs::msg::Path>("/planned_path", 10);
  }
  nav_msgs::msg::Path plan_path(const geometry_msgs::msg::Point& start, const geometry_msgs::msg::Point& goal) {
    // A*算法实现
    std::priority_queue<Node> open_set;
    std::map<std::string, Node> closed_set;
    // ... 完整的 A*实现 ...
    return path;
  }
private:
  rclcpp::Subscription<sensor_msgs::msg::PointCloud2>::SharedPtr cloud_sub_;
  rclcpp::Publisher<nav_msgs::msg::Path>::SharedPtr path_pub_;
  void cloud_callback(const sensor_msgs::msg::PointCloud2::SharedPtr msg) {
    // 更新占用网格
  }
};
5.2.2 启动配置
# launch/path_planning.launch.py
import os
from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
  return LaunchDescription([
    Node(
      package='uav_autonomous_flight',
      executable='path_planner',
      name='path_planner',
      parameters=[{'planning_rate': 1.0, 'goal_tolerance': 0.1, 'grid_resolution': 0.2}],
      output='screen'
    ),
  ])
5.3 避障模块
5.3.1 势场法避障
// src/local_planner.cpp - 关键部分
void LocalPlanner::compute_avoidance_velocity() {
  // 1. 提取障碍物
  std::vector<geometry_msgs::msg::Point> obstacles = extract_obstacles(latest_cloud_);
  // 2. 计算排斥力
  double force_x = 0.0, force_y = 0.0;
  for(const auto& obs : obstacles) {
    double dist = std::hypot(obs.x, obs.y);
    if(dist < COLLISION_THRESHOLD) {
      double repulsion = (COLLISION_THRESHOLD - dist) / COLLISION_THRESHOLD;
      force_x -= repulsion * std::cos(std::atan2(obs.y, obs.x));
      force_y -= repulsion * std::sin(std::atan2(obs.y, obs.x));
    }
  }
  // 3. 输出避障速度
  geometry_msgs::msg::Twist cmd_vel;
  cmd_vel.linear.x = force_x;
  cmd_vel.linear.y = force_y;
  cmd_vel_pub_->publish(cmd_vel);
}

六、系统集成

6.1 完整启动脚本
#!/bin/bash
# launch_autonomous_flight.sh
source ~/uav_ws/install/setup.bash
echo "Starting UAV Autonomous Flight System..."
# 终端 1: MID360 驱动
gnome-terminal -- bash -c "ros2 launch livox_ros2_driver livox_ros2_driver.launch.py; bash" &
sleep 2
# 终端 2: Fast-LIO2
gnome-terminal -- bash -c "ros2 launch fast_lio2 mid360_config.launch.py; bash" &
sleep 3
# 终端 3: MAVROS (PX4 通信)
gnome-terminal -- bash -c "ros2 launch mavros apm.launch fcu_url:=/dev/ttyTHS1:921600; bash" &
sleep 2
# 终端 4: 路径规划和避障
gnome-terminal -- bash -c "ros2 launch uav_autonomous_flight autonomous_flight.launch.py; bash" &
# 终端 5: RViz 可视化
gnome-terminal -- bash -c "rviz2 -d $(ros2 pkg prefix uav_autonomous_flight)/rviz/config.rviz; bash" &
echo "All modules started!"
6.2 系统健康检查
#!/bin/bash
# check_system.sh
echo "=== UAV System Health Check ==="
# 检查节点
echo "[1] Active Nodes:"
ros2 node list | tail -10
# 检查话题
echo "[2] Key Topics:"
echo " - SLAM: $(ros2 topic hz /fastlio2/odometry 2>/dev/null | head -1)"
echo " - LiDAR: $(ros2 topic hz /livox/lidar 2>/dev/null | head -1)"
# 检查系统资源
echo "[3] System Resources:"
free -h | grep Mem
nvidia-smi --query-gpu=memory.used,memory.total --format=csv,nounits
# 检查 PX4 状态
echo "[4] PX4 Status:"
ros2 topic echo /mavros/state -n 1 | grep mode
echo "=== Check Complete ==="

七、常见问题

问题 1: Fast-LIO2 运行缓慢(频率不稳定)

症状: ros2 topic hz /fastlio2/odometry 显示频率波动大 原因:

  • Orin NX CPU 负载过高
  • ROS 2 中间件配置不优化 解决方案:
# 1. 启用最高性能模式
sudo nvpmodel -m 0
sudo jetson_clocks
# 2. 使用高效的 DDS 实现
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
# 3. 关闭不必要的发布
# 在 fast_lio2 配置文件中:
# feat_pub_en: false
# dense_publish_en: false
问题 2: MID360 无法连接

症状: lsusb 看不到 MID360 设备 解决方案:

# 1. 检查 USB 设备
lsusb | grep -i livox
# 2. 检查 USB 权限
sudo usermod -a -G dialout $USER
newgrp dialout
# 3. 重新插拔设备
# 检查 udev 规则
ls /etc/udev/rules.d/ | grep -i livox
# 4. 测试连接
ros2 launch livox_ros2_driver livox_ros2_driver.launch.py
问题 3: PX4 通信失败

症状: MAVROS 无法连接 PX4 原因: 波特率设置不匹配或权限问题 解决方案:

# 1. 验证波特率
stty -F /dev/ttyTHS1 921600
# 2. 检查 UART 权限
ls -l /dev/ttyTHS1
# 3. 在 QGroundControl 中验证 PX4 波特率设置
# 应设为 921600 bps
# 4. 测试连接
ros2 launch mavros apm.launch fcu_url:=/dev/ttyTHS1:921600
问题 4: 内存泄漏导致系统崩溃

症状: 运行时间越长,可用内存越少 解决方案:

# 1. 减少点云缓冲
# fast_lio2 配置中:cube_len: 100
# 从 200 改为 100
# 2. 优化 ROS 2 QoS
# 创建 qos_config.yaml 并在 launch 中引用
# 3. 定期监控
watch -n 1 'free -h'

八、参考资源

8.1 官方文档
项目链接说明
Fast-LIO2https://github.com/hku-mars/Fast-LIO2核心 SLAM 算法
Livox SDKhttps://github.com/Livox-SDK/Livox-SDK2激光雷达驱动
ROS 2https://docs.ros.org/en/humble/中间件框架
PX4https://docs.px4.io飞控系统
Jetsonhttps://developer.nvidia.com/jetson硬件平台
8.2 推荐论文
  1. Fast-LIO2: 'Fast Direct LIO SAM'
    • 关键贡献:紧耦合的 SLAM 系统,无需预扫描
  2. 路径规划: 'Optimal RRT-based Motion Planning'
    • 关键贡献:高效的采样算法
  3. 避障: 'Obstacle Avoidance using Artificial Potential Fields'
    • 关键贡献:实时避障方法

声明:本文仅供学习和研究使用。实际部署请确保遵守相关法律法规和安全规范。

目录

  1. Jetson Orin NX + Fast-LIO2 自主无人机完整部署方案
  2. 一、系统概述
  3. 1.1 项目背景
  4. 1.2 核心特性
  5. 1.3 系统性能指标
  6. 二、硬件配置
  7. 2.1 核心硬件清单
  8. 2.2 硬件连接拓扑
  9. 2.3 关键参数
  10. 三、软件架构
  11. 3.1 系统三层架构
  12. 3.2 数据流处理
  13. 四、环境配置
  14. 4.1 Jetson Orin NX 初始化(5 分钟)
  15. 1. 系统更新
  16. 2. 安装基础开发工具
  17. 3. 增加交换空间(重要!)
  18. 4. 验证 CUDA
  19. 4.2 ROS 2 Humble 安装(10 分钟)
  20. 1. 添加 ROS2 源
  21. 2. 安装 ROS 2 Humble
  22. 3. 配置环境变量
  23. 4. 验证安装
  24. 4.3 核心依赖库安装(15 分钟)
  25. PCL - 点云库
  26. Eigen - 线性代数
  27. OpenCV - 计算机视觉
  28. YAML - 配置文件处理
  29. Ceres Solver - 优化库(可选但推荐)
  30. 4.4 创建 ROS2 工作空间
  31. 创建工作空间
  32. 初始化工作空间
  33. 配置环境
  34. 五、关键模块部署
  35. 5.1 Fast-LIO2 SLAM 部署
  36. 5.1.1 源码编译
  37. 编译 Fast-LIO2
  38. 验证
  39. 5.1.2 MID360 配置文件
  40. 5.1.3 启动命令
  41. 启动 MID360 驱动
  42. 启动 Fast-LIO2(新终端)
  43. 验证输出(第三个终端)
  44. 5.2 路径规划模块
  45. 5.2.1 A*算法实现核心
  46. 5.2.2 启动配置
  47. launch/path_planning.launch.py
  48. 5.3 避障模块
  49. 5.3.1 势场法避障
  50. 六、系统集成
  51. 6.1 完整启动脚本
  52. launchautonomousflight.sh
  53. 终端 1: MID360 驱动
  54. 终端 2: Fast-LIO2
  55. 终端 3: MAVROS (PX4 通信)
  56. 终端 4: 路径规划和避障
  57. 终端 5: RViz 可视化
  58. 6.2 系统健康检查
  59. check_system.sh
  60. 检查节点
  61. 检查话题
  62. 检查系统资源
  63. 检查 PX4 状态
  64. 七、常见问题
  65. 问题 1: Fast-LIO2 运行缓慢(频率不稳定)
  66. 1. 启用最高性能模式
  67. 2. 使用高效的 DDS 实现
  68. 3. 关闭不必要的发布
  69. 在 fast_lio2 配置文件中:
  70. featpuben: false
  71. densepublishen: false
  72. 问题 2: MID360 无法连接
  73. 1. 检查 USB 设备
  74. 2. 检查 USB 权限
  75. 3. 重新插拔设备
  76. 检查 udev 规则
  77. 4. 测试连接
  78. 问题 3: PX4 通信失败
  79. 1. 验证波特率
  80. 2. 检查 UART 权限
  81. 3. 在 QGroundControl 中验证 PX4 波特率设置
  82. 应设为 921600 bps
  83. 4. 测试连接
  84. 问题 4: 内存泄漏导致系统崩溃
  85. 1. 减少点云缓冲
  86. fastlio2 配置中:cubelen: 100
  87. 从 200 改为 100
  88. 2. 优化 ROS 2 QoS
  89. 创建 qos_config.yaml 并在 launch 中引用
  90. 3. 定期监控
  91. 八、参考资源
  92. 8.1 官方文档
  93. 8.2 推荐论文
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 知网 AIGC 检测原理与降重处理指南
  • RuoYi-Vue Pro 基于 Spring Boot 与 Vue 的企业级快速开发平台
  • ComfyUI 深度解析:高性能 AI 绘画工作流实践
  • RISC-V 五级流水线 CPU 取指通路时序优化实战
  • GitHub 私有仓库转为公共仓库的操作步骤
  • 安装 Microsoft Visual C++ Build Tools 配置指南
  • Java IO 流:从文件操作到网络通信
  • WebStorm 安装与首次配置指南
  • 基于大语言模型的生成式文本隐写研究(MM'24)
  • OpenMAIC:清华团队开源的 AI 课堂生成工具
  • FAIR plus 机器人全产业链接会:聚焦具身智能与产业链协同
  • Python 环境安装与配置 Gurobi 求解器指南
  • C++ 基础语法完全入门指南
  • Java 充电桩平台故障排查优化:日志分级存储与链路关联方案
  • JSP 数据库备份功能源码示例
  • OpenClaw 配置与 QQ Bot 接入指南
  • 文心一言 4.5 开源深度解析:轻量化部署与中文场景优化
  • Python 拒绝采样算法优化与多峰分布模拟实战
  • GitHub 生成 SSH 密钥配置指南
  • 基于 Vue3+TS+Three.js 的 VR 全景看房应用实战

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online