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

Stack-Chan机器人完整入门指南:从零开始构建你的可爱机器人伙伴

Stack-Chan机器人完整入门指南:从零开始构建你的可爱机器人伙伴 【免费下载链接】stack-chanA JavaScript-driven M5Stack-embedded super-kawaii robot. 项目地址: https://gitcode.com/gh_mirrors/sta/stack-chan Stack-Chan是一个基于JavaScript驱动的M5Stack嵌入式超级可爱的机器人项目。这个开源项目让你能够轻松构建一个会眨眼、会转头、会说话的智能机器人伙伴。无论你是嵌入式开发新手还是经验丰富的开发者,都能快速上手这个充满乐趣的项目。 🎯 项目核心亮点 超强可爱属性:Stack-Chan拥有多种可爱的面部表情,能够进行眼神交流,让你的机器人充满个性魅力。 模块化设计:项目采用高度模块化的架构,支持多种舵机驱动、面部渲染器和功能扩展,让你的定制变得简单而灵活。 丰富功能生态:支持人脸追踪、语音对话、表情模仿等智能功能,为你的机器人注入灵魂。 📦 项目快速入门 环境准备与代码获取 首先克隆项目仓库到本地: git clone ht

By Ne0inhk

Vivado完整license文件获取与配置指南

本文还有配套的精品资源,点击获取 简介:Vivado是由Xilinx开发的FPGA和SoC设计综合工具,支持Verilog、VHDL等硬件描述语言,提供高级综合、仿真、IP集成等功能。本资源包“Vivado_的license文件.zip”包含用于解锁Vivado完整功能的许可证文件。介绍了许可证服务器配置、.lic文件管理、浮动与固定许可证区别、激活流程、更新与诊断等核心内容。适用于FPGA开发者、嵌入式系统工程师及学习者,帮助其合法配置Vivado环境,提升开发效率和项目执行能力。 1. Vivado工具与FPGA开发环境概述 Xilinx Vivado设计套件是面向FPGA和SoC开发的集成化软件平台,广泛应用于通信、工业控制、人工智能、嵌入式视觉等多个高科技领域。其核心功能包括项目创建、综合、实现、仿真、调试及系统级集成,支持从设计输入到硬件验证的全流程开发。 Vivado不仅提供了图形化界面(GUI)便于初学者快速上手,还支持Tcl脚本自动化操作,满足高级用户的大规模工程管理需求。其模块化架构设计使得开发者可以灵活选择所需功能组件,如HLS(高层次综合)、IP In

By Ne0inhk

50 行代码搞定 SLAM+AI Agent!机器人自主导航最小原型,看完就能跑

你想快速搞懂「SLAM+AI Agent」到底怎么让机器人变 “智能” 吗?不用堆公式、不用装复杂环境,纯 Python 实现极简可运行 Demo,看完就能复现,还能直接迁移到真实机器人开发! 一、一句话讲透核心逻辑 * SLAM = 机器人的眼睛 + 定位:回答 “我在哪?周围环境什么样?” * AI Agent = 机器人的大脑 + 决策:回答 “我该去哪?怎么走?避障怎么搞?” * SLAM+AI Agent = 能自主走路的智能机器人:眼睛感知→大脑决策→身体执行,形成闭环。 二、极简 Demo 目标(10×10 网格场景) 机器人从 (0,0) 出发,

By Ne0inhk
打造你的家庭 AI 助手(三):QQ 机器人接入你的 OpenClaw

打造你的家庭 AI 助手(三):QQ 机器人接入你的 OpenClaw

不得不承认腾讯进步的速度太快了,几条命令就可以接入Openclaw,也不用设置IP白名单了,在 QQ开放平台还增加了专门的Openclaw入口: 没啥好说的,很简单,安装完Openclaw之后,执行如下命令(命令也是生成好的): openclaw plugins install @tencent-connect/openclaw-qqbot@latest openclaw channels add--channel qqbot --token"" openclaw gateway restart 以下内容已经过时了,留作纪念 以下内容已经过时了,留作纪念 以下内容已经过时了,留作纪念 ⚠️ 重要提示:如果是家用宽带,没有申请固定 IP 地址的话,大可以放弃这种方式。由于 QQ 开发平台的白名单限制,机器人会非常不稳定,频繁掉线。建议使用云服务器或有固定 IP 的环境部署。 前言 在完成 OpenClaw 安装后,

By Ne0inhk