RflySimSDK v3.08
RflySimSDK说明文档
载入中...
搜索中...
未找到
深度转点云

深度转点云可视化

1. 功能概述

1.1 支持的功能操作

传感器输出

  • 深度转点云传感器将视场内的深度信息(距离值)转换为三维点云数据输出,支持实时生成可视化点云。

    原理是基于相机的内参矩阵(焦距和光心),将深度图 (u, v, d) 转换为点云 (X, Y, Z)

    $$ X = \frac{(u - c_x) \cdot Z}{f_x}\

    Y = \frac{(v - c_y) \cdot Z}{f_y}\

    Z = \text{深度值} $$

    其中:

应用场景

  • 3D 环境重建:通过深度图生成三维点云,用于重建真实场景的三维模型。
  • 无人机避障:使用点云数据检测障碍物位置,实现路径规划与导航。
  • SLAM(同步定位与建图):深度传感器与点云数据结合,可用于实时构建地图并进行定位。
  • 机器人或无人机检测与交互:将点云信息用于物体识别和精确定位。

1.2 使用示例

配置文件添加传感器 以下是配置文件 Config.json 的示例代码,用于添加 RGB 图像传感器:

{
"VisionSensors":[
{
"SeqID":0, //视觉传感器序号0 1 2 3 ...排序。如果填0,则自动递增排序。
"TypeID":7, //深度转点云
"TargetCopter":1, //传感器绑定的CopterID号
"TargetMountType":0, //固定飞机几何中心
"DataWidth":1024, //图像像素长度
"DataHeight":1024,//图像像素宽度
"DataCheckFreq":10,//图像检查更新频率
"SendProtocol":[1,0,0,0,0,0,0,0],
"CameraFOV":120, //视觉传感器的FOV视场角,和焦距呈现一定数值关系,能间接修改焦距。
"EularOrQuat":0, //使用欧拉角SensorAngEular还是四元数SensorAngQuat来设置视觉传感器姿态,默认使用0欧拉角。
"SensorPosXYZ":[0,0,-0.3], //视觉传感器的安装位置,和TargetMountType对应偏移中心,单位米
"SensorAngQuat":[0,0,0,0], // 视觉传感器的安装姿态,用四元数方式表示
"SensorAngEular":[0,0,0],// 视觉传感器的安装姿态,用欧拉角方式表示,单位弧度
"otherParams":[100,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0] //深度,步长,其余为预留位
}
]
}

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

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

实时更新相机参数(位置、焦距、角度、装载飞机和形式):

vs = vis.VisSensor[0] #获取第0号相机基本参数
# 修改其中的可变部分,只修改需要改变的部分即可
vs.TargetCopter=1 #修改视角绑定的飞机ID
vs.TargetMountType=0 # 修改视角绑定类型,固连飞机还是地面
vs.CameraFOV=90 # 修改视角的视场角(焦距),可以模拟对焦相机
vs.SensorPosXYZ=[0.3,-0.15,0] # 修改相机的位置,可以调整相机初始位置
vs.SensorAngEular=[0,0,0] # 修改相机的姿态,可以模拟云台转动
vis.sendUpdateUEImage(vs) # 发送更新数据

例程链接

1.3 现实中的深度转点云传感器


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 传感器技术规格

技术参数 配置值 说明
SeqID 0 每个传感器在 RflySim3D 内的唯一编号。若设为0,将自动确认序号并递增排序
TypeID 7 传感器类型,深度转点云传感器。
DataHeight 1024 点的数量 = DataWidth × DataHeight。点云数据的密度与深度图分辨率直接相关,分辨率越高,点云越密集。
DataWidth 1024 点的数量 = DataWidth × DataHeight。点云数据的密度与深度图分辨率直接相关,分辨率越高,点云越密集。
DataCheckFreq 10 Hz 数据刷新频率,默认 10Hz,最大支持取决于RflySim3D刷新率
CameraFOV 120° 测量视场角(默认为120),单位:度。FOV 越大,点云覆盖的范围越广,但点间的间距也可能变大(即空间分辨率降低)。
otherParams[0] 100 **深度范围**:限制点云生成的有效深度,超出范围的点将被裁剪。深度范围为 100 米,意味着点云中只能表示 0 到 100 米的点。
otherParams[1] 8 **步长**:决定生成点云的稀疏程度,步长越大,点云越稀疏。步长为 8:表示每隔 8 个像素生成一个点,点云稀疏度增加,计算量减少。