news 2026/7/6 14:48:47

Gazebo仿真PX4+3D激光雷达的搭建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Gazebo仿真PX4+3D激光雷达的搭建

Gazebo仿真无人机+3D激光雷达的搭建

系统要求:Ubuntu22、24及以上版本。

  1. 以PX4开源工程为基础,先参考官方文档 https://docs.px4.io/main/en/sim_gazebo_gz/ 搭建基本的Gazebo+无人机仿真,注意安装Gazebo而非老版本Gazebo classic。跑通make px4_sitl gz_x500_lidar_2d
  2. 以gz_x500_lidar_2d工程为模板实现无人机+3D激光雷达。

实现步骤

  1. 路径ROMFS/px4fmu_common/init.d-posix/airframes下添加编译目标:复制一个4001_gz_x500重命名为4022_gz_x500_mid360
  2. 路径Tools/simulation/gz/models下,复制x500_lidar_2d文件夹,重命名为x500_mid360,修改无人机和添加的LiDAR属性,uri指3D模型文件,上传资源可下载:https://download.csdn.net/download/CSUzhangpeike/93073753?spm=1001.2014.3001.5503
<?xml version="1.0" encoding="UTF-8"?><sdfversion='1.9'><modelname='x500_mid360'><includemerge='true'><uri>x500</uri></include><includemerge='true'><!-- <uri>https://fuel.gazebosim.org/1.0/OpenRobotics/models/Lidar 2d v2</uri> --><uri>model://mid360</uri><pose>0 0 .35 0 0 0</pose></include><jointname="LidarJoint"type="fixed"><parent>base_link</parent><child>link</child><poserelative_to="base_link">0 0 0 0 0 0</pose></joint></model></sdf>
  1. 同上路径,复制lidar_2d_v2文件夹到同一路径下,重命名为mid360,与步骤2中LiDAR的uri保持一致。修改其下的model.sdf,model name\3D模型\scan即扫描参数,
<?xml version="1.0"?><sdfversion="1.6"><modelname="mid360"><linkname="link"><pose>0 0 0 0 0 0</pose><inertial><pose>0 0 0.0435 0 0 0</pose><mass>0.37</mass><inertia><ixx>0.00034437749999999994</ixx><ixy>0</ixy><ixz>0</ixz><iyy>0.00034437749999999994</iyy><iyz>0</iyz><izz>0.00022199999999999998</izz></inertia></inertial><collisionname="collision_base"><pose>0 0 0.0205 0 0 0</pose><geometry><box><size>0.06 0.06 0.041</size></box></geometry></collision><collisionname="collision_mid"><pose>0 0 0.055 0 0 0</pose><geometry><cylinder><radius>0.025</radius><length>0.028</length></cylinder></geometry></collision><collisionname="collision_top"><pose>0 0 0.078 0 0 0</pose><geometry><box><size>0.056 0.056 0.018</size></box></geometry></collision><visualname="visual"><geometry><mesh><!-- 3D模型 --><uri>model://mid360/meshes/livox_mid360.dae</uri></mesh></geometry></visual><sensorname="mid360"type="gpu_lidar"><gz_frame_id>link</gz_frame_id><pose>0 0 0.055 0 0 0</pose><ray><scan><horizontal><samples>1000</samples><resolution>1</resolution><min_angle>-3.14159265356195</min_angle><max_angle>3.14159265356195</max_angle></horizontal><vertical><samples>32</samples><resolution>1</resolution><min_angle>-0.126012666</min_angle><max_angle>0.963769999</max_angle></vertical></scan><range><min>0.1</min><max>70</max><resolution>0.01</resolution></range><noise><type>gaussian</type><mean>0.0</mean><stddev>0.001</stddev></noise></ray><always_on>1</always_on><update_rate>10</update_rate><visualize>true</visualize><topic>mid360_lidar</topic></sensor></link></model></sdf>

编译与测试

# 一般编译makepx4_sitl gz_x500_mid360# 设置仿真环境模型makepx4_sitl gz_x500_mid360PX4_GZ_WORLD=forest

下一篇,介绍如何将Gazebo产生的传感器数据转为ROS2消息,并跑通激光雷达SLAM,也叫激光里程计LiDAR Inertial Odometry。
跑通激光里程计

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

扫描电子显微镜(SEM):EBIC/EBAC成像的基本原理、技术及应用案例

电子束感应电流 (EBIC) 和电子束吸收电流 (EBAC) 是除二次电子 (SE) 和背散射电子 (BSE) 成像外&#xff0c;还可用于电子显微镜的成像技术。EBAC 通过图像对比度显示样品中的电流路径。它用于检测电气设备中的短路和断路。同样&#xff0c;EBIC 显示样品中的电场&#xff0c;主…

作者头像 李华
网站建设 2026/7/6 14:46:07

HAL_Delay 为什么不能在中断里调?

前言很多 STM32 新手写过这样的代码&#xff1a;void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {HAL_Delay(50); // 按键消抖HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); }下载后发现&#xff1a;按键按下去&#xff0c;程序卡死了。为什么 HAL_Delay 在 main 循环里用得…

作者头像 李华
网站建设 2026/7/6 14:44:11

KMX62与PIC18F45K22在嵌入式运动控制中的优化应用

1. 为什么选择KMX62与PIC18F45K22组合在嵌入式运动控制领域&#xff0c;传感器与微控制器的选型往往决定了整个系统的性能上限。KMX62作为一款集成三轴加速度计和三轴磁力计的6DOF IMU传感器&#xff0c;与PIC18F45K22这款8位微控制器的组合&#xff0c;在成本、性能和功耗之间…

作者头像 李华
网站建设 2026/7/6 14:40:17

什么是*Bash* *循环*的正确用法?

循环结构存在于每种编程语言中,包括 Bash。循环是 shell 脚本中的重要构建块,它允许迭代执行一段代码。Bash 循环结构包括 for 循环、while 循环和 until 循环。 👉 有时,你可能会看到 bash 中 select 循环 的引用。它不属于 bash 循环结构 的一部分。你可以在我的博文 《…

作者头像 李华
网站建设 2026/7/6 14:37:26

模板基础与 SFINAE

模板基础与 SFINAE 1. 函数模板与类模板的区别 面试题&#xff1a;函数模板和类模板在使用上有什么关键区别&#xff1f; 函数模板支持模板参数推导——调用时不需要指定模板参数&#xff0c;编译器根据实参类型自动推导&#xff1a; #include <iostream> #include <t…

作者头像 李华
网站建设 2026/7/6 14:37:21

git的分支介绍

当你在做一个新功能的时候&#xff0c;最好是在一个独立的区域上开发&#xff0c;通常称之为分支。分支之间相互独立&#xff0c;并且拥有自己的历史记录。这样做的原因是&#xff1a;稳定版本的代码不会被破坏不同的功能可以由不同开发者同时开发。开发者可以专注于自己的分支…

作者头像 李华