传感器输出
深度转点云传感器将视场内的深度信息(距离值)转换为三维点云数据输出,支持实时生成可视化点云。
原理是基于相机的内参矩阵(焦距和光心),将深度图 (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{深度值} $$
其中:
(u, v)
是图像像素坐标。d
是深度值。(f_x, f_y)
是焦距。(c_x, c_y)
是光心。
应用场景
配置文件添加传感器 以下是配置文件 Config.json
的示例代码,用于添加 RGB 图像传感器:
Python 调用传感器接口 取图显示相关代码:
实时更新相机参数(位置、焦距、角度、装载飞机和形式):
例程链接
参数名称 | 取值范围 | 含义 |
---|---|---|
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] | 安装姿态,四元数方式表示。 |
参数名称 | 取值范围 | 含义 |
---|---|---|
SendProtocol | [mode, IP, port, …] | 配置数据传输协议,支持共享内存和 UDP。 |
SendProtocol[0] | 0: 共享内存;1: UDP 压缩传输 | 选择传输方式。 |
SendProtocol[5] | 端口号 | 数据传输的目标端口号。 |
技术参数 | 配置值 | 说明 |
---|---|---|
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 个像素生成一个点,点云稀疏度增加,计算量减少。 |