【实战教程】Ubuntu20.04 下 PX4+Gazebo+Mid360+Tare Planner 全流程搭建

【实战教程】Ubuntu20.04 下 PX4+Gazebo+Mid360+Tare Planner 全流程搭建

最近不少小伙伴私信问 PX4 结合 Mid360 激光雷达和 Tare Planner 的环境搭建问题,索性整理了一份保姆级实战教程,基于 Ubuntu20.04 + I7 笔记本环境,从 PX4 源码编译到 Gazebo 仿真、Mid360/IMU 集成,再到 Tare Planner 部署,全程踩坑总结 + 实操指令,新手也能跟着跑通。

一、基础环境:PX4 源码编译与环境配置

1.1 源码下载与分支切换

首先搞定 PX4 核心源码,建议选择 V1.13 版本(稳定性高,适配性好):

# 创建PX4专属目录,克隆源码(--recursive拉取子模块) git clone https://github.com/PX4/PX4-Autopilot.git --recursive cd PX4-Autopilot # 切换到V1.13分支并更新子模块 git checkout -b V1.13 git submodule update --init --recursive

1.2 依赖安装与系统配置

运行 PX4 官方脚本完成环境初始化,过程中所有弹窗提示直接确认即可:

bash ./Tools/setup/ubuntu.sh # 可选:跳过nuttx/仿真工具(按需选择) # bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools

安装完成后必须重启系统,让依赖生效。

1.3 编译避坑:Python 版本冲突

重启后编译 PX4 SITL+Gazebo,大概率会遇到 empy 包版本问题,按以下步骤解决:

# 卸载冲突包 pip3 uninstall -y empy em cheetah3 Cheetah # 安装兼容版本(3.3.4亲测可用) pip3 install empy==3.3.4 # 验证安装结果 pip3 show empy # 清理旧构建缓存(关键!避免编译残留) cd ~/PX4-Autopilot make clean rm -rf build/px4_sitl_default # 重新编译核心指令 make px4_sitl_default gazebo

二、硬件集成:Mid360 激光雷达 + IMU 配置

2.1 模型文件放置

将 Mid360 和 IMU 的仿真模型文件,放到 PX4 的 Gazebo 模型目录:

PX4-Autopilot/Tools/sitl_gazebo/models/

目录结构参考:

  • models/imu:IMU 仿真模型
  • models/mid360:Livox Mid360 激光雷达仿真模型

cmu的tare planner环境构建,indoor.world导入:

2.2 SDF 文件修改:挂载传感器到 R1_ROVER

编辑PX4-Autopilot/Tools/sitl_gazebo/models/r1_rover/r1_rover.sdf,在 base_link 下添加 IMU 和 Mid360 的挂载配置:

<!-- IMU挂载(200Hz频率) --> <INCLUDE> <URI>model://imu</URI> <POSE>0 0.06 0 0 0 0</POSE> </INCLUDE> <JOINT name="imu_joint" type="fixed"> <CHILD>imu::link</CHILD> <PARENT>r1_rover::base_link</PARENT> <AXIS> <XYZ>0 0 1</XYZ> <LIMIT> <UPPER>0</UPPER> <LOWER>0</LOWER> </LIMIT> </AXIS> </JOINT> <!-- Mid360激光雷达挂载(10Hz频率) --> <INCLUDE> <URI>model://mid360</URI> <POSE>0 0 0 0 30 0</POSE> </INCLUDE> <JOINT name="mid360_joint" type="fixed"> <CHILD>mid360::link</CHILD> <PARENT>r1_rover::base_link</PARENT> <AXIS> <XYZ>0 0 1</XYZ> <LIMIT> <UPPER>0</UPPER> <LOWER>0</LOWER> </LIMIT> </AXIS> </JOINT> <!-- 加载IMU仿真插件 --> <PLUGIN name="gazebo_imu_plugin" filename="libgazebo_imu_plugin.so"> <robotNamespace></robotNamespace> <linkName>rover/imu_link</linkName> </PLUGIN>

2.3 Launch 文件适配:指定仿真环境

修改PX4-Autopilot/launch/mavros_posix_sitl.launch,配置室内仿真世界和车辆模型:

<!-- 核心参数修改 --> <arg name="vehicle" default="r1_rover"/> <arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/indoor.world"/> <arg name="sdf" default="$(find mavlink_sitl_gazebo)/models/$(arg vehicle)/$(arg vehicle).sdf"/> <!-- MAVROS通信配置 --> <arg name="fcu_url" default="udp://:14540@localhost:14557"/>

三、依赖编译:Livox 仿真与 Fast-LIO

完成传感器配置后,编译激光雷达仿真和 SLAM 相关包(基于 px4_ws 工作空间):

cd ~/px4_ws # 编译Livox激光雷达仿真包 catkin build livox_laser_simulation # 编译Fast-LIO(激光SLAM核心) catkin build fast_lio

四、一键运行:PX4+Gazebo+Fast-LIO

4.1 启动 PX4 Gazebo 仿真

cd ~/px4_ws source devel/setup.bash cd src/PX4/PX4-Autopilot # 配置Gazebo环境变量 source Tools/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/sitl_gazebo # 启动核心仿真 roslaunch px4 mavros_posix_sitl.launch

此时会弹出 Gazebo 界面,能看到 R1_ROVER 搭载 IMU 和 Mid360 的模型,传感器链路正常。

gazebo界面显示:

4.2 启动 Fast-LIO 建图

新开终端,执行:

cd ~/px4_ws source devel/setup.bash roslaunch fast_lio mapping_mid360.launch

打开 RVIZ,订阅/cloud_registered话题,就能看到 Mid360 实时建图结果。如图:

4.3 快速终止仿真(避坑小技巧)

如果 Gazebo 卡死 / 退出不彻底,用以下指令强制清理进程:

killall gzclient killall gzserver

五、地面站配置:QGroundControl 安装

5.1 依赖预处理

Ubuntu 下安装 QGC 前,先解决串口和视频流依赖:

# 添加串口权限 sudo usermod -a -G dialout $USER # 卸载冲突的modemmanager sudo apt-get remove modemmanager -y # 安装视频流依赖 sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y sudo apt install libqt5gui5 libfuse2 -y

执行完后注销并重新登录,让权限生效。

5.2 安装与运行

# 下载最新版QGC AppImage wget https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage # 添加执行权限 chmod +x ./QGroundControl.AppImage # 运行QGC ./QGroundControl.AppImage

首次运行会引导配置单位(建议选公制)、飞行器类型(PX4 Pro),完成后即可连接 PX4 SITL,实时监控车辆状态。

六、Tare Planner 部署:ROS Noetic 环境搭建

Tare Planner 依赖 ROS Noetic,Ubuntu20.04 下一键安装:

# 1. 添加ROS软件源 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' # 2. 添加验证密钥 sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654 # 3. 更新软件源 sudo apt update # 4. 安装Noetic完整版(包含所有核心包) sudo apt install ros-noetic-desktop-full # 5. 初始化rosdep(解决依赖必备) sudo rosdep init rosdep update # 若rosdep init报错(网络问题),替换为: # sudo apt install python3-rosdep2 # sudo rosdep2 init # rosdep2 update # 6. 永久激活ROS环境 echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc

安装完成后,即可基于 Noetic 环境编译和运行 Tare Planner 相关功能包。

七、常见问题排查

  1. 编译报错 “empy not found”:确认 pip3 安装的 empy 版本为 3.3.4,且清理了 PX4 旧构建缓存;
  2. Gazebo 无 Mid360 模型:检查模型文件路径是否正确,SDF 文件中 URI 是否为model://mid360
  3. QGC 无法连接 PX4:确认 MAVROS 的 fcu_url 端口配置正确,PX4 SITL 是否正常启动;
  4. Fast-LIO 无点云:检查 Mid360 仿真插件是否加载,ROS 话题/livox/lidar是否有数据。

总结

这套流程覆盖了 PX4 仿真环境搭建、Mid360/IMU 硬件集成、Fast-LIO 建图和 QGroundControl 地面站配置,核心是解决编译依赖、模型挂载和环境变量这三个关键点。如果有小伙伴在实操中遇到其他问题,欢迎评论区交流~

参考文档:

Read more

模板进阶:从非类型参数到分离编译,吃透 C++ 泛型编程的核心逻辑

模板进阶:从非类型参数到分离编译,吃透 C++ 泛型编程的核心逻辑

🔥草莓熊Lotso:个人主页 ❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》 ✨生活是默默的坚持,毅力是永久的享受! 🎬 博主简介: 文章目录 * 前言: * 一. 非类型模板参数:让模板支持 “编译期常量配置” * 1.1 什么是非类型模板参数? * 1.2 必须遵守的 2 个关键规则 * 二. 模板特化:解决 “特殊类型” 的适配问题 * 2.1 解决 “通用模板失效” 的例子 * 2.2 类模板特化:比函数特化更常用 * 2.2.1 全特化:所有模板参数都确定 * 2.3.2 偏特化:对模板参数做 “条件限制”

By Ne0inhk
【探寻C++之旅】C++11 深度解析:重塑现代 C++ 的关键特性

【探寻C++之旅】C++11 深度解析:重塑现代 C++ 的关键特性

请君浏览 * 前言 * 1. C++的发展历史 * 2. 列表初始化:统一对象初始化的优雅方案 * 2.1 从 C++98 到 C++11 的突破 * 2.2 std::initializer_list:容器初始化的 “神器” * 3. 右值引用和移动语义:彻底解决拷贝性能痛点 * 3.1 左值 vs 右值 * 3.2 左值引用 vs 右值引用 * 3.3右值引用的使用场景 * 3.3.1参数匹配 * 3.3.2 类型分类 * 3.3.3 移动构造和移动赋值

By Ne0inhk

C++ 设计模式概述及常用模式

C++ 设计模式概述 本文介绍了C++中23种设计模式的分类及实现示例,主要分为三大类: 创建型模式(5个):单例模式(常用)、工厂方法模式(常用)、抽象工厂模式(常用)、建造者模式和原型模式。这些模式专注于对象的创建机制。 结构型模式(7个):适配器模式(常用)、桥接模式、组合模式和装饰器模式(常用)等。这些模式处理类和对象的组合方式。 行为型模式:未完整列出,但包含观察者模式等(未展示完整代码)。 文章通过简洁的C++代码示例展示了常用设计模式的实现方法,如单例模式通过私有构造函数和静态方法确保唯一实例,工厂方法模式通过抽象工厂类创建产品等。这些模式为解决特定设计问题提供了可重用的解决方案。 C++ 设计模式概述及常用模式 设计模式可分为三大类:创建型、结构型、行为型。以下是23个设计模式的分类及代码示例: 一、创建型模式(5个) 1. 单例模式(Singleton)⭐ 常用 classSingleton{private:static

By Ne0inhk