RflySimSDK v3.08
RflySimSDK说明文档
载入中...
搜索中...
未找到
仿Livox mid40激光雷达

mid40激光雷达

Livox 激光雷达采用独特的非重复扫描方式,视场覆盖率将随时间推移而显著提高,可减小视场内物体被漏检的概率。 当积分时间为 0.1 s 秒时,mid-40 的视场覆盖率与 32 线机械式激光雷达相近;当积分时间为 0.5 s 秒时,mid-40 的视场覆盖率与 64 线机械式激光雷达相当。而随着积分时间增加,且覆盖率随积分时间增加而接近 100。

大疆激光雷达的实验数据展示

1. 功能概述

1.1 支持的功能操作

传感器输出

  • 整体扫描图案由多个“8”字形轨迹组成,构成类似花瓣的分布模式。用户可通过调整扫描参数(如花瓣数量、曲率等)优化点云的分布。

应用场景

  • **自动驾驶与导航**:
    • 提供实时世界坐标系点云,用于车辆环境感知、路径规划。
  • **无人机测绘**:
    • 实现无人机在飞行过程中实时点云采集并定位。
  • **机器人环境建模**:
    • 用于SLAM(同步定位与建图),支持动态环境的实时建模。

1.2 使用示例

配置文件添加传感器 以下是配置文件 Config.json 的示例代码,用于添加激光雷达传感器:

{
"VisionSensors":[
{
"SeqID":0, //视觉传感器序号0 1 2 3 ...排序。如果填0,则自动递增排序。
"TypeID":22, //mid40激光雷达
"TargetCopter":1, //传感器绑定的CopterID号
"TargetMountType":0,
"DataWidth":250, //半边花瓣(对应上图红色区域)的点数
"DataHeight":40,//表示一帧需要扫描多少个半边花瓣
"DataCheckFreq":10,//图像检查更新频率,如果发现UE渲染更新了(取决于UE刷新帧率),会立刻发出数据。UE刷新率+DataCheckFreq检查频率,共同决定图像延迟。
"SendProtocol":[1,0,0,0,0,0,0,0],
"CameraFOV":70.432, //半边花瓣长度的 2 倍。单位度。
"EularOrQuat":0, //使用欧拉角SensorAngEular还是四元数SensorAngQuat来设置视觉传感器姿态,默认使用0欧拉角。
"SensorPosXYZ":[0,0,-0.3], //视觉传感器的安装位置,和TargetMountType对应偏移中心,单位米
"SensorAngQuat":[0,0,0,0], // 视觉传感器的安装姿态,用四元数方式表示
"SensorAngEular":[0,0,0],// 视觉传感器的安装姿态,用欧拉角方式表示,单位弧度
"otherParams":[600,2.956,1.4,1.18,10,5,1,0,0,0,0,0,0,0,0,0] //激光最远距离(m),花瓣高度,花瓣的横向缩放比例,花瓣的左侧圆弧曲率,花由几个“8”字组成
}
]
}

注意:点云数据我们最终是以 int16 格式发布,这个值是与 otherParams[0]参数是耦合的。

例如,x_float 是激光雷达测量得到的点云的 x 轴浮点数值(单位米,数值小于otherParams[0]),则 x_int = x_float / otherParams[0] * 32767。因此,拿到点云数据后,需要再根据最远距离 otherParams[0],做一个逆向映射:x_float = x_int / 32767 * otherParams[0].

Python 调用传感器接口 取图显示相关代码:

vis = VisionCaptureApi.VisionCaptureApi() # 创建一个视觉传感器实例
vis.jsonLoad() # 加载Config.json中的传感器配置文件
isSuss = vis.sendReqToUE4() # 向RflySim3D发送取图请求
vis.startImgCap() # 开启取图
vis.hasData[i] # 图片i数据是否更新
vis.Img[i] # 图片i数据
show3d=Open3DShow.Open3DShow() # 创建3D点云显示实例
show3d.CreatShow(0) # 创建点云显示窗口
show3d.UpdateShow(vis.Img[0]) # 更新点云

例程链接

1.3 现实中的Mid40激光雷达


2. 传感器配置

2.1 传感器安装

