https://airos-edge.readthedocs.io/zh/latest/dev_guide/service_dev.html
1 总览
1.1 功能
感知服务包含感知的整体pipeline,主要模块包括单相机感知和融合。
单相机感知模块
主要功能为接收IP相机RTSP视频流,解码成RGB图片,通过算法识别出视频中的障碍物,并转换到世界坐标系。智路OS提供了基础的单相机感知组件,包括2D检测、2D跟踪、RoI过滤、回3D。
- 检测:
利用深度学习算法,识别出物体类别/2D框/长宽高/朝向角/底面中心点图像坐标等信息。 - RoI过滤:
主要功能是过滤掉感兴趣区域外的物体. - 2D跟踪:
主要任务是给定一个图像序列,找到图像序列中运动的物体,识别不同帧的同一个运动物体,给定一个确定准确的ID - 回3D:
根据模型预测的图像坐标系下的底面中心点的图像坐标(u,v),利用地面方程和相机内参计算得到相机坐标系下的底面中心点的3D坐标(X, Y, Z),利用模型预测得到的物体高度h,计算得到物体中心点在相机坐标系下的3D坐标。
多传感器融合模块
主要功能是接收多个传感器(相机或雷达)识别处理的结构化数据,对目标进行融合,从而提供更全面、准确的环境感知。智路OS提供了基础的多传感器融合组件实现。
- 融合关联部分基于概率分布模型来建立关联矩阵,对于关联融合所需的所有维度的信息(障碍物位置、类别、尺寸、车道信息、轨迹等),通过其概率分布来得到融合概率分布
- 3D跟踪,一般采用时间和空间相结合的卡尔曼滤波,对同一物体,不同传感器不同时刻的观测值进行滤波跟踪,进一步提升融合精度,开发者可自行实现。
1.2 设计理念
智路OS中,感知服务相关的组件可以由开发者自定实现并升级替换,框架提供了模块相关的抽象类、接口、注册方式,开发者需要根据定义标准实现功能开发并接入智路OS。
单相机检测模块
对于单相机检测模块,智路OS框架提供的输入是从camera视频解码的实时RGB图像数据,模块的输出为智路OS定义的感知障碍物结构化数据,单相机检测模块内部的算法和pipeline可以由开发者自定义。
多传感器融合模块
对于多传感器融合模块,智路OS框架提供的输入是多个传感器检测的感知障碍物结构化数据,模块的输出为智路OS定义的感知障碍物融合结构化数据,内部的相关的算法可以由开发者自定义。
2 类说明
2.1 Camera Perception
BaseCameraPerception
单相机感知的基类,开发者需要继承该类并实现对应的接口,由智路OS框架加载模块后调用。
Init
bool Init(const CameraPerceptionParam ¶m)
初始化接口,在单相机感知模块初始化时调用,框架在相机配置文件中读取框架配置后,传给开发者的算法使用。
name | value | describe |
---|---|---|
参数 | param | 框架传入的配置文件结构,定义如下 |
返回值 | bool | 初始化正常时返回true,初始化失败时返回false |
struct CameraPerceptionParam {
std::string camera_name; // 相机名称
std::string sdk_path; // 算法SDK路径
std::string conf_path; // 参数路径
unsigned int gpu_id = 0;
};
Perception
bool Perception(const base::device::CameraImageData &camera_data, PerceptionObstacles *result,TrafficLightDetection *traffic_light)
单相机感知主逻辑接口,输入为图像数据,输出为感知处理后的结构化数据,包含障碍物信息和视觉检测的信号灯信息,如果不提供信号灯检测能力,可以置为空。
Name
std::string Name()
获取模块的名称