基于ROS2实现SOA架构的座舱系统及其运行方法与流程

文档序号:28070304发布日期:2021-12-18 00:18阅读:1144来源:国知局
基于ROS2实现SOA架构的座舱系统及其运行方法与流程
基于ros2实现soa架构的座舱系统及其运行方法
技术领域
1.本发明涉及智能座舱领域,尤指一种基于ros2实现soa架构的座舱系统及其运行方法。


背景技术:

2.随着智能座舱技术的快速发展,越来越强调车辆与互联网的互联互通。而传统汽车电子架构中以can(controller area network,控制区域网),lin(local interconnect network,局部互联协议)为主体的中心化网关c/s(娱乐域/服务端)设计方式正在成为数据互通互享的瓶颈。
3.在此背景之下,由互联网it行业所广泛使用的soa(service oriented architecture,面向服务架构)设计架构方式进入了汽车电子领域。soa的设计模式便于实现车辆信息与云端的双向交流、不同操作系统平台之间的各类应用数据共享,能有效降低软件架构升级带来的复杂度上升问题,还能够便于远程诊断管理等等功能。
4.目前汽车电子领域主流采用集成了soa思想的自适应autosar(automotive open system architecture,汽车开放系统架构)工具链来设计智能座舱软件。但是使用自适应autosar工具链开发智能座舱软件存在以下不足:
5.1)自适应autosar是以闭源方式实现,并且只能由工具来生成,因此在rtos系统(实时操作系统)以及其他非posix平台中的移植比较困难。
6.2)过度依赖指定厂商的工具链来生成代码,对soa开放化及第三方兼容度开发是个很大的挑战。如果没有指定厂商的工具很难去增加或修改接口部分。
7.3)与自动驾驶平台的衔接不顺畅。目前自动驾驶平台多是由ros2(robot operating system,机器人操作系统)系统来处理,对于基于自适应autosar协议开发的应用软件,还需要做转化,降低了处理效率。


技术实现要素:

