news 2026/6/13 8:01:55

保姆级教程:从源码编译PX4到成功运行ROS Gazebo仿真(避坑‘mavlink_sitl_gazebo not found’)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:从源码编译PX4到成功运行ROS Gazebo仿真(避坑‘mavlink_sitl_gazebo not found’)

从零构建PX4无人机仿真环境:完整指南与避坑手册

无人机仿真开发是进入机器人领域的绝佳起点,而PX4与Gazebo的组合则是目前最流行的开源解决方案。本文将带你从零开始,一步步搭建完整的PX4+ROS+Gazebo仿真环境,特别针对最新版本中常见的路径变更问题提供详细解决方案。

1. 环境准备与PX4源码获取

在开始之前,请确保你使用的是Ubuntu 20.04或22.04系统,这是官方推荐且测试最充分的环境。虽然其他Linux发行版理论上也可行,但新手强烈建议使用官方推荐系统以避免兼容性问题。

首先安装基础依赖工具:

sudo apt update && sudo apt install -y git zip qtcreator cmake build-essential

接下来获取PX4源码。官方仓库位于GitHub,我们推荐使用--recursive参数克隆,这样可以自动获取所有子模块:

git clone --recursive https://github.com/PX4/PX4-Autopilot.git ~/PX4-Autopilot cd ~/PX4-Autopilot

提示:如果网络状况不佳导致子模块更新失败,可以后续执行git submodule update --init --recursive来补全。

PX4的编译依赖较多,官方提供了便捷的安装脚本。执行以下命令安装所有必要依赖:

bash ./Tools/setup/ubuntu.sh

这个脚本会自动检测你的Ubuntu版本并安装对应依赖包,包括:

  • 编译器工具链
  • Gazebo仿真环境
  • Python相关工具
  • 其他必要的开发库

2. 基础编译与Gazebo测试

完成环境准备后,我们可以尝试首次编译PX4的SITL(Software In The Loop)仿真版本。PX4使用基于make的构建系统,虽然也支持CMake,但对于新手来说make更为简单直观。

进入PX4源码目录执行编译命令:

cd ~/PX4-Autopilot make px4_sitl_default gazebo

这个命令会:

  1. 编译PX4飞控固件
  2. 自动启动Gazebo仿真环境
  3. 加载默认的iris无人机模型

如果一切顺利,你应该能看到Gazebo界面弹出,并且终端显示类似以下信息:

INFO [simulator] Waiting for simulator to connect on TCP port 4560 INFO [simulator] Simulator connected on TCP port 4560

此时可以在终端输入commander takeoff命令测试无人机能否正常起飞。这是验证基础环境是否正常工作的关键步骤。

3. ROS环境集成与路径配置

成功运行基础仿真后,我们需要将PX4与ROS环境集成。这是整个流程中最容易出错的环节,特别是随着PX4版本更新,文件路径结构经常发生变化。

首先确保已安装ROS(推荐ROS Noetic或ROS2 Foxy/Humble)。然后安装PX4的ROS相关包:

sudo apt install ros-${ROS_DISTRO}-px4-msgs ros-${ROS_DISTRO}-mavros

关键步骤是正确设置Gazebo和ROS的环境变量。在较新版本的PX4中,文件路径已从原来的Tools/sitl_gazebo变更为Tools/simulation/gazebo-classic。这是导致"mavlink_sitl_gazebo not found"错误的根本原因。

正确的设置命令如下:

source ~/PX4-Autopilot/Tools/simulation/gazebo-classic/setup_gazebo.bash \ ~/PX4-Autopilot \ ~/PX4-Autopilot/build/px4_sitl_default export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic

重要:环境变量设置必须在同一个终端会话中完成,建议将这些命令添加到你的~/.bashrc文件中以便永久生效。添加到.bashrc时,请确保使用绝对路径而非相对路径。

4. 完整仿真工作流验证

完成上述配置后,我们可以测试完整的ROS+PX4+Gazebo仿真链路。首先确保Gazebo环境已正确设置:

cd ~/PX4-Autopilot source Tools/simulation/gazebo-classic/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd) export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:$(pwd)/Tools/simulation/gazebo-classic/sitl_gazebo-classic

然后启动PX4 SITL节点:

roslaunch px4 posix_sitl.launch

这个启动文件会:

  1. 启动PX4飞控实例
  2. 加载Gazebo仿真环境
  3. 建立MAVLink通信链路
  4. 启动必要的ROS节点

为了验证ROS接口是否正常工作,可以尝试通过MAVROS发送指令:

rosrun mavros mavsys mode -c GUIDED rosrun mavros mavsafety arm rosrun mavros mavcmd takeoff 0 0 0 0 10

这些命令将让无人机在仿真环境中起飞到10米高度。如果一切正常,你不仅能看到Gazebo中的无人机起飞,还能在终端看到相应的状态反馈信息。

5. 常见问题排查与解决

