news 2026/5/7 9:12:33

保姆级教程:在Ubuntu 22.04上用PX4和ROS Noetic搭建你的第一个无人机仿真环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
保姆级教程:在Ubuntu 22.04上用PX4和ROS Noetic搭建你的第一个无人机仿真环境

保姆级教程:在Ubuntu 22.04上用PX4和ROS Noetic搭建你的第一个无人机仿真环境

第一次接触无人机仿真时,我盯着满屏的报错信息发呆了半小时——依赖缺失、子模块下载失败、环境变量配置错误...这些看似简单的问题足以让新手崩溃。本文将用最直白的方式,带你从零搭建完整的PX4+ROS仿真环境。不同于官方文档的模块化说明,这里会按照实际安装顺序,把每个可能卡住的环节都标注出来。我们假设你刚装好Ubuntu 22.04系统,连终端都没打开过几次。

1. 基础环境准备

1.1 系统更新与ROS安装

首先打开终端(Ctrl+Alt+T),逐行执行以下命令:

sudo apt update && sudo apt upgrade -y sudo apt install lsb-release curl gnupg2 -y

接着添加ROS Noetic的软件源(注意Ubuntu 22.04需要手动启用兼容模式):

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

安装完整版ROS(包含所有基础工具):

sudo apt update sudo apt install ros-noetic-desktop-full -y

常见问题处理

  • 若遇到E: Unable to locate package ros-noetic-desktop-full错误,请检查Ubuntu版本是否为20.04/22.04
  • 22.04用户需要额外执行:sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

1.2 初始化ROS环境

配置环境变量和依赖:

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc sudo rosdep init rosdep update

注意:rosdep update可能因网络问题失败,可尝试切换网络环境重复执行

2. PX4固件安装与配置

2.1 克隆PX4源码库

建议在home目录下创建专用工作空间:

mkdir -p ~/px4_ws/src cd ~/px4_ws/src git clone https://github.com/PX4/PX4-Autopilot.git --recursive

如果子模块下载失败(常见于Tools/sitl_gazebo),可尝试:

cd PX4-Autopilot git submodule sync --recursive git submodule update --init --recursive

2.2 安装依赖工具链

执行官方安装脚本(国内用户建议使用镜像源):

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh --no-sim-tools

关键依赖说明:

依赖包作用替代安装方式
arm-none-eabi-gcc编译飞控固件sudo apt install gcc-arm-none-eabi
geographiclib-tools地理数据支持sudo apt install geographiclib-tools
protobuf-compiler通信协议编译sudo apt install protobuf-compiler

遇到依赖错误时,可尝试:

sudo apt --fix-broken install python3 -m pip install --upgrade pip setuptools

3. Gazebo仿真环境搭建

3.1 安装Gazebo Classic

PX4目前仍主要兼容Gazebo Classic(原Gazebo 9):

sudo apt install gazebo11 libgazebo11-dev -y

验证安装:

gazebo --version # 应输出 gazebo11.x.x

3.2 配置环境变量

~/.bashrc末尾添加:

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

立即生效:

source ~/.bashrc

4. MAVROS通信桥接

4.1 安装MAVROS功能包

sudo apt install ros-noetic-mavros ros-noetic-mavros-extras -y

安装地理数据集(必须步骤):

sudo /opt/ros/noetic/lib/mavros/install_geographiclib_datasets.sh

4.2 测试硬件连接

虽然仿真不需要真实硬件,但可以提前检测串口权限:

ls /dev/ttyACM* # 如果后续使用真实飞控,需要执行: sudo usermod -a -G dialout $USER

5. 首次仿真测试

5.1 启动Gazebo仿真

在新终端中:

cd ~/px4_ws/src/PX4-Autopilot make px4_sitl_default gazebo-classic

正常启动会看到:

  • 终端显示PX4系统启动日志
  • Gazebo窗口出现iris无人机模型

5.2 基础飞行控制

在PX4终端中输入起飞命令:

commander takeoff

观察Gazebo中无人机是否离地。降落使用:

commander land

5.3 ROS节点交互

新终端中启动MAVROS:

roslaunch mavros px4.launch fcu_url:="udp://:14540@127.0.0.1:14557"

查看可用话题:

rostopic list # 应包含/mavros/开头的多个话题

6. QGroundControl地面站

6.1 安装最新版

下载AppImage格式安装包:

wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage chmod +x QGroundControl.AppImage ./QGroundControl.AppImage

6.2 连接仿真器

启动QGC后会自动检测到仿真器,或在右上角选择"UDP"连接,端口14550

关键功能验证:

  • 查看飞行仪表数据是否更新
  • 检查参数列表是否加载成功
  • 尝试通过地图界面发送航点

7. 常见问题排错指南

7.1 Gazebo黑屏问题

如果Gazebo启动后只有黑屏,尝试:

export LIBGL_ALWAYS_SOFTWARE=1 gazebo --verbose

7.2 PX4编译错误

清理后重新编译:

make distclean make px4_sitl_default gazebo-classic

7.3 MAVROS连接超时

检查端口设置:

netstat -ulnp | grep 14540 # 应显示PX4进程正在监听

8. 进阶配置技巧

8.1 自定义无人机模型

修改模型配置文件:

vim ~/px4_ws/src/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/models/iris/iris.sdf

8.2 添加传感器噪声

编辑世界配置文件:

vim ~/px4_ws/src/PX4-Autopilot/Tools/simulation/gazebo-classic/sitl_gazebo-classic/worlds/empty.world

8.3 多机仿真

启动时指定实例号:

./Tools/simulation/sitl_multiple_run.sh -n 2

每个实例会占用独立端口,可通过14540+10*N访问

9. 开发调试建议

  1. 日志分析

    ulog2csv ~/px4_ws/src/PX4-Autopilot/build/px4_sitl_default/logs/2023-01-01/*.ulg
  2. 参数调试

    commander param show MC_PITCH_P commander param set MC_PITCH_P 6.5
  3. ROS可视化工具

    sudo apt install ros-noetic-rqt* rqt_graph

10. 性能优化方案

硬件加速配置:

sudo apt install mesa-utils glxinfo | grep "OpenGL renderer"

虚拟机用户需要启用3D加速,并分配至少4GB内存。实测性能对比:

配置Gazebo帧率PX4周期误差
无加速8-12fps±15ms
NVIDIA驱动25-30fps±5ms
台式机i760+fps±2ms

最后提醒:仿真时关闭不必要的图形效果能显著提升性能。在Gazebo的"View"菜单中关闭"Shadows"和"Anti-aliasing"可以节省30%以上的GPU资源。

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

Raspberry Pi CM4S解析:兼容性与性能升级

1. Raspberry Pi Compute Module 4S 深度解析Raspberry Pi Compute Module 4S(简称CM4S)是树莓派基金会即将推出的新一代系统模块(System-on-Module),它采用了与Compute Module 4相同的Broadcom BCM2711四核Cortex-A72…

作者头像 李华
网站建设 2026/5/7 9:11:32

ESPTool终极指南:3步解决ESP芯片烧录难题

ESPTool终极指南:3步解决ESP芯片烧录难题 【免费下载链接】esptool Serial utility for flashing, provisioning, and interacting with Espressif SoCs 项目地址: https://gitcode.com/gh_mirrors/es/esptool ESPTool是Espressif Systems官方推出的开源串口…

作者头像 李华
网站建设 2026/5/7 8:58:28

OpenClaw:构建能“成为”你的AI数字孪生,实现自主社交代理

1. 项目概述:当AI学会“成为”你想象一下,你有一个数字化的“分身”。当你忙于其他事务时,它可以替你处理那些不紧急但需要回复的社交消息;在群聊中,它能以你的口吻和立场,与朋友的“分身”进行一场有来有往…

作者头像 李华
网站建设 2026/5/7 8:51:29

安心民宿管理系统的设计与实现

第1章 绪 论本章主要就安心民宿管理系统课题的背景进行研究和探讨,对目前民宿交易所存在的问题和现状做简单的分析,之后阐述选题的重要性与现实意义,通过探究民宿类系统的发展历程,给后面的系统需求分析、设计打下了扎实的理论基础…

作者头像 李华