VTD-传感器使用小结


  由于近期需要使用VTD搭建V2X二期应用场景,需要用到传感器进行目标感知并获取感知结果,以下对于VTD中的传感器使用简单进行下总结:

在VTD中添加传感器

  VTD中传感器模型是已经被搭建完成的,以链接库文件形式存在,可在使用时在GUI界面中进行选择,不过默认的perfectSensor就够用,目前我所用到的传感器模型包括参数也全是默认的,傻瓜式操作,哈哈.
  切入正题,其实VTD中传感器一直是存在的,系统内有一个预设的Sensor_MM模型提供使用,只不过并没被激活使用,如下图所示,在GUI中点开Sensor选项,右键预设的Sensor_MM,弹出菜单选择active(该项操作要在加载场景之后进行):

  点击active后,传感器便开始工作了,有一些工作参数简单说明一下,不过也都是使用默认值即可:

  这里主要需要注意的是感知数据的输出方式,默认为UDP,目的端口为48185,需编写相应的接收程序并进行解析,其输出的感知结果为RDB总线标准结构,主要为RDB_SENSOR_OBJECT_t和RDB_SENSOR_STATE_t;在GUI中可以对传感器位置以及参考坐标系进行设置,如上图中传感器便安装在车辆EV上,与EV所在位置0偏差,参考坐标系为USK坐标系,是默认的也是最好用的,USK坐标系下输出的目标物位置、速度均是相对于传感器所在车辆的相对值,所以进行分析时,加上传感器所在车辆的相关数据即可得到目标物的绝对坐标以及运动状态;点击active后传感器虽然已经开始工作,但是在场景中是无法看到展示的,需要在SCENES中将刚刚所设置的传感器显示到场景中,如下图所示:

  如上图所示,sensor右方有两个选项,第一个是将感知物直接标定出来,第二个是显示感知线,看个人想要的效果了,我这里只选择了目标物标定,如下所示:
在这里插入图片描述

分析传感器输出数据

  如上小节所述,GUI中可设置传感器感知数据的输出方式,按照自己设置的方式编写对应的接收程序即可,不过接收的数据为RDB总线标准结构体,需要对RDB数据进行进一步的处理从而筛选出传感器的感知数据,关于RDB总线数据的解析可参照我之前写的博客VTD交通信号灯解析,接下来简单介绍下输出的感知数据中的几个结构体:

RDB_SENSOR_STATE_t

在这里插入图片描述
  如上,结构体中有很多字段,不过很多没什么意义(也有可能是我没搞懂,英文注释也在,大家可自行理解),其中id为传感器id,type为传感器类型,注意到结构体中有两个位置坐标,pos为传感器相对其所在车辆的相对坐标,originCoordSys为USK坐标系的参考中心点,即该传感器输出的感知目标物的位置均是该参考中心点的相对坐标,其它的字段目前还没用用到,搁置在一边;

RDB_SENSOR_OBJECT_t

在这里插入图片描述
  sensor_object结构体是所感知到的目标物的具体数据,多个感知物时,传感器将输出sensor_object结构体数组,逐个解析即可;其中category为感知物的类别(仅在VTD中有意义),type为感知物的类型,包括轿车、卡车、非机动车、行人、障碍物等,id为感知物id,sensorId为该感知物所属的传感器Id,dist为感知物与传感器之间的距离,sensorPos即为感知物在传感器参考坐标系下的相对位置坐标,occlusion为与感知物的碰撞可能,其它的便没什么用了;这里仅包含感知物的位置坐标,但没有感知物的速度,而在场景运行中能够看到,感知物的标定值包括速度、距离、ttc,所以目标物的运动状态肯定是可以感知出来的,只不过数据没在这两个结构体中,也是找了好久才找到下面这个结构体,就离谱。

RDB_OBJECT_STATE_t

在这里插入图片描述
在这里插入图片描述
  之所以一开始没注意到此结构体,是因为无传感器的场景也会输出该结构体,其中包含着当前场景中所有object的绝对数据,包括坐标位置、运动姿态等信息,后来通过不断地观察其中的数据终于发现,通过传感器所输出的RDB_OBJECT_STATE_t与正常场景输出的数值并不相同,传感器所输出的RDB_OBJECT_STATE_t中的数据为传感器所在车辆以及其所感知到的目标物相对于传感器所在车辆的相对数据,这样感知物的速度以及运动姿态便找到了。不知道为什么感知物的速度等运动姿态信息没糅合到RDB_SENSOR_OBJECT_t结构体中,同样的,在进行分析时还是需要将相对值处理为绝对值。

猜你喜欢

转载自blog.csdn.net/qq_35308053/article/details/120107263