别再为PX4编译报错头疼了!手把手教你用Ubuntu 20.04 + ROS2 Foxy搞定Gazebo无人机仿真

张开发
2026/4/7 13:08:06 15 分钟阅读

分享文章

别再为PX4编译报错头疼了!手把手教你用Ubuntu 20.04 + ROS2 Foxy搞定Gazebo无人机仿真
从零搭建PX4ROS2无人机仿真环境的避坑指南第一次在Ubuntu 20.04上配置PX4和ROS2 Foxy进行Gazebo仿真时我几乎被各种报错折磨到崩溃。从虚拟机配置不当导致的编译失败到网络问题引发的依赖下载中断再到各种库文件缺失的诡异错误——这些坑我都踩过。本文将分享一套经过实战验证的配置流程特别针对那些让初学者抓狂的典型错误提供解决方案。1. 虚拟机环境准备避开性能陷阱很多教程会直接跳到PX4安装步骤但虚拟机的基础配置往往决定了后续能否顺利编译。我的第一次尝试就因内存分配不足而失败浪费了整整一天时间排查。1.1 虚拟机参数优化内存分配至少分配40GB存储空间默认20GB很容易在编译时耗尽运行内存4GB是底线8GB能显著提升Gazebo运行流畅度CPU核心设置为4核可加速编译过程实测减少30%等待时间提示使用free -h命令可实时监控内存使用情况避免资源耗尽导致系统卡死1.2 网络稳定性增强GitHub连接不稳定是导致子模块下载失败的常见原因。通过修改/etc/hosts文件添加以下内容可显著改善140.82.112.4 github.com 185.199.108.154 github.global.ssl.fastly.net更新后执行sudo systemctl restart systemd-resolved使配置生效2. ROS2 Foxy安装小鱼的智慧官方安装指南需要手动处理依赖关系这对新手极不友好。推荐使用国内开发者维护的一键安装工具wget http://fishros.com/install -O fishros . fishros选择1安装ROS2 Foxy工具会自动完成软件源更换解决apt-get下载慢的问题所有依赖项安装环境变量配置安装完成后验证source /opt/ros/foxy/setup.bash ros2 doctor3. PX4源码编译那些官方没告诉你的细节3.1 源码下载的正确姿势直接克隆主仓库远远不够必须使用--recursive参数获取所有子模块git clone https://github.com/PX4/PX4-Autopilot.git --recursive如果中途失败很常见执行以下恢复命令cd PX4-Autopilot git submodule update --init --recursive3.2 依赖安装的隐藏关卡官方脚本ubuntu.sh有时会漏装关键依赖。手动补充这些包能避免后续错误sudo apt install libopencv-dev libeigen3-dev protobuf-compiler编译时若出现Python相关错误可能是版本冲突导致sudo update-alternatives --config python34. ROS2与PX4通信跨越版本鸿沟4.1 CMake版本升级实战PX4要求CMake 3.16但Ubuntu 20.04默认安装3.10。手动升级步骤从官网下载最新二进制包如3.30.8解压并安装到系统目录tar -zxvf cmake-3.30.8-linux-x86_64.tar.gz sudo mv cmake-3.30.8-linux-x86_64 /usr/share/cmake-3.30.8 sudo ln -sf /usr/share/cmake-3.30.8/bin/cmake /usr/bin/cmake验证版本cmake --version4.2 Micro XRCE-DDS的安装陷阱网络不稳定时代理安装极易失败。建议分段执行git clone https://github.com/eProsima/Micro-XRCE-DDS-Agent.git cd Micro-XRCE-DDS-Agent mkdir build cd build cmake .. -DTHIRDPARTYON make -j$(nproc) sudo make install常见库文件缺失问题解决方案sudo sh -c echo /usr/local/lib /etc/ld.so.conf sudo ldconfig5. Gazebo仿真实战从启动到控制5.1 工作区构建规范创建符合ROS2规范的工作区结构mkdir -p ~/px4_ros2_ws/src cd ~/px4_ros2_ws/src git clone https://github.com/PX4/px4_msgs.git git clone https://github.com/PX4/px4_ros_com.git编译时需要先source ROS2环境cd .. source /opt/ros/foxy/setup.bash colcon build --symlink-install5.2 联合调试技巧启动Gazebo仿真cd ~/PX4-Autopilot make px4_sitl gazebo-classic新终端中运行ROS2节点cd ~/px4_ros2_ws source install/local_setup.bash ros2 launch px4_ros_com sensor_combined_listener.launch.py调试时保持这三个终端同时运行Micro XRCE-DDS代理端口8888Gazebo仿真环境ROS2控制节点6. 常见错误代码速查手册错误提示原因分析解决方案Failed to fetch submodule网络连接问题使用手机热点或修改hosts文件CMake Error at CMakeLists.txtCMake版本过低升级到3.16版本libmicroxrceddsagent.so: cannot open shared object file库路径未配置更新/etc/ld.so.confGazebo failed to load model模型文件缺失重新执行make px4_sitl gazebo-classic遇到编译错误时先执行make distclean再重新编译往往能解决许多诡异问题。Gazebo黑屏通常是显卡驱动问题尝试export LIBGL_ALWAYS_SOFTWARE1

更多文章