Ubuntu搭建PX4无人机仿真环境(5) —— 仿真环境搭建(以Ubuntu 22.04,ROS2 Humble,Micro XRCE-DDS Agent为例)

Ubuntu搭建PX4无人机仿真环境(5) —— 仿真环境搭建(以Ubuntu 22.04,ROS2 Humble,Micro XRCE-DDS Agent为例)

目录

前言

本教程基于 ROS2 ,在搭建之前,需要把 ROS2、QGC 等基础环境安装配置完成。但是这块的资料相比较于 ROS1 下的少很多,不利于快速上手和后期开发,小白慎选!

小白必看:👇👇👇👇👇👇👇
本次安装是以 px4 v1.14.0 为例,不适用之前的 px4 版本。
我的配置如下:
虚拟机 Ubuntu 22.04 (运行内存 4G、硬盘内存 80G) 、ROS2 HumbleQGC禁止无脑复制:首先大部分命令都有先后顺序,就是要上一个命令执行成下一个才能执行成功,对于不熟悉的命令可以直接复制问AI 这样还能顺带学习学习;其次在有些情况下多个命令一起执行会出现奇怪的错误,而且有些命令旁边有注释,有时候复制上去可能也会出现错误。建议使用虚拟机:虽然虚拟机得性能有限,但是对于新手入门阶段是完全够用了,后续大型仿真再用双系统也比较熟悉了。而且虚拟机有一个快照功能,可以保存当前虚拟机的状态 (相当于存档),这样如果后面出了问题要重新搭建环境,可以用快照回到上一个状态,这样就不用重头开始(我一般是安装好 ROS 拍一个、安装好 mavros 拍一个…)。关于网络:由于一些懂得都得的原因,再加上每个人的网络环境不同,我们下载 GitHub上的资源、安装 Python 包、apt 安装包等会时快时慢,所以大家会换源,比如一开始的换 apt 软件安装源等。但是下载资源一定要耐心,如果是网络问题,可以尝试多执行几次命令,而且有些我也给了相应的解决方案。

基于 ROS2 的 PX4 仿真环境搭建系列: 👇👇👇
建议安装之前可以先看看这个 👉 ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍

Ubuntu安装ROS(2) —— 安装ROS2 humble(最新、超详细图文教程,包含配置rosdep)-ZEEKLOG博客

ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍_Tfly__的博客-ZEEKLOG博客

ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站_Tfly__的博客-ZEEKLOG博客

ROS1 请看 👇👇👇

ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建、基于ROS1-ZEEKLOG博客

如果想要自己编译 PX4 固件可以看 Ubuntu编译PX4固件 这篇教程

1. 准备

1.1 下载 PX4 源码

方式一:

从 Github 上下载,但是比较考验个人网速

sudoaptinstallgit

下载并切换版本:

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 # 更新下载子模块

方式二:

从提供的网盘里下载,或者从QQ群(961297255)里下载

链接: https://pan.baidu.com/s/1MJWtK8XkLsdzvJKrpCMz6Q
提取码: rbrk

下载后解压,然后执行下面命令:

cd PX4_Firmware wget https://gitee.com/tyx6/mytools/raw/main/px4/set_executable.sh chmod +x set_executable.sh ./set_executable.sh 

1.2 安装仿真依赖

sudoaptinstall ros-dev-tools cd ~/PX4_Firmware/Tools/setup 
修改文件并备份 (就把 pip 安装源换成了清华源),这一步是可做可不做,如果觉得python 包下载太慢了,可以试试
chmod +x ubuntu.sh ./ubuntu.sh --no-nuttx --no-sim-tools # 这是官方提供的脚本 有两个可选参数# --no-sim-tools 不安装仿真环境# --no-nuttx 不安装交叉编译环境#(如果需要自己编译飞控固件,烧录到飞控中,那就需要交叉编译环境)# 脚本执行时间,跟个人网络有关,可能需要一段时间

安装完成后,重启 Ubuntu

1.3 安装 Gazebo

Gazebo是一款强大的3D仿真软件,主要用于机器人学的研究和开发。它提供了高度逼真的物理模拟环境,包括动力学、碰撞检测、传感器模型以及与真实世界相似的物理属性如重力、摩擦力等。Gazebo可以模拟各种类型的机器人,从移动机器人、无人机到机械臂,甚至可以模拟整个城市环境。

在这里插入图片描述


