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

Ubuntu 22.04 基于 ROS2 Humble 的 PX4 无人机仿真环境搭建

综述由AI生成在 Ubuntu 22.04 系统上基于 ROS2 Humble 版本搭建 PX4 无人机仿真环境的完整流程。主要步骤包括下载并配置 PX4 源码,安装 Gazebo 仿真依赖,编译及部署 Micro XRCE-DDS Agent 以实现通信,以及使用官方 offboard 程序进行飞行控制测试。教程涵盖了环境准备、源码编译、通信调试及常见问题解决,适用于希望进行无人机仿真开发的用户。

FrontendX发布于 2026/4/5更新于 2026/5/2447 浏览
Ubuntu 22.04 基于 ROS2 Humble 的 PX4 无人机仿真环境搭建

前言

本教程基于 ROS2,在搭建之前,需要把 ROS2、QGC 等基础环境安装配置完成。本次安装是以 px4 v1.14.0 为例,不适用之前的 px4 版本。

我的配置如下: 虚拟机 Ubuntu 22.04 (运行内存 4G、硬盘内存 80G) 、ROS2 Humble 。

建议:大部分命令都有先后顺序,上一个命令执行成功后才能执行下一个。对于不熟悉的命令建议查阅官方文档或 AI 辅助学习。建议使用虚拟机进行开发,利用快照功能保存当前状态,以便出现问题时快速回滚。网络下载资源时若速度较慢,可尝试多次执行命令或更换源。

1. 准备

1.1 下载 PX4 源码

从 Github 上下载:

sudo apt install git
git clone https://github.com/PX4/PX4-Autopilot.git # 下载源码
mv PX4-Autopilot PX4_Firmware # 更改目录名
cd PX4_Firmware 
git checkout v1.14.0 # 切换版本
git submodule update --init --recursive # 更新子模块

1.2 安装仿真依赖

sudo apt install ros-dev-tools
cd ~/PX4_Firmware/Tools/setup
chmod +x ubuntu.sh
./ubuntu.sh --no-nuttx --no-sim-tools

说明:脚本执行时间跟个人网络有关。--no-nuttx 表示不安装交叉编译环境(如需自己编译飞控固件烧录则需安装),--no-sim-tools 表示不安装仿真环境。安装完成后,重启 Ubuntu。

1.3 安装 Gazebo

Gazebo 是一款强大的 3D 仿真软件,主要用于机器人学的研究和开发。它提供了高度逼真的物理模拟环境,包括动力学、碰撞检测、传感器模型等。

Ubuntu 22.04 及以后的版本支持 Gazebo (原 Gazebo Ignition)。旧版 Gazebo Classic 已停止维护。

cd ~/PX4_Firmware/Tools/setup
./ubuntu.sh --no-nuttx # 这一步会安装仿真环境依赖,包括 gazebo

再运行一下 gazebo :

gz sim

成功后再重启 Ubuntu。

2. 安装 Micro XRCE-DDS Agent

在 ROS2 中 PX4 使用 uXRCE-DDS 中间件来允许在配套计算机上发布和订阅 uORB 消息,就像它们是 ROS2 话题一样。这提供了 PX4 和 ROS2 之间快速可靠的集成。

  • 下载源码:
git clone -b v2.4.2 https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
  • 编译:
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make

注意:make 的时候还会额外下载代码,跟个人网速有关,大概要 10-20 分钟。

如果出现错误:

![图片描述]

build 目录下执行下面命令,改完后再重新 make:

sed -i 's/checkout 2\.12\.x --/checkout v2.12.1 --/' ./fastdds/tmp/fastdds-gitclone.cmake

也可以用文本编辑器打开 fastdds-gitclone.cmake 文件,将 2.12.x 改为 v2.12.1 就行。

  • 安装:
sudo make install
sudo ldconfig /usr/local/lib/ # 更新动态链接器的缓存

3. 编译 PX4

cd ~/PX4_Firmware
make px4_sitl gz_x500 # 这步可能有点慢

出现编译成功提示即表示成功。