即使按照上述步骤操作,仍可能遇到各种问题。以下是几个最常见的问题及其解决方案:

问题1:Gazebo启动后黑屏或无模型显示

这通常是因为Gazebo需要从网络下载模型文件但连接不畅。解决方法:

mkdir -p ~/.gazebo/models cd ~/.gazebo/models wget http://file.ncnynl.com/ros/gazebo_models.txt wget -i gazebo_models.txt ls model.tar.g* | xargs -n1 tar xzvf

问题2:ROS提示找不到px4或mavlink_sitl_gazebo包

这几乎总是因为ROS_PACKAGE_PATH设置不正确。请仔细检查:

  1. 路径是否指向正确的gazebo-classic目录而非旧的sitl_gazebo
  2. 是否使用了绝对路径而非相对路径
  3. 是否在同一个终端会话中执行了source和export命令

问题3:MAVROS无法连接到PX4

检查以下几点:

  1. 确保roslaunch px4 posix_sitl.launch已成功运行
  2. 检查~/.ros/log中的日志文件
  3. 尝试手动连接:
rosrun mavros mavsys check

问题4:Gazebo运行缓慢或卡顿

可以尝试以下优化:

  1. 使用简单的视觉环境:
export PX4_SIM_MODEL=iris_opt_flow make px4_sitl_default gazebo
  1. 关闭Gazebo的图形界面:
HEADLESS=1 make px4_sitl_default gazebo
  1. 降低物理引擎精度:

在Gazebo界面中,将Physics->Real Time Update从1000降低到500或更低

6. 进阶配置与自定义开发

基础环境搭建完成后,你可能需要进一步定制开发环境。以下是一些实用技巧:

使用Qt Creator进行开发

PX4官方推荐使用Qt Creator作为IDE:

sudo apt install qtcreator cd ~/PX4-Autopilot mkdir build/px4_sitl_default cd build/px4_sitl_default cmake ../.. make

然后在Qt Creator中打开PX4项目,选择build/px4_sitl_default作为构建目录。

添加自定义无人机模型

要在仿真中使用自己的无人机模型,需要:

  1. 创建模型文件并放入Tools/simulation/gazebo-classic/sitl_gazebo-classic/models
  2. 编写对应的启动配置文件放入Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds
  3. 修改posix_sitl.launch文件指向你的自定义世界

多机仿真

PX4支持多无人机同时仿真,启动方式如下:

roslaunch px4 posix_sitl.launch vehicle:=iris_1 roslaunch px4 posix_sitl.launch vehicle:=iris_2

每个实例需要指定不同的TCP端口和模型名称。

硬件在环(HITL)测试

当需要连接真实飞控硬件时,可以使用HITL模式:

make px4_sitl_default hitl

这需要额外配置硬件连接参数,但基本环境设置与SITL类似。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 7:51:29

MHmarkets迈汇平台:外汇投教内容建设与外汇行业合规表达如何影响体验

MHmarkets迈汇平台:外汇投教内容建设与外汇行业合规表达如何影响体验对多数外汇相关用户来说,判断平台并不需要复杂术语,关键在于信息能否被快速理解、关键提示是否容易找到、服务体验是否稳定一致。以MHmarkets迈汇平台为例,这里…

作者头像 李华
网站建设 2026/6/13 7:45:32

大棚实践案例分享:厂家排行揭晓,亲测效果告诉你真相

引言在现代农业设施中,温室大棚的使用已经越来越广泛。它们不仅能够改善传统种植方式,提供更加可控的种植环境,还能延长农产品的生产周期,提高产量。为了帮助农业生产者在众多大棚生产供应商中选定合适的合作伙伴,本文…

作者头像 李华
网站建设 2026/6/13 7:43:52

5分钟学会B站视频转文字:你的免费智能文字助手

5分钟学会B站视频转文字:你的免费智能文字助手 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 你是否曾经看过一个精彩的B站视频,想要…

作者头像 李华
网站建设 2026/6/13 7:38:51

【各大框架如何监听 Spring Boot 八大启动事件(源码级详细讲解)】

各大框架如何监听Spring Boot八大启动事件(源码级详细讲解) 结合上一轮8个启动事件顺序,按基础内置框架 → Spring Cloud微服务生态 → 中间件ORM/缓存/消息 → 监控运维框架分类,逐个说明每个框架监听哪个事件、做了什么核心逻辑…

作者头像 李华
网站建设 2026/6/13 7:37:56

Stability AI 开源视频生成全家桶 从视频到 4D 的进化之路

文章目录Stability AI 开源视频生成全家桶 从视频到 4D 的进化之路从单张图片到动态 4D底层架构的重新设计上手门槛不算高从 SDXL 到 SV4D 2.0Stability AI 开源视频生成全家桶 从视频到 4D 的进化之路 Stability AI 的 generative-models 仓库最近又更新了。这个项目从最初的…

作者头像 李华