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

目录

  • 前言
  • 1. 准备
    • 下载源码
      • 方式一:
      • 方式二:
    • 安装依赖
    • 安装 Gazebo
  • 2. 安装 Micro XRCE-DDS Agent
  • 3. 编译
  • 4. 通信
  • 5. offboard 测试
  • 参考

前言

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

小白必看:👇👇👇👇👇👇👇
本次安装是以 px4 v1.14.0 为例,不适用之前的 px4 版本。
我的配置如下:
虚拟机 Ubuntu 22.04 (运行内存 4G、硬盘内存 80G) 、ROS2 HumbleQGC

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

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

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

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

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

ROS1 请看 👇👇👇

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

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

1. 准备

下载源码

方式一:

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

方式二:

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

链接:https://pan.baidu.com/s/1OmXhfRaE_CsYG0F_4mYyzg
提取码:lq9a

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

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

在这里插入图片描述

安装依赖

sudo apt install ros-dev-tools
cd ~/PX4_Firmware/Tools/setup

修改文件并备份 (就把 pip 安装源换成了清华源),这一步是可做可不做,如果觉得python 包下载太慢了,可以试试

sed -i.bak 's|\/requirements.txt|\/requirements.txt -i https:\/\/pypi.tuna.tsinghua.edu.cn\/simple|' ./ubuntu.sh
chmod +x ubuntu.sh
./ubuntu.sh --no-nuttx --no-sim-tools
# 这是官方提供的脚本 有两个可选参数
# --no-sim-tools   不安装仿真环境
# --no-nuttx   不安装交叉编译环境
#(如果需要自己编译飞控固件,烧录到飞控中,那就需要交叉编译环境)
# 脚本执行时间,跟个人网络有关,可能需要一段时间

重启 Ubuntu

安装 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 是内部通信协议。

  • 下载源码:
git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git
  • 编译:
cd Micro-XRCE-DDS-Agent
mkdir build
cd build
cmake ..
make  # make 的时候还会下载代码,跟个人网速有有关,大概要10-20分钟

在这里插入图片描述

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

在这里插入图片描述

3. 编译

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

出现这个表示编译成功 😄
在这里插入图片描述
注:如果在虚拟机中可能遇到下面错误,这是由于在虚拟机设置中开启了 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

然后,再重新编译

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 #使环境生效
  • 测试:

打开 QGC

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

在这里插入图片描述

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

参考

PX4 ROS 2 User Guide

PX4 documentation

uXRCE-DDS

Ubuntu Development Environment

a-new-era-for-gazebo

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/94130.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/94130.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动驾驶中的传感器技术11——Camera(2)

1、自驾Camera关键技术点汇总 ADAS Camera 关键技术点摘选(IEEE-P2020工作组)如下: Ref : 5. IEEE 相关标准 - 图像质量与色彩技术知识库 https://www.image-engineering.de/content/library/white_paper/P2020_white_paper.pd…

福彩双色球第2025088期篮球号码分析

蔡楚门福彩双色球第2025088期篮球号码分析,上期开出篮球号码数字08,数字形式是合数偶数2路球数字,小号区域,0字头数字。本期篮球号码分析,4尾数0414遗漏9期上次遗漏11期,2尾数0212遗漏4期上次遗漏27期&…

【兆易创新】单片机GD32F103C8T6系列入门资料

GD32F103xx 系列器件是一款基于ARM Cortex-M3 RISC内核的32位通用微控制器,在处理能力、降低功耗和外设方面具有超优的性价比。Cortex-M3是下一代处理器核心,它与嵌套矢量中断控制器(NVIC), SysTick计时器和高级调试支持紧密耦合。 GD32F103…

高效轻量的C++ HTTP服务:cpp-httplib使用指南

文章目录httplib介绍与安装使用案例httplib介绍与安装 C HTTP 库(cpp-httplib)是一个轻量级的 C HTTP 客户端/服务器库,它提供了简单的 API 来创建 HTTP 服务器和客户端,支持同步和异步操作。以下是一些关于cpp-httplib 的主要特…

24 SAP CPI 调用SAP HTTP接口

SAP CPI 访问SAP接口一般用RFC或者HTTP,个人在项目中两种方法都用过,最后还是倾向于HTTP的方式,此方式易于维护,统一管理,接口搭建比较方便。 读者朋友可网上自行搜索"SAP 发布HTTP接口",SAP CPI调用SAP发布的HTTP接口。 配置CPI接口前,需要将CPI的证书导入…

C/C++常用字符串函数

一、字符串函数介绍: 字符串作为程序中常用的数据类型,学会对字符串进行处理是作为一名C/C程序员的基本功,我们要学会使用相关函数,并且对重点函数要会自己手动实现(下文对重点函数有实现代码以及相关示例&#xff09…

YOLO的Python实现以及 OpenCV

YOLO的Python实现以及 OpenCV Darknet 实现 YOLO 从头开始开发 YOLO模型不容易,所以我们要使用预训练模型在项目里进行目 标检测。你可以在 https://pjreddie.com里到所有可用的预训练模型。这是 Joseph C. Redmon的主页,他是 Darknet的维护者。 注意 …

译|Netflix 数据平台运营中基于机器学习自动修复系统

来自上传文件中的文章《Evolving from Rule-based Classifier: Machine Learning Powered Auto Remediation in Netflix Data Platform》 本文介绍了Netflix如何将基于规则的错误分类器与机器学习服务集成,实现Spark作业失败的自动修复。技术亮点包括结合规则和ML智…

PAES算法求解 ZDT1 双目标优化问题

前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…

逻辑回归的应用

一参数逻辑回归参数及多分类策略等完整解析LogisticRegression 初始参数声明LogisticRegression(penaltyl2, dualFalse, tol0.0001, C1.0, fit_interceptTrue, intercept_scaling1, class_weightNone, random_stateNone, solverliblinear, max_iter100, multi_classovr, verbos…

C语言(长期更新)第7讲:VS实用调试技巧

C语言(长期更新) 第7讲 VS实用调试技巧 跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学习内容,你的支持就是博主最大的动力。 目录 C语言(长期更新) 第7讲 …

CONTRASTIVE-KAN:一种用于稀缺标记数据的网络安全半监督入侵检测框架

研究背景与挑战​ ​工业环境需求​: 第四次工业革命中,物联网(IoT)和工业物联网(IIoT)的普及使网络安全成为关键挑战。 入侵检测系统需实时性高,尤其对关键基础设施(如燃气管道)的快速攻击检测至关重要。 ​核心问题​: ​标签数据稀缺​:工业系统多数时间处于正常…

综合:单臂路由+三层交换技术+telnet配置+DHCP

技术考核1 实验拓扑:实验需求 1.按照图示配置IP地址设备名 2.在SW1和SW2之间配置链路聚合增加链路带宽,提高可靠性 3.PC5和PC6属于VLAN10, PC7和PC8属于VLAN20 4.SW1和SW2属于二层交换机,SW3为三层交换机(VLAN100用于对…

工业火焰识别漏报率↓78%!陌讯多模态融合算法实战解析

原创声明:本文技术方案解析基于陌讯技术白皮书2025版 标签:#陌讯视觉算法 #火焰识别优化 #工业安全监控 #边缘计算优化一、行业痛点:工业火灾监控的漏检危机据《2025工业安全白皮书》统计,化工场景传统火焰识别系统漏报率高达35%&…

C++引用:高效安全的别名机制详解

目录 一、引用的概念 二、引用的特性 1、定义时必须初始化 2、一个变量可以有多个引用 3、引用一旦绑定实体就不能更改 三、const引用(常引用) 1、const引用的基本特性 2、临时对象与const引用 3、临时对象的特性 4、const 引用作为函数形参 …

大语言模型API付费?

下面是目前主流 大语言模型 API 的付费情况总览: 🧠 一、主要大语言模型 API:是否付费对比 提供方模型是否免费限制 / 说明OpenAIGPT-3.5 / GPT-4 / GPT-4o❌ 付费为主有免费额度(如 ChatGPT 免费版),API …

巧用Wisdom SSH:容器化运维与传统运维的抉择

巧用Wisdom SSH:容器化运维与传统运维的抉择 在当下的技术领域,容器化运维与传统运维是运维人员面临的两大主要方向,对于从业者来说,如何抉择至关重要,而Wisdom SSH在其中能发挥显著作用。 传统运维:基石…

API征服者:Python抓取星链卫星实时轨迹

API征服者:Python抓取星链卫星实时轨迹从基础调用到工业级卫星追踪系统实战指南一、太空数据时代:星链卫星的全球覆盖​​星链卫星网络规模​​:已发射卫星数量:4,000目标卫星总数:42,000轨道高度:340km - …

《深潜React列表渲染:调和算法与虚拟DOM Diff的优化深解》

当用户在内容平台无限滑动,或是在管理系统中处理成百上千条数据时,每一次无卡顿的交互,都是调和算法与虚拟DOM Diff机制协同工作的成果。理解这两者的底层逻辑,不仅是性能优化的钥匙,更是从“使用框架”到“理解框架”…

自动化与配置管理工具 ——Ansible

一、Ansible 概述1.1 核心特性Ansible 是一款开源的自动化运维工具,采用无代理(Agentless)架构,通过 SSH 协议实现对远程节点的管理。其核心特性包括:无代理架构:被管理节点无需安装代理软件,降…