8.本发明的目的之一是为了克服现有技术中存在的至少一种不足,提供一种基于ros2实现soa架构的座舱系统及其运行方法。
9.本发明提供的技术方案如下:
10.一种基于ros2实现soa架构的座舱系统,包括:车身域和娱乐域;所述车身域基于qnx操作系统,包含至少1个基于ros2的车身域节点单元;所述娱乐域基于安卓操作系统,包含至少1个基于ros2的娱乐域节点单元;所述车身域节点单元和娱乐域节点单元都包含基于ros2的上层应用和服务单元。
11.进一步地,所述上层应用采用请求模式和/或订阅模式与所述服务单元进行通信。
12.进一步地,所述上层应用采用请求模式与所述服务单元进行通信,包括:所述上层应用向所述服务单元发出请求消息,所述服务单元即时响应所述请求消息。
13.进一步地,所述上层应用采用订阅模式与所述服务单元进行通信,包括:所述上层
应用订阅所述服务单元的消息。
14.进一步地,当一服务单元加入或离开所述智能座舱系统时,通过多播的通信方式让所述智能座舱系统中其他服务单元或上层应用感知所述服务单元的状态。
15.进一步地,所述车身域节点单元包含基于c语言的ros2插件运行库和dds实现,所述娱乐域节点单元包含基于java语言的ros2插件运行库和dds实现。
16.本发明还提供一种基于ros2实现soa架构的座舱系统的运行方法,应用于前述的基于ros2实现soa架构的座舱系统,该运行方法包括:车身域节点单元和娱乐域节点单元的上层应用采用请求模式和/或订阅模式与所述车身域节点单元或所述娱乐域节点单元的服务单元进行通信。
17.进一步地,所述上层应用采用请求模式与所述服务单元进行通信,包括:所述上层应用向所述服务单元发出请求消息,所述服务单元即时响应所述请求消息。
18.进一步地,所述上层应用采用订阅模式与所述服务单元进行通信,还包括:所述上层应用订阅所述服务单元的消息。
19.进一步地,还包括:当一服务单元加入或离开所述智能座舱系统时,通过多播的通信方式让所述智能座舱系统中其他服务单元或上层应用感知所述服务单元的状态。
20.通过本发明提供的一种基于ros2实现soa架构的座舱系统及其应用方法,至少能够带来以下有益效果:通过使用开源方式的ros2中间件实现了soa架构的智能座舱系统,使得系统的开放性更好,更易于移植和修改,与自动驾驶系统可以无缝衔接。
附图说明
21.下面将以明确易懂的方式,结合附图说明优选实施方式,对一种基于ros2实现soa架构的座舱系统及其运行方法的上述特性、技术特征、优点及其实现方式予以进一步说明。
22.图1是本发明的一种基于ros2实现soa架构的座舱系统的一个实施例的结构示意图;
23.图2是本发明的一种基于ros2实现soa架构的座舱系统的运行方法的一个实施例的流程图;
24.图3是ros2的结构示意图;
25.图4是本发明的一种基于ros2实现soa架构的座舱系统的另一个实施例的结构示意图;
26.图5是图4中上层应用与服务单元之间采用订阅模式的数据共享示意图;
27.图6是图4中上层应用与服务单元之间采用订阅模式和请求模式的数据共享及控制的示意图。
具体实施方式
28.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
29.为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表
其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘制了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
30.soa(面向服务的架构),将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
31.soa架构方式是当前汽车电子领域的主流方向。目前主要采用集成了soa思想的自适应autosar工具链来设计智能座舱系统,但是autosar是闭源方式实现,开放程度不好,导致系统移植、修改困难。
32.为此本技术采用ros2来实现soa架构的智能座舱系统。
33.ros2是一个适用于机器人编程的框架,可以用于在不同进程间发布、订阅、传递信息的中间件,连接了操作系统和用户开发的ros2应用程序。本技术利用ros2架构的特点,实现了智能座舱系统中不同操作系统平台之间的各类应用的数据共享,还实现了智能座舱系统与自动驾驶系统、车联网云平台的信息交互,从而实现了智能座舱系统的soa架构。
34.ros2是基于开源方式,因此基于ros2实现soa架构的座舱系统便于移植和修改。目前自动驾驶域多基于ros2开发,所以本技术的智能座舱系统可以与自动驾驶系统无缝衔接。
35.本发明的一个实施例,如图1所示,一种基于ros2实现soa架构的座舱系统10,包括:
36.车身域100和娱乐域200。
37.车身域100包含至少1个基于ros2的车身域节点单元110,娱乐域200包含至少1个基于ros2的娱乐域节点单元210,车身域节点单元110和娱乐域节点单元210都包含基于ros2的上层应用和服务单元。
38.具体地,按照智能座舱系统的逻辑功能进行划分,智能座舱系统至少可分为车身域和娱乐域。车身域的功能包括:通过can总线获取车身上各个设备的状态数据、控制车身上各个设备的状态等;娱乐域的功能包括:日志/诊断服务、音乐/电影播放等。
39.车身域和娱乐域可以采用相同或不同的操作系统,操作系统可采用linux、rtos、qnx、android、loop(应用在mcu编程领域的主循环小系统)等。
40.由于车身域相对娱乐域对实时性要求更高,所以车身域优选实时操作系统,比如qnx操作系统;娱乐域可采用通用性更好的安卓操作系统。
41.车身域可以包含多个基于ros2的车身域节点单元,每个基于ros2的车身域节点单元又可以包括多个基于ros2的车身域的上层应用和服务单元。
42.娱乐域可以包含多个基于ros2的娱乐域节点单元,每个基于ros2的娱乐域节点单元又可以包括多个基于ros2的娱乐域的上层应用和服务单元。
43.ros2基于开源方式,方便移植;ros2使用了非中心化的通讯技术,避免了以往中心化服务有可能造成的整个网络瘫痪的情况。
44.ros2的内部结构如图3所示。
45.1.ros2支持的系统包括linux、rtos、qnx操作系统,甚至是单片机等没有操作系统
的裸机。
46.2.ros2的通信机制是基于dds(data distribution service,数据分发服务),同时在ros2内部提供了dds抽象层(abstract dds layer),有了这个抽象层,用户就可以不去关注底层的dds的实现方式,使得ros2可以兼容任何开源dds实现或者其他供应商开发的商用dds版本。
47.3.ros2使用了自动发现的机制,通过发广播的方式通知系统中的各个ros2节点,简化了组网过程。
48.4.ros2的node(节点)相当于每个应用中提供数据的服务端或者消费数据的客户端。
49.本实施例,车身域节点单元和娱乐域节点单元中每个上层应用或服务单元都为一个ros2节点。系统启动后加载车身域和娱乐域的ros2中间件,并建立各个域的ros2节点。
50.ros2节点之间基于ros2的dds通信机制实现数据交互,具体包括:
51.1)已建立的上层应用与服务单元之间采用订阅模式和/或请求模式进行消息交互。
52.上层应用采用订阅模式与服务单元进行通信包括:
53.上层应用订阅服务单元的消息;当服务单元发布消息时,订阅了该消息的上层应用同时收到该消息。订阅模式是基于fast

