本文主要是介绍【自动驾驶】8. MDC通信架构 + DDS + SOME/IP,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
对于AP框架,感知融合模块中,由于PreFusion通信数据量大,所以采用带宽较大的DDS(Data Distribution Service)通信协议,其余节点传入数据量较小,采用SOME/IP(Scalable Service-Oriented Middleware over IP)通信协议。融合模块与规控模块之间通信为DDS通信协议。规划控制模块内各节点之间均采用能够处理大数据量的DDS通信协议。
DDS主要用于内部通信高性能场景,SOME/IP主要用于与外部部件对接的通信场景,如与Classic AUTOSAR对接。
AP的通信协议分为DDS和SOME/IP。DDS的通讯协议又分为SHM(SHare Memory)和UDP(User Datagram Protocol),SHM为域内通讯协议,UDP为芯片间通讯协议。
节点间的交互情况如下
:
- CameraPerception节点从Camera中以SHM通信协议获取图像信息,对图像进行初步处理后,将障碍物列表信息输出给PreFusion节点。
- RadarPerception节点采用SOME/IP通信协议,通过MCU(Microcontroller Unit)从Radar中获取毫米波雷达信息,并从Gps_localization获取车辆自身状态参数(包括自车位置、车速、航向信息等),对获取到的信息进行初步处理后,将障碍物列表信息输出给FullFusion节点。
- LidarPerception节点采用SHM通信协议从Lidar中获取激光雷达信息,采用SOME/IP通信协议从Gps_localization获取车辆自身状态参数(包括自车位置、车速、航向信息等),对获取到的信息进行初步处理后,将障碍物列表信息输出给FullFusion节点。
- PreFusion节点采用SHM通信协议从Lidar中获取激光雷达的信息,采用SHM+UDP通信协议从CameraPerception节点获取障碍物列表信息,以及采用SOME/IP通信协议从Gps_localization节点中获取车辆自身状态参数(包括自车位置、车速、航向信息等),再对获取到的信息进行初步融合,输出新的障碍物列表信息给FullFusion节点。
- FullFusion节点分别从RadarPerception、LidarPerception和PreFusion节点获取障碍物列表信息,并从Gps_localization获取车辆自身状态参数(包括自车位置、车速、航向信息等),对获取到的信息进行最终的融合,得到可用的障碍物列表信息,然后将该信息输出给BehaviorPlan和MotionPlan节点。
- MCU采用SOME/IP的通信协议将GPS/IMU、车辆底盘线控系统等信息输出给Vsomeipd节点。MCU接收GPS/IMU传感器信息的方式为串口通讯,接收线控系统信息的方式为CAN总线通讯
- Gps_localization节点接收GPS/IMU信息,获得车辆自身状态参数(包括自车位置、车速、航向信息等),然后将这些信息输出给MissionPlan、BehaviorPlan、MotionPlan、Transform等节点
- MissionPlan节点接收GPS/IMU信息,获得自车定位,并按照HMI界面设定的终点、途经点,根据高精度地图信息,规划出一条从起始点到终点的全局路径。然后将该路径以及高精度地图中其他信息发送出去,供其他节点使用。
- BehaviorPlan节点为行为决策节点。该节点接收周围环境信息(包括GPS/IMU信息、高精度地图信息、周围障碍物信息、车辆自身信息等),经过决策,输出无人车应当执行的行为,并给出行为相关的边界信息,提供给MotionPlan节点进行轨迹规划。
- MotionPlan节点接收GPS/IMU信息,包括行为决策信息、周围障碍物信息、车辆自身状态信息等,然后根据这些信息规划出一条最优的路径(包含位置坐标和速度信息的曲线),再将最优路径输出给Transform节点。
- Transform为坐标转换节点。该节点的功能为将MotionPlan节点提供的信息从UTM坐标转换到车辆坐标系,输出给Control节点。
- Control节点接收Transform节点转换之后的最优路径信息,然后结合车辆自身状态计算车辆横向及纵向的控制量(方向盘转角、油门开度、制动强度等),输出至车辆线控层,由执行器执行相应控制量.
- Vehicle Abstract节点为车辆抽象节点。下行负责将Control节点发送的控制信号进行转换,并发送至MCU;上行又称为Vehicle Report节点,负责将MCU采集到的车辆状态信息进行转换,并发送至Conctrol、Transform、MotionPlan和BehaviorPlan节点。
- Vsomeipd是信息传输路由节点,为采用SOME/IP通信协议的节点提供数据转换,如:Vehicle Abstract、GPS Abstract节点采用SOME/IP通讯协议将数据传输给其他节点(GPS_localization也需要通过Vsomeipd节点进行数据转换,在图中为了更好的体现出数据通路没有画出),数据经过一定的方式处理后输出给MCU。
- Vehicle Abstract节点为车辆抽象层,GPS Abstract节点为GPS抽象层,这两个节点主要负责将Vsomeipd节点输出的相应数据进行解析,输出给其余各节点进行决策规划及控制量的计算。
请提前规划好Service Interface Id和Service Instance Id,防止发生ID冲突。ID取值范围为101~150。
- Service Interface:服务接口,定义接口数据类型和通讯协议等,通过不同的Service Interface Id来区别服务接口,该参数需要保证全局唯一。
- Service Instance :服务实例,由Service Interface实例化而来,通过不同的Service Instance Id来区别通讯的服务实例,该参数需要保证全局唯一。
ARXML是AUTOSAR Adaptive Platform用于生成节点之间相互通信的数据类型(以头文件体现)以及通信规则(以json格式体现)。ARXML主要通过MDC Manifest Configurator工具进行配置。配置前需要规划接收接口、发送接口、通信的数据类型以及通信方式等。
CM(Communication Management)
如果应用实现不需要调用CM(Communication Management)相关的接口代码,则只需要配置Application Manifest、Machine Manifest和System Manifest即可。
通信方式
CM包含三种通讯方式:Event、Method与Field。
- Event通讯方式是在服务发现后,从服务端发送数据,由客户端进行接收,单向传输数据。
- Method通讯方式是先由客户端发送请求,服务端收到请求后会处理客户请求并返回应答。
- Field通讯方式分为Setter、Getter与Notifier方法。其中Notifier与Event工作模式类似,Getter与Setter与Method方法类似。
SOME/IP协议通讯注意事项
若应用需要使用SOME/IP方式进行通讯,请注意以下几点:
- 1.必须先启动someipd,再开启服务端与客户端应用进行通讯,且someipd程序必须先于所有应用程序启动。
someipd是SOMEIP的后台进程,负责服务发现、数据转发等功能。
someipd程序的启动需要通过环境变量指定“vsomeip.json”配置文件,可通过如下方式指定:export SOMEIP_CONFIG_FILE=/<文件目录>/vsomeip.json
然后,运行someipd可执行文件。someipd可执行文件目录为/<deb解压位置>/usr/local/AdaptiveAutoSar/bin - 2.关于“vsomeip.json”配置文件的生成,用户可以选择将主机上所有Application的ARXML配置文件全部输入代码生成工具生成,也可以选择手动配置(将各APP单独生成的“vsomeip.json”文件组合,主要组合“vsomeip.json”中services、applications、clients中的内容)。
- 3.someipd对应配置文件中必须包含该主机对外通讯需要的所有服务信息。
- 4.一台主机上只允许启动一个someipd。
- 5.应用于someipd的“vsomeip.json”配置文件必须配置service-Discovery信息。具体配置需要参考配置项。
QoS(Quality of Service)服务质量
这篇关于【自动驾驶】8. MDC通信架构 + DDS + SOME/IP的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!