常见问题:

  1. OpenGL 版本降低错误:如果在虚拟机中遇到 OpenGL 相关错误,这是由于开启了 3D 图形加速导致系统的 OpenGL 版本降低。参考 PX4 官方 Issue 解决方法,降低仿真使用的渲染引擎的版本。 打开文件:

    gedit ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/px4-rc.simulator
    

    修改前:

    if [ -z "${HEADLESS}" ]; then
        # HEADLESS not set, starting gui
        ${gz_command}${gz_sub_command} -g &
    fi
    

    修改后:

    if [ -z "${HEADLESS}" ]; then
        # HEADLESS not set, starting gui
        ${gz_command}${gz_sub_command} -g --render-engine ogre &
    fi
    
  2. gz_bridge 启动超时:如果编译过程中出现类似 ERROR [gz_bridge] Service call timed out 的错误,可能是 gz_bridge 启动超时。请参考相关技术社区解决方案调整参数后重新编译。

4. 通信测试

打开一个终端,启动 MicroXRCEAgent:

MicroXRCEAgent udp4 -p 8888

打开另一个终端,启动仿真:

cd ~/PX4_Firmware
make px4_sitl gz_x500

都启动后,可以看到通信成功。

5. 官方 offboard 程序

  • 创建工作空间:
mkdir -p ~/ros2_ws/src
  • 下载源码:
cd ~/ros2_ws/src
git clone https://github.com/PX4/px4_msgs.git -b release/1.14
git clone https://github.com/PX4/px4_ros_com.git -b release/v1.14
  • 编译:
cd ~/ros2_ws
colcon build
  • 更新环境:
echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc # 使环境生效

6. offboard 测试

先启动 QGC,然后执行下面命令。

  • 终端一,启动 MicroXRCEAgent:
MicroXRCEAgent udp4 -p 8888
  • 终端二,启动仿真:
cd ~/PX4_Firmware
make px4_sitl gz_x500
  • 终端三,启动官方 offboard 案例(上升 5 米):
ros2 run px4_ros_com offboard_control

注:如果过了一段时间,无人机无法 offboard 起飞,程序都正常启动,这时可以尝试重新编译并 source 环境后再测试。

至此 PX4 无人机基本仿真环境就搭建完成了,大家可以基于此来拓展自己的仿真。

参考

ROS 2 用户指南 | PX4 Guide PX4 ROS 2 User Guide v1.14 PX4 documentation uXRCE-DDS Ubuntu Development Environment

目录

  1. 前言
  2. 1. 准备
  3. 1.1 下载 PX4 源码
  4. 1.2 安装仿真依赖
  5. 1.3 安装 Gazebo
  6. 2. 安装 Micro XRCE-DDS Agent
  7. 3. 编译 PX4
  8. 4. 通信测试
  9. 5. 官方 offboard 程序
  10. 6. offboard 测试
  11. 参考
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • WebPlotDigitizer 智能图表数据提取工具与科研应用指南
  • Python 爬取小红书笔记数据及词云可视化分析
  • Python爬虫实战:爬取Chrome Web Store扩展商店数据及导出
  • Ubuntu 搜狗输入法消失或只能英文的排查与修复
  • OpenClaw 跨平台部署与 Telegram/飞书集成实战指南
  • Flutter 三方库 webrtc_interface 的鸿蒙化适配指南
  • Flutter 三方库 algolia_client_recommend 在鸿蒙端的适配指南
  • LangChain 大模型组件使用指南
  • 基于 STM32 的人体健康监测系统
  • 基于Java Web的驾校考试管理系统设计与实现
  • 排序算法总结:直接插入、希尔、选择、堆、冒泡、快速、归并、计数及非递归实现
  • SSM 框架与 Spring MVC 完整整合实战指南
  • 基于 YOLOv13 的无人机航拍电动自行车违规载人检测系统实战
  • 支持向量机(SVM)原理、分类与回归详解及 Python 代码实现
  • C++ 多线程同步之条件变量(condition_variable)实战
  • 使用 Linux 命名管道 (FIFO) 实现无血缘关系进程间通信
  • 无人机视角高速路面损害检测数据集及 YOLOv8 训练方案
  • 基于Java的校园二手物品在线交易平台设计与实现
  • Java 核心面试题及答案解析
  • VS Code 无法下载 .vsix 插件的离线安装方案(以 C/C++ 插件为例)

相关免费在线工具

  • 加密/解密文本

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

  • Gemini 图片去水印

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

  • Base64 字符串编码/解码

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

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online