根据上图说明,Gazebo 官方做了更新将之前的 Gazebo Ignition 命名为 Gazebo,以前的 Gazebo 现在叫 Gazebo Classic ,而 Ubuntu 22.04 及以后的版本就支持 Gazebo (Gazebo Ignition) 。
因为几年前官方对 Gazebo 进行了重大架构变更,然后将变更后的版本叫 Gazebo Ignition,旧的仍叫 Gazebo。后面Gazebo Ignition 逐渐成熟并经过使用验证,所以他结束了旧的 Gazebo ( Gazebo 11 是 Gazebo Classic 的最后一个版本,支持到 2025 年 ),并重新对它们命了名。而且两个应该不能共存,安装一个会卸载另一个。

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 之间快速可靠的集成,并使 ROS2 应用程序更容易获取车辆信息和发送命令,如上图所示。(来自官方文档说明)

这应该跟 ROS2 将中间件改为 DDS 有关,但是官方又说明了在 ROS2 中仍可以使用 MAVROS ,可能官方觉得在 ROS2 中 Micro XRCE-DDS Agent 更好用 😂,也可能是因为 MAVLink 是外部通信协议,uORB 是内部通信协议。

注:如果想用 Mavros 请参考这篇文章 👉 ubuntu搭建PX4无人机仿真环境(2) —— MAVROS安装(适用于ROS1、ROS2)-ZEEKLOG博客
使用方法跟 ROS1 类似,这里不做描述。

Micro XRCE-DDS Agent 与 MAVROS 的对比(来自豆包AI,仅供参考)
MAVROS 是 ROS(机器人操作系统)生态中连接 MAVLink 协议设备(如 PX4、ArduPilot 飞控)的主流工具,本质是 ROS 与 MAVLink 的桥梁。二者的核心差异体现在如下方面:

维度Micro XRCE-DDS AgentMAVROS
核心定位资源受限设备与 DDS 分布式网络的通信代理,支持多设备协同ROS 与 MAVLink 设备(如飞控)的通信桥梁,专注无人机控制
生态兼容性兼容 DDS 生态(如 Fast DDS、Cyclone DDS),可与非 ROS 系统集成强依赖 ROS 生态,仅支持 ROS 节点与 MAVLink 设备交互
资源占用客户端(Client)极轻量(适合 MCU 等嵌入式设备),Agent 本身资源消耗中等依赖 ROS 节点和进程,资源占用较高(不适合极简嵌入式环境)
灵活性支持自定义数据类型,可灵活扩展消息结构,适应复杂分布式场景消息类型固定为 MAVLink 标准消息,扩展需修改协议或自定义消息
实时性原生支持实时性配置(通过 DDS QoS),适合低延迟场景实时性依赖 ROS 调度,默认配置下实时性中等
适用场景无人机集群协同、多传感器分布式融合、跨平台设备互联单无人机与 ROS 系统的通信(如地面站控制、数据日志、任务规划)
优点1. 分布式架构,支持多设备协同; 2. 轻量级客户端适合嵌入式; 3. 可自定义消息,灵活性高; 4. 强实时性与 QoS 保障1. 无缝集成 ROS 生态,开发便捷; 2. 成熟稳定,支持 MAVLink 全功能(控制、参数、日志等); 3. 社区活跃,问题易解决
缺点1. 学习成本高(需理解 DDS 概念),目前资料相比于mavros少很多; 2. 与 ROS 集成需额外适配; 3. 对单设备简单通信场景略显复杂1. 依赖 ROS,非 ROS 环境下使用不便,但非ROS环境也有其他基于mavlink的库可以使用; 2. 分布式多设备协同能力弱; 3. 资源占用较高,不适合极简嵌入式
  • 下载源码:
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 就行。

  • 安装:
sudomakeinstallsudo ldconfig /usr/local/lib/ # 更新动态链接器的缓存
在这里插入图片描述

3. 编译 PX4

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

出现这个表示编译成功 😄

在这里插入图片描述


错误 1️⃣:如果在虚拟机中可能遇到下面错误,这是由于在虚拟机设置中开启了 3D 图形加速,导致系统的 OpenGL 版本降低。

在这里插入图片描述

参考这个 Issue 中的解决方法,降低仿真使用的渲染引擎的版本

打开文件,修改处大概在 73 行:

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 启动超时

INFO [gz_bridge] world: default, model name: x500_0, simulation model: x500 ERROR [gz_bridge] Service call timed out ERROR [gz_bridge] Task start failed (-1) ERROR [init] gz_bridge failed to start ERROR [px4] Startup script returned with return value: 256

参考下面链接中给出的解决方法 👇
make px4_sitl gz_x500出错 - 哔哩哔哩

然后,再重新编译

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 # 1.14git 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 # 1.15# git clone https://github.com/PX4/px4_msgs.git -b release/1.15# git clone https://github.com/PX4/px4_ros_com.git -b release/1.15
  • 编译:
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 一下,再重新offboard测试

到这 PX4 无人机基本仿真环境就搭建完成了,大家可以基于此来拓展自己的仿真。
建了个交流群QQ群(961297255),方便大家交流学习,但是关于 ROS2 下的 PX4 仿真资料不多
😁

