VisionCaptureApi 接口文档¶
简介¶
简述:本文件定义了RflySim无人机仿真平台视觉感知模块所需的数据结构与API类,为Python端向UE4仿真环境请求相机图像、各类传感器数据提供了基础交互支撑。
在RflySim仿真中,视觉任务是无人机自主导航、目标检测等智能算法开发的核心场景,需要Python端与UE4端完成参数交互与数据传输。本模块定义了用于向UE4发送相机参数设置、图像请求请求的结构体,以及来自CopterSim的IMU数据、距离传感器数据等各类感知数据的封装结构,同时提供了核心的VisionCaptureApi类实现Python端从UE4仿真环境获取仿真图像。它适用于开发基于视觉的无人机仿真算法,为仿真环境的视觉感知数据交互提供了统一的规范接口,可支持单目、多目相机仿真数据获取,结合IMU、距离传感器信息可完成多传感器融合仿真任务。
快速开始¶
最简可用示例,复制后修改最少配置即可运行。
from RflySimSDK.vision.VisionCaptureApi import VisionCaptureApi, VisionSensorReqNew
# 1. 初始化视觉捕获API,默认连接本地RflySim仿真环境
vision_api = VisionCaptureApi(ip="127.0.0.1")
# 2. 创建一个新的视觉传感器请求对象,默认请求RGB图像和位姿数据
sensor_req = VisionSensorReqNew()
# 3. 将视觉传感器请求添加到捕获列表
try:
vision_api.addVisSensor(sensor_req)
except Exception as e:
print(f"添加视觉传感器失败: {e}")
# 4. 欧拉角转四元数示例:滚转0度,俯仰0度,偏航90度,转换为四元数
roll = 0
pitch = 0
yaw = 90
quat = vision_api.euler2quat(roll, pitch, yaw, copter="iris", coordinate_frame="global")
print(f"转换得到的四元数: {quat}")
环境与依赖¶
- Python 环境:
>= 3.8.10 - 依赖库:
Open3DShow、copy、ctrl.IpManager、cv2、email、json、math、mmap、numpy、os、platform、psutil、re、socket、struct、subprocess、sys、threading、time、warnings - 前置准备:调用此接口前,需要确保已经正确导入RflySimSDK的vision模块。
核心接口说明¶
该模块 VisionCaptureApi.py 包含了配置变量、辅助函数及核心业务类。
全局常量与枚举定义¶
本节列出模块中所有可直接引用的全局常量和枚举定义。
独立常量¶
无
全局/独立函数¶
无
Queue 类¶
提供基础队列数据结构,用于先进先出(FIFO)形式的元素存储与管理。
__init__()¶
功能说明:初始化空队列实例 参数列表 (Args): 无参数 返回值 (Returns):
Queue实例对象
异常 (Raises): 无
enqueue(item)¶
功能说明:将元素添加到队列尾部 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
item |
任意类型 |
是 | - | 待添加到队列的元素 |
返回值 (Returns):
- 无
异常 (Raises): 无
dequeue()¶
功能说明:移除并返回队列头部元素 参数列表 (Args): 无参数 返回值 (Returns):
- 队列头部元素
异常 (Raises): 无
is_empty()¶
功能说明:判断当前队列是否为空 参数列表 (Args): 无参数 返回值 (Returns):
bool: 队列为空返回True,否则返回False
异常 (Raises): 无
size()¶
功能说明:获取队列中当前存储的元素数量 参数列表 (Args): 无参数 返回值 (Returns):
int: 队列元素数量
异常 (Raises): 无
示例:
from RflySimSDK.vision import Queue
# 创建队列并添加元素
q = Queue()
q.enqueue("first frame")
q.enqueue("second frame")
# 查看队列大小
print(q.size()) # 输出 2
# 取出队列元素
item = q.dequeue()
print(item) # 输出 first frame
# 判断是否为空
print(q.is_empty()) # 输出 False
RflyTimeStmp 类¶
用于管理无人机视觉数据时间戳的工具类,可存储和更新时间戳数值,配合视觉捕获模块使用。
__init__(iv)¶
功能说明:初始化 RflyTimeStmp 实例,设置初始时间戳数值
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
任意数值类型 | 是 | - | 初始时间戳数值 |
返回值 (Returns):
RflyTimeStmp实例对象
异常 (Raises): 无
Update(iv)¶
功能说明:更新存储的时间戳数值为新的输入值 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
iv |
任意数值类型 | 是 | - | 待更新的新时间戳数值 |
返回值 (Returns): 无 异常 (Raises): 无
示例:
from RflySimSDK.vision import RflyTimeStmp
# 初始化时间戳为0
ts = RflyTimeStmp(0)
# 更新时间戳为当前仿真时间12.34
ts.Update(12.34)
VisionSensorReq 类¶
用于向UE4仿真环境请求并设置相机参数的C++结构体对应Python类,可在RflySim无人机视觉仿真中配置视觉传感器参数。
__init__()¶
功能说明:初始化VisionSensorReq类实例,所有参数成员按照结构体默认定义创建
参数列表 (Args):
无参数
返回值 (Returns):
VisionSensorReq实例对象
异常 (Raises): 无
示例:
from RflySimSDK.vision import VisionSensorReq
# 创建视觉传感器参数请求对象
sensor_req = VisionSensorReq()
# 配置目标飞机ID
sensor_req.TargetCopter = 1
# 设置相机安装位置
sensor_req.SensorPosXYZ = [0, 0, 0.1]
VisionSensorReqNew 类¶
该类是用于向UE4仿真环境发送请求、设置视觉传感器参数的C++风格结构体,在RflySim无人机视觉仿真中用于定义视觉传感器的配置信息。
__init__()¶
功能说明:初始化VisionSensorReqNew实例对象
参数列表 (Args):
无参数
返回值 (Returns):
VisionSensorReqNew实例对象
异常 (Raises): 无
imuDataCopter 类¶
用于从CopterSim接收无人机IMU传感器数据的数据结构体,存储校验位、消息序号、时间戳、加速度计数据和陀螺仪数据。
__init__(imu_name, node=None)¶
功能说明:初始化imuDataCopter实例,设置IMU数据话题名称和ROS节点 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
imu_name |
str |
否 | "/rflysim/imu" |
IMU数据的ROS话题名称 |
node |
Any |
否 | None |
用于发布IMU数据的ROS节点对象 |
返回值 (Returns):
imuDataCopter实例对象
异常 (Raises):
- 无
AlignTime(img_time)¶
功能说明:将IMU数据时间戳与图像时间戳进行时间对齐,匹配对应时刻的IMU数据 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
img_time |
double |
是 | - | 需要对齐的图像时间戳 |
返回值 (Returns):
- 对齐后匹配的IMU数据
异常 (Raises):
- 无
Imu2ros(node=None)¶
功能说明:将当前IMU数据转换为ROS格式并发布 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
node |
Any |
否 | None |
用于发布IMU数据的ROS节点对象,若为None则使用初始化时设置的节点 |
返回值 (Returns):
- 无
异常 (Raises):
- 无
示例:
from RflySimSDK.vision import imuDataCopter
# 初始化IMU数据接收对象
imu = imuDataCopter()
# 对图像时间戳123.45进行时间对齐,获取对应时刻IMU
aligned_imu = imu.AlignTime(123.45)
DistanceSensor 类¶
测距传感器功能类,用于在RflySim无人机仿真中实现距离传感器相关的仿真逻辑。
__init__()¶
功能说明:初始化DistanceSensor类实例
参数列表 (Args):
无
返回值 (Returns):
DistanceSensor实例对象
异常 (Raises): 无
SensorReqCopterSim 类¶
这是一个用于向UE4发送传感器数据请求的结构体类,对应C++结构体定义,主要在RflySim无人机仿真中传递传感器请求配置信息。
__init__()¶
功能说明:初始化空的传感器请求结构体实例 参数列表 (Args): 无 返回值 (Returns):
SensorReqCopterSim实例对象
异常 (Raises): 无
VisionCaptureApi 类¶
这是Python端从UE4获取图像的API类。
__init__(ip='127.0.0.1')¶
功能说明:初始化视觉图像捕获API实例,建立与UE4端的图像服务连接。 参数列表 (Args):
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| ip | str |
127.0.0.1 |
UE4图像服务所在的IP地址,本地运行时使用默认本地回环地址即可 |
返回值 (Returns):无 异常 (Raises):无
euler2quat(r, p, y, copter, coordinate_frame="global")¶
功能说明:将欧拉角转换为四元数,支持不同载具和坐标系下的转换 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| r | Any |
是 | 无 | 滚转角欧拉角分量 |
| p | Any |
是 | 无 | 俯仰角欧拉角分量 |
| y | Any |
是 | 无 | 偏航角欧拉角分量 |
| copter | str |
是 | 无 | 载具类型标识 |
| coordinate_frame | Any |
否 | "global" | 坐标系类型,默认为全局坐标系 |
返回值 (Returns):转换后的四元数 异常 (Raises):无
addVisSensor(vsr=VisionSensorReq())¶
功能说明:向视觉传感器列表中添加一个新的旧版本VisionSensorReq视觉传感器请求结构体
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| vsr | Any |
否 | VisionSensorReq() |
待添加的旧版本视觉传感器请求结构体 |
返回值 (Returns):无
异常 (Raises):Exception - 添加失败时抛出异常
addVisSensor(vsr=VisionSensorReqNew())¶
功能说明:向视觉传感器列表中添加一个新的新版本VisionSensorReqNew视觉传感器请求结构体
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| vsr | Any |
否 | VisionSensorReqNew() |
待添加的新版本视觉传感器请求结构体 |
返回值 (Returns):无
异常 (Raises):Exception - 添加失败时抛出异常
sendReqToCopterSim(srcs=SensorReqCopterSim(), copterID=1, IP="127.0.0.1")¶
功能说明:向CopterSim发送SensorReqCopterSim类型UDP请求消息,请求获取传感器数据,通过copterID指定请求的目标CopterSim实例索引
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| srcs | Any |
否 | SensorReqCopterSim() |
传感器请求结构体 |
| copterID | Any |
否 | 1 | 目标载具的ID,指定请求的CopterSim实例索引 |
| IP | Any |
否 | "127.0.0.1" | 目标CopterSim所在主机的IP地址 |
返回值 (Returns):无 异常 (Raises):无
sendImuReqCopterSim(copterID=1, IP="127.0.0.1", freq=200)¶
功能说明:向CopterSim发送IMU数据请求指令,该函数会初始化一个线程用于监听接收IMU数据 其中实际端口 = 基础端口 + 载具ID - 1 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | Any |
否 | 1 | 目标载具的ID |
| IP | Any |
否 | "127.0.0.1" | 请求发送目标主机的IP地址 |
| freq | Any |
否 | 200 | 请求的IMU数据发送频率 |
返回值 (Returns):无 异常 (Raises):无
sendImuReqClient(copterID=1, IP="127.0.0.1", freq=200)¶
功能说明:向CopterSim发送IMU数据请求指令,实际端口 = 基础端口 + 载具ID - 1 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | Any |
否 | 1 | 目标载具的ID |
| IP | Any |
否 | "127.0.0.1" | 请求发送目标主机的IP地址 |
| freq | Any |
否 | 200 | 请求的IMU数据发送频率 |
返回值 (Returns):无 异常 (Raises):无
sendImuReqServe(copterID=1)¶
功能说明:向CopterSim发送IMU数据请求指令,该函数会初始化一个线程用于监听接收IMU数据,其中实际端口 = 基础端口 + 载具ID - 1 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | Any |
否 | 1 | 目标载具的ID |
返回值 (Returns):无 异常 (Raises):无
getIMUDataLoop(copterID)¶
功能说明:循环获取指定载具的IMU数据,作为IMU监听线程的工作函数 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| copterID | Any |
是 | 无 | 目标获取数据的载具ID |
返回值 (Returns):无 异常 (Raises):无
get_all_ip()¶
功能说明:获取本机所有可用的网络接口IP地址 参数列表 (Args):无参数 返回值 (Returns):本机所有IP地址组成的列表 异常 (Raises):无
isIpLocal(IP)¶
功能说明:判断给定IP地址是否为本机IP地址 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| IP | Any |
是 | 无 | 待判断的IP地址 |
返回值 (Returns):bool,如果是本机IP返回True,否则返回False
异常 (Raises):无
StartTimeStmplisten()¶
功能说明:启动监听线程,监听20005端口以获取各个载具ID对应的Rfly时间戳 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
getTimeStmp(CopterID=1)¶
功能说明:获取指定载具ID对应的最新Rfly时间戳 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| CopterID | Any |
否 | 1 | 目标载具ID |
返回值 (Returns):指定载具对应的最新Rfly时间戳 异常 (Raises):无
endTimeStmplisten()¶
功能说明:结束时间戳监听线程,停止监听时间戳数据 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
TimeStmploop()¶
功能说明:时间戳监听线程的循环工作函数,持续接收处理CopterSim发送的时间戳数据 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无
sendUpdateUEImage(vs=VisionSensorReq(), windID=0, IP="")¶
功能说明:向UE4发送视觉传感器图像更新请求 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| vs | Any |
否 | VisionSensorReq() |
视觉传感器请求结构体 |
| windID | Any |
否 | 0 | 窗口ID标识 |
| IP | Any |
否 | "" | 目标UE4所在主机的IP地址,为空则自动判断 |
返回值 (Returns):无
异常 (Raises):Exception - 请求发送失败时抛出异常
sendUpdateUEImaged(vs=VisionSensorReqNew(), windID=0, IP="")¶
功能说明:向指定窗口的RflySim3D更新视觉传感器配置 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| vs | - | 否 | VisionSensorReqNew() |
视觉传感器请求配置对象 |
| windID | - | 否 | 0 |
RflySim3D窗口索引 |
| IP | - | 否 | "" |
目标IP地址,为空使用默认地址 |
返回值 (Returns):无返回值
异常 (Raises):Exception - 发送过程出错时抛出
sendUE4Cmd(cmd, windowID=-1)¶
功能说明:向UE4发送自定义命令 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| cmd | - | 是 | 无 | 要发送的命令内容 |
| windowID | - | 否 | -1 |
目标RflySim3D窗口索引,-1表示发送给所有窗口 |
返回值 (Returns):无返回值 异常 (Raises):无
sendReqToUE4(windID=0, IP="")¶
功能说明:发送视觉传感器列表到RflySim3D,请求获取对应图像,通过windID指定发送请求的RflySim3D窗口索引 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| windID | - | 否 | 0 |
RflySim3D目标窗口索引 |
| IP | - | 否 | "" |
目标IP地址,为空使用默认地址 |
返回值 (Returns):无返回值 异常 (Raises):无
img_udp_thrdNew(udpSok, idx, typeID)¶
功能说明:UDP接收图像的线程工作函数,用于处理指定视觉传感器的图像UDP接收 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| udpSok | - | 是 | 无 | UDP套接字对象 |
| idx | - | 是 | 无 | 视觉传感器索引 |
| typeID | - | 是 | 无 | 传感器类型ID |
返回值 (Returns):无返回值 异常 (Raises):无
img_mem_thrd(idxList)¶
功能说明:共享内存方式接收图像的线程工作函数,处理指定索引列表视觉传感器的图像接收 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| idxList | - | 是 | 无 | 需要接收的视觉传感器索引列表 |
返回值 (Returns):无返回值 异常 (Raises):无
startImgCap(isRemoteSend=False)¶
功能说明:启动循环,从UE4接收图像。当isRemoteSend为True时,会将从内存获取的图像转发到UDP端口
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| isRemoteSend | - | 否 | False |
是否开启图像远程转发,开启后会将图像从共享内存转发到UDP端口 |
返回值 (Returns):无返回值 异常 (Raises):无
sendImgUDPNew(idx)¶
功能说明:将指定索引视觉传感器的图像通过新UDP协议发送 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| idx | - | 是 | 无 | 视觉传感器索引 |
返回值 (Returns):无返回值 异常 (Raises):无
sendImgBuffer(idx, data)¶
功能说明:发送指定索引视觉传感器的图像缓冲区数据 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| idx | - | 是 | 无 | 视觉传感器索引 |
| data | - | 是 | 无 | 要发送的图像数据缓冲区 |
返回值 (Returns):无返回值 异常 (Raises):无
jsonLoad(ChangeMode=-1, jsonPath="")¶
功能说明:加载配置JSON文件,创建用于图像采集的相机列表。如果ChangeMode>=0,会将发送协议的第一项SendProtocol[0]设置为ChangeMode以修改图像传输方式
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| ChangeMode | - | 否 | -1 |
传输模式修改值,大于等于0时会覆盖配置中的传输模式 |
| jsonPath | - | 否 | "" |
配置JSON文件的路径,为空使用默认路径 |
返回值 (Returns):无返回值 异常 (Raises):无
dictLoad(jsData, ChangeMode=-1)¶
功能说明:jsonLoad方法的封装,提供直接从内存中读取dict类型的传感器数据,数据组织方式和jsonLoad方法中JSON文件的组织方式一致
参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| jsData | - | 是 | 无 | 内存中存储的传感器配置字典数据 |
| ChangeMode | - | 否 | -1 |
传输模式修改值,大于等于0时会覆盖配置中的传输模式 |
返回值 (Returns):无返回值 异常 (Raises):无
stopRun()¶
功能说明:停止图像采集运行循环,终止所有图像接收线程 参数列表 (Args):无参数 返回值 (Returns):无返回值 异常 (Raises):无
SensorPreview(seq_id=-1)¶
功能说明:预览指定序号的视觉传感器采集的图像 参数列表 (Args):
| 参数名 | 类型 | 是否必填 | 默认值 | 说明 |
|---|---|---|---|---|
| seq_id | - | 否 | -1 |
要预览的视觉传感器序号,-1表示预览所有传感器 |
返回值 (Returns):无返回值 异常 (Raises):无
进阶用法示例¶
展示复杂组合场景(如多类协作、异步控制、批量操作)
from RflySimSDK.vision import VisionCaptureApi, Queue, imuDataCopter
import threading
# 初始化队列缓存传感器数据,实现异步数据接收
imu_data_queue = Queue()
vision_capture = VisionCaptureApi()
# 批量添加5个异构视觉传感器到仿真环境
for sensor_id in range(5):
# 自定义不同传感器的安装位姿,自动完成四元数转换
roll, pitch, yaw = 0.1*sensor_id, 0.05, -0.02*sensor_id
quat = vision_capture.euler2quat(roll, pitch, yaw)
vision_capture.addVisSensor(sensor_id=sensor_id, position=[0.1*sensor_id, 0, 0.2], quaternion=quat)
# 启动异步IMU数据获取线程,时间对齐后存入队列
def get_imu_async():
imu_handler = imuDataCopter()
while True:
raw_imu = vision_capture.getIMUDataLoop()
if raw_imu is not None:
# 对齐IMU与视觉帧时间戳
aligned_imu = imu_handler.AlignTime(raw_imu)
if not imu_data_queue.is_empty() and imu_data_queue.size() > 10:
imu_data_queue.dequeue()
imu_data_queue.enqueue(aligned_imu)
# 启动异步线程处理数据,主线程同步请求视觉帧进行SLAM计算
threading.Thread(target=get_imu_async, daemon=True).start()
vision_capture.sendReqToCopterSim()
注意事项与避坑指南¶
- 重复添加视觉传感器问题:多次调用
addVisSensor时需保证输入的sensor_id全局唯一,重复ID会导致仿真端传感器覆盖,最终获取到的视觉数据会出现错乱。 - 异步数据缓存溢出:使用自定义队列缓存IMU或视觉数据时,需要定期清理旧数据,长时间运行会导致队列累积占用大量内存,可以通过判断队列大小,超出阈值后弹出队首旧数据。
- 跨主机连接IP检测:调用
isIpLocal检测IP属性后再建立连接,如果仿真端运行在非本地主机,需要确认IP端口权限开放,默认端口会被远程防火墙拦截导致请求超时。 - 时间对齐前提条件:调用
imuDataCopter.AlignTime之前需要先完成时间戳初始化,未调用RflyTimeStmp.Update更新参考时间戳会导致对齐结果偏差,引发SLAM位姿跳变。
更新日志¶
2026-03-03: feat:SDK增加IP处理机制,兼容本地版上云2026-02-02: 增加深度转点云的odom发布2026-02-02: fix:优化协议2026-02-01: fix:注释路径打印2026-01-31: fix: 更新深度转点云协议2026-01-31: fix: 更新深度转点云的通信协议2026-01-23: 对话题/Depth_Cloud 添加对齐时间戳2026-01-22: Merge branch 'master' of http://rflysim.synology.me:8418/FeisiLab/RflySimSDK2026-01-22: 更改ROS 输出的IMU坐标系方向,使接口输出的始终为FLU坐标系,更改前按照FRD—> FLU 转换,但是平台的IMU 角速度符合FRD系,但是线加速度不符合FRD系,而是BLD2025-12-12: fix: 优化图像时间戳同步机制,解决Windows下的图像时间戳不同步bug2025-12-08: 更改平台odom数据在0模式下 local 系下平移从FRD->FLU 变更2025-12-07: fix: 新增激光雷达的相对位置传输数据2025-12-04: fix: 修复点云传感器问题2025-09-30: 解决鱼眼相机在UDP模模式下的bug2025-09-29: ROS2 深度转点云的seq 变量已经被取消,接口需要适配