rtps协议,采用发布

订阅方式实现。
54.订阅模式的实时性有限,针对实时性强的需求,可采用请求模式进行消息交互。
55.上层应用采用请求模式与服务单元进行通信包括:
56.上层应用向服务单元发出请求消息,服务单元收到该请求消息后,即时响应该请求消息。
57.比如,一上层应用需要立即获取某个服务单元的状态信息,可采用请求模式。请求模式提供了请求

响应方式,以满足系统的一些实时性需要。
58.2)当一ros2节点新加入或离开智能座舱系统时,通过多播的通信方式让智能座舱系统中其他ros2节点感知该ros2节点的状态。比如,当一服务单元加入系统时,会有通知消息发出让系统中其他服务单元或上层应用感知该服务单元的加入。
59.进一步,车身域节点单元可采用基于c语言的ros2插件运行库和dds实现车身域的ros2中间件的功能,娱乐域节点单元可采用基于java语言的ros2插件运行库和dds实现娱乐域的ros2中间件的功能。
60.本实施例,通过使用开源方式的ros2中间件实现了soa架构的智能座舱系统,使得系统的开放性更好,更易于移植和修改,与自动驾驶域可以无缝衔接。
61.本发明的另一个实施例,如图2所示,一种基于ros2实现soa架构的座舱系统的运行方法,应用于前述的基于ros2实现soa架构的座舱系统,该运行方法包括:
62.步骤s100车身域节点单元的上层应用、娱乐域节点单元的上层应用、车身域节点单元的服务单元和娱乐域节点单元的服务单元之间基于ros2的dds通信机制实现数据交互。
63.步骤s100包括:
64.步骤s110当一服务单元加入或离开智能座舱系统时,通过多播的通信方式让智能座舱系统中其他服务单元或上层应用感知该服务单元的状态。
65.步骤s120车身域节点单元和娱乐域节点单元的上层应用采用请求模式和/或订阅模式与车身域节点单元或娱乐域节点单元的服务单元进行通信。
66.上层应用采用订阅模式与服务单元进行通信包括:
67.上层应用订阅服务单元的消息;当服务单元发布消息时,订阅了该消息的上层应用同时收到该消息。订阅模式是基于fast

rtps协议,采用发布

