news 2026/4/24 11:35:17

从Gazebo黑屏到成功起飞:我的XTDrone+ROS Noetic+PX4仿真环境搭建全记录

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从Gazebo黑屏到成功起飞:我的XTDrone+ROS Noetic+PX4仿真环境搭建全记录

从Gazebo黑屏到成功起飞:我的XTDrone+ROS Noetic+PX4仿真环境搭建全记录

1. 启程:搭建前的准备与思考

作为一名无人机算法开发者,仿真环境的重要性不言而喻。在决定使用XTDrone+ROS Noetic+PX4这套组合时,我查阅了大量资料,发现虽然网上教程不少,但大多都是"一帆风顺"的完美流程,很少提及实际搭建过程中可能遇到的坑。这让我决定记录下自己的真实搭建经历,希望能帮助到后来者。

选择Ubuntu 20.04作为基础系统有几个考虑:

  • 长期支持版本(LTS)稳定性有保障
  • 对ROS Noetic的官方支持最好
  • 大多数开源无人机项目都针对这个版本做过测试

硬件配置方面,我使用的是:

  • CPU: Intel i7-10750H
  • 内存: 32GB
  • 显卡: NVIDIA RTX 2060
  • 存储: 1TB NVMe SSD

提示:Gazebo仿真对显卡有一定要求,集成显卡可能会导致性能问题

2. 第一步:PX4固件编译的曲折之路

2.1 初始环境搭建

按照官方文档,我首先尝试安装PX4开发环境:

sudo apt-get update && sudo apt-get upgrade -y sudo apt-get install git -y git clone -b v1.13.0 https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot

然而,在运行安装脚本时遇到了第一个问题:

bash ./Tools/setup/ubuntu.sh

报错信息显示python-dateutil版本不兼容。经过搜索,发现这是Ubuntu 20.04自带Python包的一个常见问题。

解决方法

sudo pip install --upgrade python-dateutil

2.2 环境变量配置陷阱

完成基础安装后,需要配置环境变量。这里我犯了一个新手常见错误 - 没有正确设置PATH:

gedit ~/.bashrc

添加以下内容:

export PATH=$PATH:$HOME/.local/bin

然后执行:

source ~/.bashrc

注意:每次修改.bashrc后都需要source使其生效,或者新开一个终端

3. ROS Noetic安装:鱼香ROS的便利

为了简化ROS安装过程,我选择了鱼香ROS的一键安装脚本:

wget http://fishros.com/install -O fishros && . fishros

安装过程中有几个关键选择:

  1. 选择"桌面完整版"安装
  2. 保持默认源(不需要换源)
  3. 安装所有依赖项

安装完成后,验证ROS是否安装成功:

roscore

如果看到类似以下输出,说明ROS核心已正常运行:

... logging to /home/user/.ros/log/xxxxx started core service [/rosout]

4. MAVROS与PX4的通信难题

4.1 MAVROS安装

MAVROS是ROS与PX4通信的桥梁,安装命令如下:

sudo apt install ros-noetic-mavros ros-noetic-mavros-extras wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh sudo chmod a+x ./install_geographiclib_datasets.sh sudo ./install_geographiclib_datasets.sh

警告:最后一步安装地理数据集可能耗时较长,请耐心等待

4.2 通信测试与排错

创建catkin工作空间:

mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin init catkin build

添加必要的环境变量到.bashrc:

source ~/catkin_ws/devel/setup.bash source ~/PX4-Autopilot/Tools/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/sitl_gazebo

测试通信:

roslaunch px4 mavros_posix_sitl.launch # 新终端 rostopic echo /mavros/state

常见问题排查表

问题现象可能原因解决方案
connected: false环境变量未正确设置检查.bashrc中的路径
无任何输出PX4未启动成功查看PX4终端是否有报错
频繁断开网络配置问题检查防火墙设置

5. XTDrone集成:最后的冲刺

5.1 获取XTDrone源码

git clone https://gitee.com/robin_shaun/XTDrone.git cd XTDrone git submodule update --init --recursive

5.2 文件配置

复制必要文件到PX4目录:

cp sitl_config/worlds/* ~/PX4-Autopilot/Tools/sitl_gazebo/worlds/ cp sitl_config/launch/* ~/PX4-Autopilot/launch/

5.3 Gazebo黑屏问题解决

这是最令人头疼的问题之一。当执行:

roslaunch px4 indoor1.launch

Gazebo界面黑屏,模型无法加载。经过多方查找,发现是Gazebo模型下载问题。

解决方案

  1. 安装xmlstarlet工具:
sudo apt-get install xmlstarlet
  1. 手动下载Gazebo模型库:
mkdir -p ~/.gazebo/models cd ~/.gazebo/models wget http://file.ncnynl.com/ros/gazebo_models.txt wget -i gazebo_models.txt

提示:这个过程可能耗时数小时,建议在夜间进行

6. 成功起飞:调试与优化

当所有组件都就位后,终于看到了无人机在Gazebo中成功起飞的场景。但为了让仿真更流畅,还需要进行一些优化:

性能优化建议

  • 在Gazebo启动时添加参数:
    roslaunch px4 indoor1.launch gui:=false
  • 调整PX4参数:
    param set SIM_OPTIONS "--lockstep"
  • 使用简化模型:
    export PX4_SIM_MODEL=iris

常用调试命令

# 查看PX4状态 commander status # 手动起飞 commander takeoff # 查看ROS节点 rqt_graph # 查看话题列表 rostopic list

7. 开发环境配置技巧

7.1 终端复用

使用tmux可以大幅提高工作效率:

sudo apt install tmux tmux new -s drone # 分屏快捷键:Ctrl+b % # 新建窗口:Ctrl+b c

7.2 常用别名设置

在.bashrc中添加:

alias px4='cd ~/PX4-Autopilot && make px4_sitl_default gazebo' alias roslaunchxt='roslaunch px4 indoor1.launch' alias rosnode='rosnode list'

7.3 备份策略

为了防止环境损坏,建议定期备份:

# 备份PX4 tar -czvf px4_backup.tar.gz ~/PX4-Autopilot # 备份ROS工作空间 tar -czvf catkin_ws_backup.tar.gz ~/catkin_ws

8. 后续开发建议

在实际使用这套环境进行算法开发时,我总结了几个实用技巧:

  1. 版本控制:为每个算法实验创建独立git分支

  2. 日志记录:使用rosbag记录所有话题数据

    rosbag record -a -O test.bag
  3. 可视化工具

    • 使用rqt进行参数调整
    • 使用PlotJuggler分析数据
    • 使用Gazebo的GUI检查碰撞
  4. 性能监控

    top -u $USER

    关注CPU和内存使用情况,必要时关闭不必要的进程

这套环境搭建虽然过程曲折,但最终获得的仿真平台为我的无人机算法开发提供了极大便利。特别是在尝试新的控制算法时,可以快速验证想法而不用担心硬件损坏。

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

剪映自动化终极指南:用Python代码解放双手,批量处理视频剪辑

剪映自动化终极指南:用Python代码解放双手,批量处理视频剪辑 【免费下载链接】JianYingApi Third Party JianYing Api. 第三方剪映Api 项目地址: https://gitcode.com/gh_mirrors/ji/JianYingApi 还在为每天重复的剪映操作烦恼吗?还在…

作者头像 李华
网站建设 2026/4/24 11:31:19

基于Keras的CNN手写数字识别实战指南

1. 项目概述:手写数字识别的现实意义与技术选型手写数字识别是计算机视觉领域的经典入门项目,相当于图像分类领域的"Hello World"。MNIST数据集自1998年发布以来,已成为算法工程师的"必修课"——包含60,000张28x28像素的…

作者头像 李华
网站建设 2026/4/24 11:28:28

real-anime-z镜像免配置:CSDN平台开箱即用,省去Diffusers环境搭建

real-anime-z镜像免配置:CSDN平台开箱即用,省去Diffusers环境搭建 1. 镜像介绍与核心优势 real-anime-z是CSDN星图平台提供的专业动漫风格文生图镜像,专为二次元创作场景优化。这个镜像最大的特点就是开箱即用,用户无需配置复杂…

作者头像 李华
网站建设 2026/4/24 11:28:22

RWKV7-1.5B-world金融科技:跨境支付监管政策双语解读生成系统

RWKV7-1.5B-world金融科技:跨境支付监管政策双语解读生成系统 1. 模型概述 RWKV7-1.5B-world是基于第7代RWKV架构的轻量级双语对话模型,专为金融科技领域的双语交互场景设计。该模型采用创新的线性注意力机制替代传统Transformer的自回归结构&#xff…

作者头像 李华