ros+px4仿真中的二维激光雷达消息

数据结构

ros 提供了一个特殊的消息类型 LaserScan来存储激光信息。

LaserScan 消息是 ros 激光扫描数据的软件层表示。消息的规范定义如下:

复制代码
#
# 测量的激光扫描角度,逆时针为正
# 设备坐标帧的0度面向前(沿着X轴方向)
#
Header header
float32 angle_min        # scan的开始角度 [弧度]
float32 angle_max        # scan的结束角度 [弧度]
float32 angle_increment  # 测量的角度间的距离 [弧度]
float32 time_increment   # 测量间的时间 [秒]
float32 scan_time        # 扫描间的时间 [秒]
float32 range_min        # 最小的测量距离 [米]
float32 range_max        # 最大的测量距离 [米]
float32[] ranges         # 测量的距离数据 [米] (注意: 值 < range_min 或 > range_max 应当被丢弃)
float32[] intensities    # 强度数据 [device-specific units]

这些数据也都对应了 launch 文件中的参数。

在上面的数据结构中,range_min 和 range_max 表示激光雷达的测量范围,因为激光雷达在太近和太远的地方都不准确。

ranges 则是一个数组,里面存放的就是距离数值。

加入 range_min 为 -pi,range_max 为 pi 则扫描就是从 -180 度开始,到 +180 度结束 正角度代表顺时针方形,负角度代表逆时针角度

launch 文件

结合 2D 避障中的 launch 文件,分析其调用顺序,在启动文件中,调用到 2Dlidar_px4.launch 文件:

之后找到此文件可以看到其调用了激光雷达的 sdf 格式文件:

之后可以找到此 sdf 文件,可以看到与 ros 中的数据类型对应:

gazebo可视化激光雷达

在vfh加载模型的launch文件 2Dlidar_px4_vfh.launch 文件中,调用的时 px4 工程中的模型文件:

模型参数 "iris" 以及 "iris_rplidar" 都是可以打开激光雷达的蓝色光束的,但如果打开gazebo时没有蓝色光束,很有可能是加载world文件时,world文件中有包含飞机模型的配置,将其屏蔽了:

将此world修改为空世界文件 empty,不包含任何飞机信息,则可以正常显示:

后续再修改world文件即可

仿真中经常有0.1m的小雷达值

这是由于激光雷达测到了飞机的桨叶,因此需要将激光雷达的高度调高,在工程中,调用的是 iris_2Dlidar_vfh.sdf 文件来调用的激光雷达模型,会传入激光雷达的位置参数,将其设置的高一些即可:

相关推荐
CS_Zero3 天前
激光雷达YDLiDAR驱动与ROS2环境搭建
无人机·飞控·ros2·激光雷达·避障
微小冷4 天前
ROS2 Xacro机器人建模初步教程
机器人·ros·rviz·urdf·xacro
集智飞行9 天前
开源一个无人机MINCO轨迹规划库,纯C++,支持2D和3D以及多种变形
ros·无人机·轨迹优化
黑马水牛14 天前
Carla仿真系列:10_Carla 双目障碍物测距,视差图还原真实距离
python·计算机视觉·ros·双目·carla仿真
行智科技15 天前
PX4 EKF2 源码解析(二):接口层、算法层与符号生成层
无人机·px4·数据融合·ekf2
黑马水牛18 天前
Carla仿真系列:9_Carla 单目障碍物测距,四种方法原理与实测
经验分享·python·深度学习·计算机视觉·ros·传感器·carla仿真
徒慕风流19 天前
激光雷达回波信号滤波与时刻鉴别算法:原理、代码实现与仿真验证
python·算法·激光雷达
火车站卖橘子22 天前
Mac搭建ROS初始环境
ros
M-Robots echo22 天前
轻量化裁剪方案解析:M-Robots 模块化构建,适配高低端各类机器人硬件平台
java·机器人·ros·开源社区·atomgit·m-robots
M-Robots echo23 天前
安全机制架构解析:M-Robots 分层安全体系,筑牢机器人设备运行底座
机器人·ros·鸿蒙·开源社区·m-robots