参数名称 取值范围 含义
TargetMountType 0: 固定载具上(相对几何中心);1: 固定载具上 (相对底部中心);2: 固定地面上(监控);3:相对地面坐标系的吊舱相机,固定飞机上,但相机姿态不随飞机变化(地面坐标系);4:将传感器附加到另外一个传感器上 决定传感器的所属载体对象及安装方式。
TargetCopter 目标传感器ID(默认为0)或目标实体对象 ID (默认 1) 决定传感器安装方式后,选择目标测量对象ID。传感器固定在载具或地面上时,该值对应目标载具或其它实体对象的CopterID;传感器固定在其它传感器上时,该值对应目标传感器**SeqID**。
SensorPosXYZ [x, y, z] (单位:米) 相对于传感器所属载体对象的安装位置。
EulerOrQuat 0: 欧拉角;1: 四元数 选择安装姿态的表示方式。
SensorAngEular [roll, pitch, yaw] (弧度) 安装姿态,欧拉角方式表示。
SensorAngQuat [q0, q1, q2, q3] 安装姿态,四元数方式表示。

2.2 网络通信配置

参数名称 取值范围 含义
SendProtocol [mode, IP, port, …] 配置数据传输协议,支持共享内存和 UDP。
SendProtocol[0] 0: 共享内存;1: UDP 压缩传输 选择传输方式。
SendProtocol[5] 端口号 数据传输的目标端口号。

2.3 传感器技术规格

2.1 基本参数

参数名称 示例值 说明
SeqID 0 每个传感器在配置文件中的唯一编号,若为 0 则自动递增排序。
TypeID 22 传感器类型,22 表示 Livox MID40 激光雷达。
TargetCopter 1 传感器绑定的无人机编号,默认为绑定 1 号无人机。
TargetMountType 0 安装方式,0 表示固定在无人机几何中心。
DataWidth 250 表示半边花瓣(扫描区域)内点的数量,越大点云密度越高,但计算资源需求也增加。
DataHeight 40 表示一帧点云包含的半边花瓣数量,控制垂直方向点云的分布。
DataCheckFreq 10 Hz 点云更新频率,单位为 Hz,表示每秒点云发布的帧数。
CameraFOV 70.432扫描范围的水平视场角,等于半边花瓣长度的两倍,单位为度。
otherParams[0] 600 激光雷达的最大测距范围,单位为米。点云超出该范围的数据将被裁剪。
otherParams[1] 2.956 圆弧的弦高,控制单个花瓣的垂直高度,单位为度。
otherParams[2] 1.4 横向缩放比例,控制点云在 x 轴上的拉伸效果,默认为 1.4。
otherParams[3] 1.18 纵向曲率,调整“8 字形”花瓣的纵向曲率,值越大曲率越大,点云越集中于中间区域。
otherParams[4] 10 由几个“8”字组成一朵完整的花,值越大点云分布越密集,扫描间隔越小,覆盖率越高。几个8 字(一个八字是两片对称花瓣,4 段弧)组成一朵花,如下图所示是大疆激光雷达0.1s 的数据,也就是10 个八字(20 片花瓣)组成了一朵花。这样otherParams[4]=10。也就是说,相邻两个花瓣之间的角度为180/10=18 度。注意:为了保证扫描的均匀性,这几个花瓣并不是从左到右依次扫描的,扫描顺序是生成一个0 到N-1 的随机数列表,以此顺序来扫描这朵花的花瓣。
otherParams[5] 5 几 朵花 0 .1 s 2 0 个花瓣 1 0 个 8 字 组成一个图形。 也就是说,对于上图的 花的图像,需要均匀插入若干朵花,让他们进一步细分。这里默认值为 5 ,也就是说五朵花组成了一个图形。<br/注:这里的花朵是依次扫描的,如果每朵花有 2 0 个 花瓣 1 0 个 8 字 则每两个花瓣之间夹角是 3 60/20=18 度 ,每 5 朵花组成一个图形的话 ,那 相邻两朵花的 偏转 为1 8/ 5= 3.6 度。
otherParams[6] 1 每扫描完一 个图形 ,都会新引入一个随机 错位角度 ,让两个图案 不会完全重叠。 随机错位角度 为 rand (0, 1 )* otherParams[6]