参考

ROS 2 用户指南 | PX4 Guide (main)
PX4 ROS 2 User Guide v1.14
PX4 documentation
uXRCE-DDS
Ubuntu Development Environment
a-new-era-for-gazebo

如有其他问题,或者发现文章有错误,请在评论区留言
Keep learning!

Read more

【2026最新Python+AI入门指南】:从零基础到实操落地,避开90%新手坑

【2026最新Python+AI入门指南】:从零基础到实操落地,避开90%新手坑

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:AI 【前言】 2026年AI技术持续爆发,大模型应用普及、边缘AI轻量化,Python作为AI开发的“第一语言”,成为零基础入门者的最优选择。作为深耕AI领域3年的开发者,我深知“选对方向+找对方法”比盲目跟风更重要。 不同于千篇一律的入门教程,本篇博客结合2026年AI热门趋势,拆解Python+AI零基础入门完整路径,包含热门实操案例、极简代码、避坑指南,附带流程图、表格,全程贴合新手节奏,帮你少走弯路、快速上手。 适合人群:零基础编程小白、转行AI职场人、非计算机专业大学生;核心收获:掌握Python必备语法、了解AI热门方向、实现2个AI入门案例、获取全套学习工具资料。 文章目录: * 一、先搞懂:为什么2026年入门AI,必须先学Python? * 1. 生态碾压:AI开发“

使用VS Code插件搭建AI开发环境完全指南

使用VS Code插件搭建AI开发环境完全指南

前篇: AI编程教学:手把手搭建AI编程环境(IDE/插件/CLI方案) Claude code免费体验+安装方式,对接国产大模型,Node + 配置教程 01. AI编程工具概述 目前主流的AI编程工具主要分为三类:集成IDE、插件模式和独立CLI。 其中,插件模式以其轻量级和高兼容性成为许多开发者的首选。通过在VSCode中安装相应插件,开发者可以在不离开熟悉的编辑器环境的情况下,享受到AI辅助编程的便利。 插件模式的优势在于: * 无需切换编辑器,保持开发环境一致性 * 可根据需求灵活选择不同AI模型 * 资源占用小,启动速度快 * 支持与本地开发环境深度集成 02. VS Code AI插件选择 目前市场上有多种VS Code AI插件可供选择,各有特色。以下是几款主流插件的对比分析: 添加图片注释,不超过 140 字(可选) 综合对比下来,RooCode是目前最推荐的VS Code AI插件,它不仅支持多种模型和模式切换,而且对中文的支持非常友好,适合国内开发者使用。

神的泪水-构建与解析:基于多AI模型并行的内容生成与对比分析工作流

神的泪水-构建与解析:基于多AI模型并行的内容生成与对比分析工作流

摘要 在人工智能迅猛发展的今天,大型语言模型(LLM)已成为内容创作、数据分析和自动化任务的核心驱动力。然而,不同模型在架构、训练数据和优化目标上的差异,导致其在处理相同任务时会产生风格、侧重点和准确性各不相同的输出。因此,如何高效、直观地对不同模型的输出进行横向对比,以选择最适合特定场景的模型,成为了一个亟待解决的课题。本文将详细拆解一个专为AI内容对比输出而设计的工作流,通过具体实例分析其构建逻辑、运行机制和应用价值,并进一步探讨其在模型评估、提示词工程优化及未来多智能体协作系统中的广阔前景。 1. 引言:从单一模型到多模型并行处理的范式转变 过去,我们与AI的交互多是“单线程”的:向一个特定的AI模型提出问题,然后接收并评估其返回的唯一答案。这种模式虽然直接,但存在明显的局限性。用户无法即时获知其他模型可能提供的不同见解或更优答案,评估过程也因此变得线性而低效。为了打破这一瓶颈,一种新的范式——多模型并行处理——应运而生。 多模型并行处理的核心思想是,将同一个输入或指令同时分发给多个不同的AI模型,并收集它们各自的输出。这种方法不仅能够实现对模型能力和特性的“同场竞技”

实测Gemini Pro:谷歌王牌AI,到底能帮我们解决多少实际问题?

实测Gemini Pro:谷歌王牌AI,到底能帮我们解决多少实际问题?

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一、核心亮点实测:不止是“多模态”,更是“真全能” * 1. 多模态处理:能“看、听、读、写”,还能“联动协作” * 2. 推理能力:复杂问题“会拆解、会纠错”,堪比专业助手 * 3. 代码能力:开发者的“全能帮手”,新手也能轻松上手 * 二、真实应用场景:这些领域,已经在用它提效了 * 1. 科研领域:帮研究员“节省时间”,专注核心工作 * 2. 内容创作: