跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / BashAI算法

Ubuntu18+ROS Melodic 配置 XT-Drone/Gazebo 无人机仿真及 Mid360 雷达集成

介绍在 Ubuntu 18 + ROS Melodic 环境下配置 XT-Drone 与 Gazebo 无人机仿真平台,并集成 Livox Mid360 激光雷达模型。主要内容包括安装 Mid360 仿真驱动、解决编译时的 protoc 版本冲突及 Anaconda 环境干扰、修改 SDF 文件将雷达模型挂载至无人机、配置 Gazebo 插件路径以及结合 FAST-LIO 进行联合仿真。通过修正环境变量和编译参数,实现了带 Mid360 雷达的无人机在 Gazebo 中的正常启动、控制及点云数据输出。

氛围发布于 2026/4/6更新于 2026/10/16109 浏览

实现 Mid360 仿真的接入

在虚拟环境中使用 Mid360 驱动,需要编译相应的仿真环境并配置 YAML 文件。

安装 Mid360 仿真环境

git clone https://github.com/Livox-SDK/Livox-SDK2.git
cd ./Livox-SDK2/
mkdir build
cd build
cmake .. && make -j
sudo make install

在主目录下创建工作空间:

mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://github.com/Livox-SDK/livox_ros_driver2.git
cd livox_ros_driver2
./build.sh ROS1
source ../../devel/setup.bash
roslaunch livox_ros_driver2 [launch file]

在此环境中安装 Mid360 仿真环境:

git clone https://github.com/qiurongcan/Mid360_imu_sim.git
cd ..
catkin_make
source devel/setup.bash
roslaunch livox_laser_simulation livox_simulation.launch
# 或使用带 IMU 版本
roslaunch livox_laser_simulation mid360_IMU_platform.launch

常见报错与解决方案

报错:Protoc、Math 库版本不对

错误日志显示 Gazebo 生成的 protobuf 文件与当前系统版本不兼容。核心原因是 Ubuntu 18 对该包支持度不好,导致 math 和 protoc 版本冲突。

解决步骤:

  1. 检查版本:
    protoc --version
    dpkg -l | grep protobuf
    ls /usr/local/include/google/protobuf
    
  2. 更换库:如果无法强行改版本,建议换用另一个兼容的库。
    cd ~/catkin_ws/src
    

git clone https://github.com/Luchuanzhao/Livox_simulation_customMsg mv Livox_simulation_customMsg livox_laser_simulation cd ~/catkin_ws/src/livox_laser_simulation/src

修改激光雷达文件路径为实际路径

修改点云格式:0->PointCloud;1/2->PointCloud2;3->CustomMsg

若后续使用 Faster-LIO,需使用 CustomMsg 并注释掉坐标变换代码

3. 将 `livox_laser_simulation` 中的 driver 引用改为 `driver2`,直到工作空间编译通过。

#### 报错:Anaconda 环境下的 Protoc 冲突

Anaconda 环境下的 protoc 可能导致编译冲突。即使环境变量已注释,仍需强制指定系统路径。

**解决步骤:**
1. 禁用 Conda:
   ```bash
   conda deactivate
   unset PYTHONPATH
   unset LD_LIBRARY_PATH
   export PATH=$(echo $PATH | tr ':' '\n' | grep -v "anaconda3" | paste -sd ':')
  1. 正确加载 ROS 环境:
    source /opt/ros/melodic/setup.bash
    echo $CMAKE_PREFIX_PATH # 必须包含 /opt/ros/melodic
    
  2. 设置系统 Protobuf:
    export Protobuf_INCLUDE_DIR=/usr/include
    export Protobuf_LIBRARY=/usr/lib/x86_64-linux-gnu/libprotobuf.so
    
  3. 清理旧编译目录并重新编译:
    rm -rf build devel
    

catkin_make


### 修改 Mid360 模型至无人机

逻辑是通过 launch 文件生成地图,SDF 文件加载无人机,无人机的 SDF 引入 Mid360 模型。

#### 创建无人机模型

在 PX4 固件的 models 路径下复制一个无人机模型文件夹并重命名(如 `iris_3d_lidar_360`)。

修改 `.sdf` 文件,加入 Mid360 雷达引用并屏蔽原始雷达:

```xml
<include>
<uri>model://Mid360</uri>
<pose>0 0 0.05 0 0 0</pose>
</include>
<joint name="lidar_joint" type="fixed">
<child>Mid360::livox_base</child>
<parent>base_link</parent>
<axis>
 <xyz>0 0 1</xyz>
 <limit><upper>0</upper><lower>0</lower></limit>
</axis>
</joint>
<!-- 注释掉原有的 Velodyne Lidar -->
创建激光雷达模型

将 Mid360 文件夹复制到 PX4 的 sitl_gazebo models 路径下。注意处理 livox_mid40 文件夹,确保 mesh 文件路径正确。

修改 Mid360.sdf 中的 <collision>、<visual> 标签引用的文件路径,以及 <csv_file_name> 路径。

在 indoor1.launch 中修改 vehicle 和 sdf 参数:

<arg name="vehicle" value="iris"/>
<arg name="sdf" value="iris_3d_lidar_360"/>

启动命令:

source /home/user/proj/xtdrone_ws/devel/setup.bash
source /home/user/proj/PX4_Firmware/Tools/setup_gazebo.bash
~/PX4_Firmware/
~/PX4_Firmware/build/px4_sitl_default
roslaunch px4 indoor1.launch
关键配置点
  1. Launch 文件名称:PX4 只关心机型名(去掉前缀),Gazebo 只关心 SDF 文件名。因此 vehicle 设为 iris,sdf 设为 iris_3d_lidar_360。
  2. SDF 路径格式:URI 必须是 model:// 开头,例如 model://Mid360。
  3. 插件路径:Gazebo 查找插件的顺序包括 GAZEBO_PLUGIN_PATH 和当前 workspace 的 devel/lib/。如果 livox 插件安装在其他目录,需在 .bashrc 中添加:
    export GAZEBO_PLUGIN_PATH=$GAZEBO_PLUGIN_PATH:/home/user/proj/livox_ws/devel/lib
    

控制无人机与显示激光雷达扫描效果

起飞方式

多旋翼 Offboard 模式起飞容易,给大于 0.3m/s 的期望 z 向速度即可。

  1. 按 i 把期望 z 向速度加到 0.3m/s 以上。
  2. 按 b 切到 offboard 模式。
  3. 按 t 解锁起飞。
  4. 飞到合适高度后,按 s 悬停。
Fast-LIO 联合仿真

配置传感器驱动文件 mid360s.yaml,设置 lidar_topic 和 imu_topic。注意外参标定。

启动映射:

roslaunch fast_lio mapping_mid360s.launch
环境冲突解决

启动 XTDrone/PX4 时建议禁用 Conda 环境,避免 Python 库冲突。

conda deactivate
roslaunch px4 indoor1.launch

Gazebo 基于代码的控制运行

XTDrone 支持多旋翼、固定翼等机型。Offboard 模式下上位机发布期望运动。

姿态控制示例

发送指令至 /mavros/setpoint_raw/attitude。可使用 PID 控制角度或角速度。

位姿真值

Gazebo 提供无人机位姿真值,可用于分析 SLAM 精度。

cd ~/XTDrone/sensing/pose_ground_truth/
python get_local_pose.py iris 1
速度指令控制

确认 Gazebo 和 XTDrone 接收的信号形式。MAVROS 节点负责数据交换。

话题 /xtdrone/iris_0/cmd_vel_flu 用于发送速度指令(geometry_msgs/Twist)。

可通过脚本循环发布旋转或移动指令。

Ego Planner 控制

Ego Planner 需要深度图 + 相机位姿或点云输入。可规划路径并执行定点飞行、旋转等任务。

目录

  1. 实现 Mid360 仿真的接入
  2. 安装 Mid360 仿真环境
  3. 或使用带 IMU 版本
  4. 常见报错与解决方案
  5. 报错:Protoc、Math 库版本不对
  6. 修改激光雷达文件路径为实际路径
  7. 修改点云格式:0->PointCloud;1/2->PointCloud2;3->CustomMsg
  8. 若后续使用 Faster-LIO,需使用 CustomMsg 并注释掉坐标变换代码
  9. 报错:Anaconda 环境下的 Protoc 冲突
  10. 修改 Mid360 模型至无人机
  11. 创建无人机模型
  12. 创建激光雷达模型
  13. 关键配置点
  14. 控制无人机与显示激光雷达扫描效果
  15. 起飞方式
  16. Fast-LIO 联合仿真
  17. 环境冲突解决
  18. Gazebo 基于代码的控制运行
  19. 姿态控制示例
  20. 位姿真值
  21. 速度指令控制
  22. Ego Planner 控制

更多推荐文章

查看全部
  • 前端请求后端 404/405/500 状态码排查与解决指南
  • 前端 WebSocket 实时通信:替代轮询的实践指南
  • DeepSeek-OCR-WEBUI 部署指南:低显存高吞吐文档处理方案
  • Python 爬虫基础教程:从原理到反爬策略
  • Java WebSocket 核心原理与实战应用
  • 基于LangGraph实现模块化Skills型AI Agent
  • Claude Skills 技能详解与最佳实践
  • Webman 框架性能对比分析
  • Openclaw 与 Scrapling 手动部署及 Walmart 数据采集策略
  • Capacitor 跨平台打包工具实战指南
  • Xilinx FPGA 实现 RISC-V 五级流水线 CPU 设计实战
  • 【机器人】具身导航 VLN 最新论文汇总 | Vision-and-Language Navigation
  • Nano Banana AI 绘图中文模糊问题:使用 Seedream 4.5 重渲染方案
  • Flutter 三方库 dart_mcp 实现鸿蒙端 AI Agent 通信协议
  • WebPlotDigitizer 图像数字化工具安装与配置指南
  • 适合程序员的 7 款高效 AI 开发工具
  • 腾讯 RecSys'24:基于行为微调 LLM 初始化物品 Embedding 的高效推荐方法
  • Python 官方下载与开发环境搭建完整指南
  • 基于 Leaflet Trackplayer 实现 WebGIS 高速轨迹可视化
  • 基于 Leaflet Trackplayer 的高速公路轨迹 WebGIS 可视化

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online