订阅方式实现。
68.订阅模式的实时性有限,针对实时性强的需求,可采用请求模式进行消息交互。
69.上层应用采用请求模式与服务单元进行通信包括:
70.上层应用向服务单元发出请求消息,服务单元收到该请求消息后,即时响应该请求消息。
71.本实施例,通过使用开源方式的ros2中间件实现了soa架构的智能座舱系统,使得系统的开放性更好,更易于移植和修改,与自动驾驶域可以无缝衔接。
72.需要说明的是,本发明提供的基于ros2实现soa架构的座舱系统的运行方法的实施例与前述提供的基于ros2实现soa架构的座舱系统的实施例均基于同一发明构思,能够取得相同的技术效果。因而,基于ros2实现soa架构的座舱系统的运行方法的实施例的其它具体内容可以参照前述智能座舱系统的实施例内容的记载。
73.本发明还提供一种具体应用场景实施例,将前述的基于ros2实现soa架构的座舱系统及其运行方法用于智能汽车的智能座舱设计。
74.智能汽车由车联网、智能座舱、自动驾驶三部分组成,汽车座舱是车内驾驶和乘坐的空间。智能座舱是指配备了智能化和网联化的车载产品,从而可以与人、路、车本身进行智能交互的座舱。
75.如图4所示,智能座舱系统通过广域网与车联网云平台相连接,通过局域网与基于ros2平台开发的车内自动驾驶系统相连接。
76.如图4所示,智能座舱系统的组成结构如下:
77.1.整个系统基于qnx虚拟机操作系统,qnx虚拟机操作系统是由qnx操作系统加上微内核调度形成的一种新型的操作系统。智能座舱系统包括车身域和娱乐域。左侧车身域,使用qnx操作系统;右侧是娱乐域,使用安卓android操作系统。车身域包括一个基于ros2的节点单元a,节点单元a从下至上依次包括qnx操作系统、c语言的ros2插件运行库和dds实现、基于ros2的车身域服务单元和基于ros2的车身域上层应用。娱乐域包括一个基于ros2的节点单元b,节点单元b从下至上依次包括android操作系统、基于java的ros2插件运行库和dds实现、基于ros2的娱乐域服务单元和基于ros2的娱乐域上层应用。
78.2.节点单元a包括若干基于ros2的车身域上层应用和车声域服务单元,以及c语言的ros2插件运行库和c语言的dds实现。图4仅示例了1个,但不限于1个车身域上层应用、1个车声域服务单元。
79.3.节点单元b包括若干基于ros2的娱乐域上层应用和娱乐域服务单元,以及java语言的ros2插件运行库和jni接口的dds实现。娱乐域服务单元包括日志、音乐、电影等服务单元。图4仅示例了1个,但不限于1个娱乐域上层应用、1个娱乐域服务单元。
80.4.qnx host侧节点单元描述:
81.通讯网络使用以太网通讯,udp通信作为最底层的通信方式,使用多播以及单播的通信方式。
82.当一个ros2车身域服务单元被加入后,通过多播的通讯接口可以让其他应用的节点单元感知当前的某个服务单元加入到了网络之中。而当该服务单元离开网络时,同样也会有通知消息发出。如此实现服务单元的发现过程。
83.上述2、3中的插件均以函数库方式存在,这个插件包括了ros2内部结构所包含的dds实现、dds抽象层(abstract dds layer),以及client library。
84.dds实现,基于fast

rtps协议,使用udp通讯方式,实现socket操作,协议包封包与解析,以libfastrtps.so形式存在。
85.abstract dds layer,是为了兼容多个不同dds的实现部分而存在,用于接口适配,以librmwabstract.so形式存在。
86.client library是由ros2的节点创建、销毁。节点中包含订阅、发布、请求,回应接口的调用以及回调,以librmwclient.so形式存在。
87.上层应用和服务单元都是有具体进程空间的程序,启动后装载ros2的client library(推动级联调用其他两个库文件)。
88.车身服务单元是生产者,它利用ros2的运行库对外发布服务内容,比如,可通过can总线获取车身的状态数据,定时或者当有变化时,发单播udp消息到订阅了此服务内容的应用中,这个应用既包括qnx host端的应用,也包括android guest端的应用。
89.qnx中基于ros2的应用属于消费者,可以订阅一个或者多个服务单元的消息,也可以请求某个服务单元的即时响应。
90.5.android guest侧节点单元描述
91.guest侧的基于java的ros2插件单元,需要在上述的库文件基础上,再增加一个jni调用库以及一个java调用库文件。
92.jni调用库是将qnx host中ros2 client library封装成java可直接装载调用的内容,以libjnirmwclient.so的形式存在。
93.java调用库会生成一个jar包文件,以rmwclient.jar的形式存在,这个jar包为上层安卓应用提供了实际的ros2 client接口调用。
94.以上部分,我们使用android studio工具并结合ndk的开发环境将所有涉及的ros2运行库部分全部纳入进来编译,最终得到可被上层应用直接使用的rmwclient.jar文件。
95.应用与服务单元都是具有进程空间的程序,启动后也是通过rmwclient。jar来装载libjnirmwclient.so来建立各自的节点。
96.日志(log)服务单元、dvr(digital video recorder,数字硬盘录像机)服务单元、诊断服务单元等是生产者,它们利用ros2的运行库对外发布服务内容;应用是消费者,获取这些内容的数据。
97.多个应用可以同时订阅某个服务单元的数据,而且也可以请求某个服务单元的即时响应。
98.android中基于ros2的应用也是消费者,可以订阅一个或者多个服务单元消息,也可以请求某个服务单元的即时响应。
99.如图5和图6所示,本发明实施例中,智能座舱系统的soa消息实现包括两种模式:
100.①
订阅模式
101.如图5所示三个节点:基于ros2车身域服务单元、基于ros2的车身域上层应用、基于ros2的娱乐域上层应用。
102.车身域服务单元的消息格式如图5左侧所示,车身域服务单元注册完ros2节点后,通过can总线获取当前车辆的点火状态、速度、转速、方向盘转角,油量等数据,将这些封装在一个消息体中发布出去。
103.假设基于ros2的车身域上层应用以及基于ros2的娱乐域上层应用都订阅了这个车身域服务单元提供的消息,于是它们可以同时收到上面的消息。当有状态变化时,相应的在它们各自的应用界面中展现出来。
104.基于ros2的车身域上层应用的典型代表是仪表,如果速度发生了实时变化,则仪表中的指示或者数显部分相应变化。
105.ros节点之间能够通过快速实时发布

订阅协议fast

rtps(fast real

tine publish/subscribe protocol)采用发布/订阅消息的方式进行直接通信,不需要中间节点转发数据。
106.②
请求模式
107.如图6所示三个节点:基于ros2的空调服务单元、基于ros2的车身域上层应用、基于ros2的娱乐域上层应用。空调服务单元是车身域服务单元中的一种具体实例。
108.图6给出了在一个节点中既提供订阅消息,同时又提供请求回应消息。
109.空调服务单元提供了包括空调温度、空调风力、自动模式、开关状态,出风口状态内容的订阅消息,同时提供了包括温度调节,风力调节,自动模式开关、开关、出风口调节的请求接口。
110.空调的调节可以通过物理按键或空调控制面板应用界面调节。不管通过哪种方式来操作,消息数据发生改变后,右侧订阅了空调状态消息的应用将会收到变化数据,更新应用界面上的数据显示。
111.当通过android中空调控制面板应用去控制空调时,使用ros2关于请求模式的接口,达到对空调服务单元的控制目的。
112.上层应用有需求时,可使用请求模式接口,向服务单元主动发出请求,并等待对方的回应。请求模式接口不仅可以用于控制一服务单元,还可以用于从一服务单元中立即获取相关信息,以满足实时性要求。
113.本发明的实施例中,通过在智能座舱系统中使用开源方式的ros2,基于ros2的dds通信机制实现了soa设计模式,使智能座舱软件的开放性更好,可以在任何系统中移植以及运行,包括linux/qnx/rtos/无系统的裸机;基于ros2的智能座舱系统可与基于ros2的自动驾驶系统无缝衔接,多系统之间的共享与控制几乎可看做一个整体,完整实现多系统结合;通过订阅模式和请求模式实现了多个域或一个域的节点之间的数据共享与控制,提供了统一的接口及通道,方便了新增应用后保持接口一致性的需求。
114.应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1