【自动驾驶】8. MDC通信架构 + DDS + SOME/IP

2024-06-16 21:18

本文主要是介绍【自动驾驶】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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067570

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties