掌桥专利:专业的专利平台
掌桥专利
首页

机器人软件架构、控制方法、控制装置和机器人

文献发布时间:2024-04-18 20:01:55


机器人软件架构、控制方法、控制装置和机器人

技术领域

本发明涉及机器人技术领域,尤其涉及一种机器人软件架构、控制方法、控制装置和机器人。

背景技术

随着机器人技术的发展,不同类型(例如服务型、工业型等)的机器人在军事、娱乐、服务、教育等各个领域得到了广泛的运用。而机器人软件架构在机器人的发展中起到至关重要的作用。也就是说,一种高效、灵活、稳定的机器人软件架构,可以提高各软件模块之间数据传输效率,并具有较高的稳定性,使得机器人可以满足测试需求以及准确执行用户指示的预定功能。

在现有技术中,通常在机器人软件架构中设置ROS1系统(Robotics OperatingSystem1,机器人操作系统1),使得机器人执行对应的功能。具体来说,ROS1系统属于机器人操作系统的一个版本,ROS1系统采用一个主节点(也即Master节点)控制多个从节点(例如具有导航、移动、定位等功能的不同算法模块)的通信,可以实现通过主节点来控制机器人的各组件。

一方面,由于ROS1系统采用Master节点控制多个从节点的通信方式,一旦主节点程序崩溃,则所有从节点都不能进行通信,这导致现有技术中的机器人软件架构稳定性较差且通信效率较低;另一方面,需要针对ROS1系统设计对应的软件和硬件,这导致现有技术中的机器人软件架构更新和功能拓展的兼容性较差。

发明内容

有鉴于此,本发明实施例提供一种机器人软件架构、控制方法、控制装置和机器人,可以提高机器人软件架构中各模块的通信效率,并提高机器人软件架构的兼容性和稳定性,具有较高的适用性。

第一方面,本发明实施例提供了一种机器人软件架构,所述机器人软件架构部署有目标系统,所述目标系统包括:

安卓系统,包括应用模块,所述应用模块用于将交互信息通过对应的第一数据通道写入共享内存;

ROS2系统,包括信息处理模块,所述信息处理模块用于采用数据分发服务的方式,基于订阅的所述第一数据通道从所述共享内存读取所述交互信息,根据所述交互信息生成交互指令,以通过对应的第二数据通道写入所述共享内存,使得所述机器人根据所述交互指令执行预定功能;

其中,所述目标系统部署有虚拟机,所述虚拟机用于在所述目标系统中分别部署所述安卓系统和所述ROS2系统。

在一些实施例中,所述目标系统为Linux内核,所述虚拟机为Docker虚拟机。

在一些实施例中,所述ROS2系统和所述安卓系统部署有对应的目标组件驱动模块,各所述目标组件驱动模块用于控制对应的目标组件执行所述预定功能。

在一些实施例中,各所述目标组件驱动模块用于基于订阅的所述第二数据通道从所述共享内存读取所述交互指令。

在一些实施例中,所述应用模块还用于将所述交互信息通过对应的第三数据通道写入所述共享内存,各所述目标组件驱动模块用于基于订阅的所述应用模块的第三数据通道从所述共享内存读取所述交互信息,对所述交互信息进行解析以确定所述交互指令。

在一些实施例中,各所述目标组件驱动模块采用设备映射的方式,根据所述交互指令控制对应的所述目标组件执行所述预定功能。

在一些实施例中,所述目标组件包括通信串口,所述ROS2系统部署的目标组件驱动模块包括串口驱动模块,所述机器人软件架构还部署有运动控制系统,所述运动控制系统包括运动驱动模块,所述串口驱动模块用于通过对应的所述通信串口将所述交互指令传输至对应的所述运动驱动模块;

其中,所述运动驱动模块包括惯性测量器驱动模块、电机驱动模块或开关驱动模块中的至少一项。

第二方面,本发明实施例提供了一种机器人控制方法,所述方法包括:

通过虚拟机在目标系统中分别部署安卓系统和ROS2系统;

调用所述安卓系统部署的应用模块以获取交互信息,以通过对应的第一数据通道写入共享内存;

调用所述ROS2系统部署的信息处理模块,采用数据分发服务的方式,基于订阅的所述第一数据通道从所述共享内存读取所述交互信息,根据所述交互信息生成交互指令,以通过对应的第二数据通道写入所述共享内存;

根据所述交互指令执行预定功能。

第三方面,本发明实施例提供了一种机器人控制装置,所述装置包括:

系统部署单元,用于通过虚拟机在目标系统中分别部署安卓系统和ROS2系统;

信息获取单元,用于调用所述安卓系统部署的应用模块以获取交互信息,以通过对应的第一数据通道写入共享内存;

信息处理单元,用于调用所述ROS2系统部署的信息处理模块,采用数据分发服务的方式,基于订阅的所述第一数据通道从所述共享内存读取所述交互信息,根据所述交互信息生成交互指令,以通过对应的第二数据通道写入所述共享内存;

功能执行单元,用于根据所述交互指令执行预定功能。

第四方面,本发明实施例提供了一种机器人,所述机器人包括:

机器人本体;

目标组件,包括通信接口;

运动组件,包括惯性测量器、电机或开关中的至少一项;

控制器,所述控制器的软件架构采用如第一方面所述的机器人软件架构;

其中,所述目标组件还包括传感器和交互组件中的至少一项。

本发明实施例通过在机器人软件架构中部署目标系统,在目标系统中部署虚拟机,由虚拟机在目标系统中分别部署安卓系统和ROS2系统,进而安卓系统中预设的应用模块通过对应的第一数据通道将交互信息写入共享内存,通过ROS2系统预设的信息处理模采用数据分发服务的方式,基于订阅的第一数据通道从共享内存读取交互信息,以根据交互信息生成交互指令,进而通过对应的第二数据通道将交互指令写入共享内存,使得机器人根据交互指令执行预定功能。由此,可以提高机器人软件架构中各模块的通信效率,并提高机器人软件架构的兼容性和稳定性,具有较高的适用性。

附图说明

通过以下参照附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1是本发明实施例的机器人软件架构的示意图;

图2是本发明实施例的机器人软件架构的等效示意图;

图3是本发明实施例的机器人的示意图;

图4是本发明实施例的机器人控制方法的流程图;

图5是对比例的机器人软件架构的示意图;

图6是对比例的机器人软件架构的示意图;

图7是对比例的机器人软件架构的示意图;

图8是对比例的机器人软件架构的示意图;

图9是本发明实施例的机器人控制装置的示意图;

图10是本发明实施例的电子设备的示意图。

具体实施方式

以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。

此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。

除非上下文明确要求,否则整个申请文件中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

图1是本发明实施例的机器人软件架构的示意图。如图1所示,本实施例的机器人软件架构部署有目标系统1,目标系统1中部署有虚拟机11。虚拟机11(Virtual Machine,VM)用于采用虚拟化技术在目标系统1中分别部署安卓系统111(也即Android)和目标子系统112。安卓系统111中部署有应用模块111a。目标子系统112中部署有信息处理模块112a。其中,安卓系统是基于LINUX的开源系统,侧重于人机交互功能(例如语音交互、触摸屏交互等)。

在本实施例中,由于现有技术在机器人软件架构中设置ROS1系统,需要针对ROS1系统设计对应的软件和硬件,导致机器人软件架构更新和功能拓展的兼容性较差,并且ROS1系统采用Master节点控制多个从节点的通信方式,导致稳定性较差且通信效率较低。针对这种情况,本实施例通过安卓系统111中预设的应用模块111a将交互信息通过对应的第一数据通道写入共享内存113,进而通过目标子系统112中信息处理模块112a采用数据分发服务(Data Distribution Service,DDS)的方式,基于订阅的第一数据通道从共享内存113读取交互信息。然后信息处理模块112a根据交互信息生成交互指令,将交互指令写入共享内存113,使得机器人根据共享内存113中的交互指令执行对应的预定功能。由此,可以提高机器人软件架构中各模块的通信效率,并提高机器人软件架构的兼容性和稳定性,具有较高的适用性。

在本实施例中,目标系统1可以为Linux内核,Linux内核可以运行Linux操作系统。同时,Linux内核可以在多种宿主系统上运行,宿主系统例如Linux操作系统、安卓操作系统等。具体的,宿主系统可以调用Linux内核API(Application Programming Interface,应用程序编程接口)以加载Linux内核,使得Linux内核执行初始化等驱动程序以运行Linux操作系统。应理解,本实施例以目标系统1为Linux内核为例进行说明,但目标系统1也可以为Linux操作系统、安卓操作系统等。

可选的,Linux内核可以采用多种内核架构,内核架构例如单内核(MonolithicKernel,MK)架构、微内核(也即Microkernel)架构、混合内核(Hybrid Kernel,HK)架构等。其中,对于单内核架构,Linux操作系统的预定功能和服务可以运行在内核的上下文(也即Context)中,也就是说,宿主系统的多种操作(例如程序调用、资源共享、进程管理等)均可以在内核内部高效完成,因此单内核架构具有较高的性能和效率等优点。微内核架构将内核预设的核心功能最小化,将预设的其他功能模块化并运行在用户空间(User Space,US),也就是说,预设的其他功能可以作为用户空间进程添加或删除,因此微内核架构具有较高的可维护性和灵活性等优点。混合内核架构可以将预设的核心功能设置于内核中,将预设的其他功能设置于用户空间模块中,因此混合内核架构具有较高的性能和灵活性等优点。在如下的描述中,以Linux内核采用单内核架构为例进行说明。

在本实施例中,目标系统1中部署的虚拟机11可以为Docker虚拟机。Docker虚拟机可以提供一个或多个容器(也即Docker Container)。容器可以被Docker虚拟机创建、启动、停止、删除、暂停等。每个容器都是相互隔离的、保证安全的平台。同时,可以使用Docker虚拟机来实现容器。开发人员能够在Docker虚拟机的一个独立的容器中打包应用程序及其依赖项,以实现将应用程序/算法等移植到其他环境中(例如虚拟机11通过一个容器在目标系统1中部署安卓系统111的应用模块111a,并通过另一个容器在目标系统1中部署目标子系统112的信息处理模块112a)。其中,每个容器是相互隔离的、具有较高安全性的平台。因此,本实施例的机器人软件架构具有较高的稳定性。其中,Docker虚拟机是一个通过虚拟化技术构建在Linux容器(Linux Container,LXC)之上的,基于进程容器(Process container)的轻量级VM解决方案。具体的,采用Docker虚拟技术时,可以将运行的Docker容器打包成image镜像,然后部署到实际的控制单元中(例如CPU、ARM等)。进一步地,在同一环境(也即同一控制单元)中,可以同时运行多个Docker container。也就是说,Docker虚拟机可以通过多个容器在目标系统1分别部署安卓系统111和目标子系统112,从而满足用户使用需求以及测试需求等,并且安卓系统111和目标子系统112互不影响,可以提高机器人软件架构的兼容性和稳定性,具有较高的适用性。

需要说明的是,Docker虚拟机属于一种容器化平台。传统的虚拟机(例如VirtualBox、VMWare)需要在主操作系统(例如目标系统1)中运行一个完整的虚拟操作系统。相比于传统的虚拟机,Docker虚拟机提供的容器通常可以共享主操作系统的内核,并提供隔离的环境,因此具有较高的适用性。也就是说,容器可视为轻量级的虚拟机,相比于传统的虚拟机,容器拥有更高的资源使用效率,因为容器不需要为信息处理模块112a包括的每个算法模块分配单独的操作系统。

可选的,目标子系统112可以为ROS2(Robot Operating System2,机器人操作系统2)系统。也就是说,Docker虚拟机在Linux内核中分别部署安卓系统111和ROS2系统。其中,ROS2系统属于机器人操作系统(基于LINUX)的一个版本。区别于ROS1系统,ROS2系统是基于数据分发服务DDS实现节点间的通信,并且实现了去中心化的目的。也就是说,ROS2系统采用分布式实时通信,从而提高了机器人软件架构的实时性、稳定性和安全性。其中,ROS2系统还提供了软件框架和工具集,用来帮助开发人员建立机器人应用程序,例如ROS2系统提供了硬件抽象、设备驱动、算法模块、函数库、可视化工具、消息传递和软件包管理等处理模块。在如下的描述中,以ROS2系统提供的信息处理模块12a包括算法模块为例进行说明。

可选的,目标子系统112还可以为Linux系统。也就是说,Docker虚拟机在目标系统1中部署Linux操作系统,该Linux系统用于运行ROS2系统框架。其中,ROS2系统框架表征预设的ROS2系统的核心软件架构和运行时环境。例如,ROS2系统框架包括节点(Nodes)、通信(Communication)、硬件抽象、设备驱动、算法模块、函数库、可视化工具等。在如下的描述中,以目标子系统112即为Linux系统,也即Docker虚拟机通过容器在目标系统1中部署Linux操作系统,并在Linux操作系统中运行ROS2系统框架为例进行说明。

在本实施例中,以虚拟机11即Docker虚拟机为例进行说明。应理解,本实施例中的虚拟机11还可以通过具有在目标系统1中分别部署安卓系统111和目标子系统112功能的各种类型的虚拟机来实现。例如,目标系统1为Linux内核或Linux操作系统,虚拟机11可以为VirtualBox虚拟机、VMware Workstation虚拟机、KVM(Kernel based Virtual Machine,系统虚拟化模块)虚拟机等。再例如,目标系统1为安卓系统,虚拟机11可以为Linux Deploy虚拟机、Termux虚拟机、AnLinux虚拟机等。

在本实施例中,共享内存113(Shared Memory)指的是在具有多个控制单元(例如CPU(Central Processing Unit,中央处理器)、ARM(Advanced RISC Machines,微处理器)、单片机等)的计算机系统中,可以被不同控制单元访问的大容量内存。也就是说,由于多个控制单元需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他控制单元也可能要存取,因此共享内存需要进行更新。

在本实施例中,共享内存113基于数据分发服务DDS的方式实现应用模块111a与虚拟机11部署目标子系统112中的信息处理模块112a之间的通信。其中,数据分发服务DDS基于面向实时系统的数据分发服务标准(也即Data Distribution Service for Real TimeSystems),属于一种分布式实时通信中间件协议,DDS标准定义了以数据为中心的发布/订阅(也即Data CentricPublish Subscribe)机制提供了一个与平台无关的数据模型。具体的,信息发布者(例如应用模块111a)也即Publisher,可以设置发布的主题(也即Topic)。订阅者(例如信息处理模块112a),也即Subscriber,可以订阅关于该主题的数据通道。也就是说,当信息发布者基于在共享内存113中设置的主题,并以广播的形式在共享内存113中发布交互信息。则订阅了该主题的订阅者可以基于该主题对应的数据通道获取该交互信息。例如,应用模块111a在共享内存113中设置交互信息的主题为A,则订阅了该主题A对应的第一数据通道的信息处理模块112a可以获取该交互信息。由此,机器人软件架构中的各模块可以基于订阅/设置的主题实现并行数据交互。也就是说,机器人软件架构中的各模块在逻辑上没有主节点和从节点的控制关系,机器人软件架构中的各模块的通信方式可以是一个模块对应另一个模块,或者,一个模块对应其他多个模块等。

进一步地,数据分发服务DDS提供丰富的QoS(Quality of Service,服务质量)策略,以保障通信数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。具体的,本实施例的机器人软件架构的等效示意图可以参考图2。

图2是本发明实施例的机器人软件架构的等效示意图。如图2所示,本实施例的机器人软件架构包括目标系统1和运动控制系统2。目标系统1中部署有虚拟机11。虚拟机11在目标系统1中分别部署安卓系统111和目标子系统112。其中,运动控制系统2部署有运动驱动模块21,运动驱动模块21包括惯性测量器驱动模块21a、电机驱动模块21b和开关驱动模块21c。

在本实施例中,考虑到安卓系统是基于LINUX的开源系统,侧重于人机交互功能(例如语音交互、触摸屏交互等),但是在安卓系统机器人控制(例如运动功能控制等)方面生态薄弱。同时,ROS2系统侧重于机器人控制(例如ROS2系统部署具有导航、移动、定位等功能的不同算法模块)。针对这种情况,本实施例通过在安卓系统111和目标子系统112分别部署对应的目标组件驱动模块,使得机器人软件架构具有较高的兼容性和稳定性。具体的,安卓系统111部署有应用模块111a和目标组件驱动模块111b,应用模块111a包括应用程序111a1和111a2。目标子系统112(也即Linux系统,同时该Linux系统用于运行ROS2系统框架)部署有信息处理模块112a和目标组件驱动模块112b,信息处理模块112a包括算法模块112a1和112a2。

在本实施例中,应用模块111a、目标组件驱动模块111b和112b以及信息处理模块112a用于实现不同的预定功能,其可以是布置于不同硬件计算平台上的处理单元,也可以是布置于统一硬件平台或云平台上的多个提供服务的软件程序或接口。在如下的描述中,以应用模块111a、目标组件驱动模块111b和112b以及信息处理模块112a为部署于控制器的软件程序为例进行说明。

在本实施例中,目标组件驱动模块111b包括交互组件驱动模块,交互组件驱动模块例如触摸屏驱动模块111b1和相机驱动模块111b2。目标组件驱动模块112b包括传感器驱动模块和串口驱动模块112b2。传感器驱动模块例如雷达驱动模块112b1。

在本实施例中,以应用模块111a包括应用程序111a1和111a2、信息处理模块112a包括算法模块112a1和112a2、目标组件驱动模块111b包括触摸屏驱动模块111b1和相机驱动模块111b2、目标组件驱动模块112b包括雷达驱动模块112b1和串口驱动模块112b2、运动驱动模块21包括惯性测量器驱动模块21a、电机驱动模块21b和开关驱动模块21c为例进行说明。应理解,本实施例的机器人软件架构中的应用程序、算法模块和驱动模块可以基于用户需求、测试需求等自定义设置。例如,应用模块111a还包括应用程序111a3。再例如,信息处理模块112a还包括算法模块112a3。又例如,目标组件驱动模块111b中交互组件驱动模块还包括语音识别驱动模块、指纹识别驱动模块等,目标组件驱动模块112b中传感器驱动模块还包括距离传感器驱动模块、温度传感器驱动模块等。还例如,运动驱动模块21还可以包括机械臂驱动程序等。

在本实施例中,目标子系统112为Docker虚拟机容器中运行的Linux系统,则应用模块111a中应用程序111a1和111a2、信息处理模块112a中算法模块112a1和112a2以及各目标组件驱动模块(也即目标组件驱动模块111b和112b)可以基于Fast DDS与共享内存113进行通信。

具体的,Fast DDS属于一种高性能的通信中间件(例如eProsima Fast DDS等),Fast DDS是数据分发服务DDS和RTPS协议(Real Time Publish Subscribe,实时发布订阅)的实现方式。Fast DDS库可以提供API(Application Programming Interface,应用程序编程接口)和通信协议,从而实现应用模块111a、信息处理模块112a以及各目标组件驱动模块与共享内存113之间的数据交互。

更具体的,Fast DDS提供的Fast DDS Gen应用程序可以调用IDL(InterfaceDefinition Language,接口定义语言)文件中定义的数据类型,基于信息发布者设置的主题(也即Topic)生成Fast DDS格式的数据。Fast DDS格式的数据可以适用于支持Fast DDS的程序中,从而定义该主题的数据类型,并且将用于发布或订阅。其中,信息发布者例如应用模块111a、信息处理模块112a等。

举例来说,预先通过应用模块111a中的应用程序111a1调用Fast DDS中间件提供的API来创建信息发布者和主题,然后应用程序111a1将用户的交互信息发送至Fast DDS中间件。Fast DDS中间件通过Fast DDS Gen应用程序调用IDL接口,基于应用程序111a1设置的主题,根据交互信息生成Fast DDS格式的数据,以写入共享内存113。容易理解,应用程序111a1也可以通过Fast DDS中间件从共享内存113读取数据。由此,可以实现应用模块111a、信息处理模块112a以及各目标组件驱动模块与共享内存113之间的数据交互。

可选的,如果目标子系统112为Docker虚拟机容器中运行的ROS2系统,则目标子系统112中的信息处理模块112a和目标组件驱动模块112b可以基于ROS2 DDS与共享内存113进行通信。具体的,ROS2 DDS与Fast DDS类似,ROS2 DDS也属于一种高性能的通信中间件。ROS2系统的通信机制是基于数据分发服务DDS,ROS2系统提供了DDS抽象层(Abstract DDSlayer),ROS2系统通过DDS抽象层可以兼容多种DDS标准,以实现信息传输。也就是说,ROS2DDS协议栈底层基于Fast RTPS协议实现,使得ROS2系统中信息处理模块112a和目标组件驱动模块112b可以与共享内存113之间进行数据交互。

需要说明的是,DDS中间件(例如Fast DDS中间件、ROS2 DDS中间件等)属于一种软件层,该软件层可以将程序从操作系统和低级数据格式的详细信息中抽象出来,为不同的编程语言提供相同的概念和程序接口,使得本申请实施例的安卓系统111中应用模块111a和目标组件驱动模块111b可以与目标子系统112中信息处理模块112a和目标组件驱动模块112b进行通信和数据交互。也就是说,DDS中间件兼容上述Fast DDS和ROS2 DDS的通信方式。

在本实施例中,各目标组件驱动模块(也即目标组件驱动模块111b和112b)可以基于设备映射的方式与对应的目标组件200(或节点设备)进行通信。也就是说,通过Docker虚拟机可以建立目标组件200与各目标组件驱动模块的映射关系(映射关系例如映射路径等),使得各目标组件驱动模块可以基于对应的映射关系来访问、驱动对应的目标组件200。例如,可以预先确定目标组件200的目标路径、节点文件、设备文件(例如唯一标识信息等)等(例如可以在宿主系统的dev目录中确定设备文件)。然后,通过Docker虚拟机基于目标参数根据目标组件200的设备文件等确定预定容器的驱动模块的映射路径。其中,目标参数例如“-v”参数、“--device”参数、“--privileged”参数等。由此,可以实现各目标组件驱动模块采用设备映射的方式与对应的目标组件200进行通信。

在本实施例中,目标组件200包括传感器和交互组件等。其中,传感器例如雷达230。交互组件例如触摸屏210和相机220。容易理解,触摸屏驱动模块111b1与触摸屏210具有映射关系,相机驱动模块111b2与相机220具有映射关系,雷达驱动模块112b1与雷达230具有映射关系。进一步地,目标组件200还可以包括通信串口,则串口驱动模块112b2与该通信串口具有映射关系。

在本实施例中,以传感器包括雷达230、交互组件包括触摸屏210和相机220为例进行说明。应理解,本实施例中目标组件200可以根据需求设置(例如根据用户个性或需求配置不同的目标组件200),例如,传感器还可以包括距离传感器、温度传感器等,再例如,交互组件还包括麦克风、扬声器等。由此,具有较高的适用性。

在本实施例中,运动控制系统2可以为实时系统,例如Xenomai系统、Linux系统等。进一步地,本发明实施例的机器人的示意图可以参考图3。

图3是本发明实施例的机器人的示意图。如图3所示,本实施例的机器人包括机器人本体100、目标组件200、控制器300和运动组件400。其中,目标组件200包括触摸屏210、相机220和雷达230。控制器300包括第一控制单元310和第二控制单元320。运动组件400包括惯性测量器410、电机420和开关430。目标组件200、控制器300和运动组件400可以设置于机器人本体100中。

可选的,机器人本体100可以包括轮子、关节、机械臂、支撑件等组件。

在本实施例中,控制器300的软件架构采用图2示出的机器人软件架构。具体的,第一控制单元310可以部署目标系统1,第二控制单元320可以部署运动控制系统2。

在本实施例中,第一控制单元310和第二控制单元320可以为具有数据传输、数据处理、数据存储、通信等功能的电子设备。第一控制单元310和第二控制单元320可以通过MCU(Microcontroller Unit,微控制单元)、ARM、PLC(Programmable Logic Controller,可编程逻辑控制器)、FPGA芯片(Field-Programmable Gate Array,现场可编程门阵列)、单片机、DSP(Digital Signal Processor,数字信号处理器)或ASIC(Application SpecificIntegrated Circuit,专用集成电路)等来实现。

在本实施例中,以第一控制单元310、第二控制单元320分别为独立部署的ARM芯片、STM32单片机为例进行说明。应理解,第一控制单元310和第二控制单元320也可以集成在一个芯片上,从而节约机器人的空间,具有较高的适用性。

在本实施例中,目标组件200还可以包括通信串口(也即串行接口(SerialInterface,SI)),则第一控制单元310与第二控制单元320之间可以通过该通信串口进行通信。其中,通信串口例如同步串行接口等,同步串行接口例如RS-232串口、RS-422串口、RS-485串口等。

在本实施例中,各目标组件驱动模块,也即目标组件驱动模块111b中触摸屏驱动模块111b1和相机驱动模块111b2以及目标组件驱动模块112b中雷达驱动模块112b1和串口驱动模块112b2分别用于驱动目标组件200中触摸屏210、相机220、雷达230和通信串口以执行交互信息对应的预定功能。其中,串口驱动模块112b2可以驱动第一控制单元310的通信串口与第二控制单元320进行通信。

在本实施例中,运动驱动模块21中惯性测量器驱动模块21a、电机驱动模块21b和开关驱动模块21c分别用于驱动运动组件400中惯性测量器410、电机420和开关430。

可选的,对于目标组件200,触摸屏210用于获取用户的交互信息。也就是说,用户可以通过触摸屏幕的方式与应用模块111a中的应用程序111a1、111a2进行交互,以控制机器人执行预定功能(例如拍照等)。相机220用于获取图像信息,以传输至第一控制单元310,使得第一控制单元310可以根据图像信息实现物体识别、摄像等预定功能。雷达230可以为激光雷达等,用于实现距离测量、生成环境地图等预定功能。

可选的,对于运动组件400,惯性测量器410也即IMU(I nert ia lMeasurement Unit,惯性测量单元),通常包括加速度计、陀螺仪、磁力计等,用于测量机器人的加速度、角速度、运动状态和方向等预设功能。电机420用于实现机器人进行移动等预设,例如电机420可以控制机器人的轮子、关节、机械臂等运动部件进行运动。开关430也即I/O开关可以用于机器人的启动/关闭等预设,也可以用于检测或触发预定功能,例如I/O开关控制开始进行状态监测、防撞、停止运动等。

在本实施例中,应用模块111a中的应用程序111a1和111a2用于获取用户的交互信息,基于确定的主题,通过Fast DDS中间件将交互信息写入共享内存113。容易理解,共享内存13可以基于Fast DDS实现目标系统1中各模块之间通信和数据交互。其中,主题可以基于交互信息确定,例如将交互信息的字符串、标识符等确定为对应的主题。主题也可以预先设定,例如可以与先设置主题列表,主题列表包括多个字符串、标识符等,则可以对交互信息进行识别,基于预先确定的交互信息与主题列表中字符串、标识符的对应关系,将主题列表中该交互信息对应的字符串、标识符等确定为主题。在如下的描述中,以主题(Topic)也即标识符为例进行说明。

在本实施例中,应用模块111a可以基于预先确定的第一标识符对应的第一数据通道将交互信息写入共享内存113。然后信息处理模块112a可以采用数据分发服务DDS的方式,基于订阅第一标识符对应的第一数据通道从共享内存113读取交互信息。进而信息处理模块112a根据交互信息生成交互指令,信息处理模块112a基于预先确定的第二标识符对应的第二数据通道将交互指令写入共享内存113。进一步地,各目标组件驱动模块(也即目标组件驱动模块111b和112b)可以基于订阅的第二标识符对应的第二数据通道从共享内存113读取交互指令,以控制对应的目标组件200执行预定功能。

举例来说,应用程序111a1获取到用户输入的交互信息“通过相机220进行摄像”,则应用程序111a1可以通过Fast DDS中间件基于第一标识符A1对应的第一数据通道将交互信息写入共享内存113。然后算法模块112a1可以通过Fast DDS中间件基于订阅的第一标识符A1对应的第一数据通道读取交互信息,对交互信息进行处理后生成交互指令“设置相机220的焦距为A11、曝光参数为A12”。进而算法模块112a1通过Fast DDS中间基于第二标识符A2对应的第二数据通道将交互指令写入共享内存113。然后相机驱动模块111b2通过FastDDS中间件基于订阅的第二标识符A2对应的第二数据通道从共享内存113读取交互指令,采用设备映射的方式控制相机220基于交互指令中“焦距为A11、曝光参数为A12”进行摄像。容易理解,应用程序111a2也可以按照上述方式处理交互信息,例如,应用程序111a2通过FastDDS中间件基于第一标识符B1对应的第一数据通道将交互信息写入共享内存113。然后算法模块112a1可以通过Fast DDS中间件基于订阅的第一标识符B1对应的第一数据通道读取交互信息以生成交互指令。也就是说,不同的标识符对应的数据通道不同,例如第一标识符A1和B1对应的第一数据通道不同。

再举例来说,应用程序111a2获取到用户输入的交互信息“机器人移动至给定的导航位置C”,则应用程序111a2可以通过Fast DDS中间件基于第一标识符C1对应的第一数据通道将交互信息写入共享内存113。然后算法模块112a2可以通过Fast DDS中间件基于订阅的第一标识符C1对应的第一数据通道读取交互信息,对交互信息进行处理后生成交互指令“电机移动速度为C11、移动角度为C12、移动时间为C13”。然后算法模块112a2通过Fast DDS中间件基于第二标识符C2对应的第二数据通道将交互指令写入共享内存113。进而串口驱动模块112b2基于订阅的第二标识符C2对应的第二数据通道从共享内存113读取交互指令,采用设备映射的方式以驱动对应的通信串口将交互指令传输至电机420,使得控制电机420基于交互指令中“移动速度为C1、移动角度为C2、移动时间为C3”移动至导航位置C。

在本实施例中,应用模块111a还可以基于预先确定的第三标识符对应的第三数据通道将交互信息写入共享内存113。然后各目标组件驱动模块(也即目标组件驱动模块111b和112b)可以基于订阅的第三标识符对应的第三数据通道从共享内存113读取交互信息,对交互信息进行解析以确定交互指令,以控制对应的目标组件200执行预定功能。用户可以通过应用模块111a直接输入交互信息对应的交互指令,则各目标组件驱动模块可以对交互信息进行解析以执行对应的预定功能。

举例来说,应用程序111a1获取到用户输入的交互信息“通过相机220进行摄像,相机220的焦距为A11、曝光参数为A12”。则应用程序111a1可以通过Fast DDS中间件基于预先确定的第三标识符D1对应的第三数据通道将交互信息写入共享内存113。然后相机驱动模块111b2基于订阅的第三标识符D1从共享内存13读取交互信息,对交互信息进行解析,以控制相机220基于交互信息中“采用焦距为A11、曝光参数为A12”进行摄像。进一步地,本实施例的机器人控制方法的流程图可以参考图4。

图4是本发明实施例的机器人控制方法的流程图。如图4所示,本实施例的机器人控制过程包括如下步骤:

步骤S100、通过虚拟机在目标系统中分别部署安卓系统和ROS2系统。

在本实施例中,控制器300中第一控制单元310通过Docker虚拟机在Linux内核(也即目标系统)中分别部署安卓系统111和ROS2系统。

可选的,第一控制单元310也可以在Linux内核中分别部署安卓系统和Linux系统,在该Linux系统用于运行ROS2系统框架。

步骤S200、调用安卓系统部署的应用模块以获取交互信息,以通过对应的第一数据通道写入共享内存。

在本实施例中,控制器300的第一控制单元310调用安卓系统111中预设的应用模块111a获取交互信息,以通过Fast DDS中间件基于预先确定的第一标识符(也即第一主题Topic)对应的第一数据通道写入共享内存113。

步骤S300、调用ROS2系统部署的信息处理模块,采用数据分发服务的方式,基于订阅的第一数据通道从共享内存读取交互信息,根据交互信息生成交互指令,以通过对应的第二数据通道写入共享内存。

在本实施例中,控制器300的第一控制单元310调用ROS2系统中预设的信息处理模块112a,以通过DDS中间件基于预先订阅的第一标识符对应的第一数据通道从共享内存113读取交互信息。然后信息处理模块112a根据交互信息生成交互指令,以通过对应的第二数据通道写入共享内存。

步骤S400、根据交互指令执行预定功能。

在本实施例中,控制器300根据交互指令控制机器人执行预定功能。进一步地,对比例的机器人软件架构的示意图可以参考图5。

图5是对比例的机器人软件架构的示意图。如图5所示,对比例的机器人软件架构包括交互层3、Linux系统层4和控制层5。其中,交互层3包括第一相机安卓驱动程序31、触摸屏安卓驱动程序32、第一应用程序33和第二应用程序34。Linux系统层4包括算法模块41、算法模块42、雷达ROS2驱动程序43和第二相机ROS2驱动程序44。控制层5包括惯性测量器驱动模块51、电机驱动模块52和开关驱动模块53。

在对比例中,交互层3和Linux系统层4可以部署于独立的两个ARM芯片上,这两个ARM芯片通过局域网连接,并基于TCP/UDP通信协议(Transmission Control Protocol,TCP)(User Datagram Protocol,UDP)进行信息交互控制层5可以部署于独立的STM32单片机上。部署Linux系统层4的ARM芯片可以采用串口通信的方式与部署控制层5的STM32单片机通信。

在对比例中,交互层3运行安卓系统。安卓系统用于语音、视频等交互软件运行。第一应用程序33和第二应用程序34基于TCP/UDP通信协议与Linux系统层4的算法模块41和42通信。

在对比例中,Linux系统层4运行Linux系统,Linux系统中运行ROS2系统框架。Linux系统层4可以从交互层3的第一应用程序33和第二应用程序34获取交互信息后生成交互指令,通过串口通信将交互指令发送至控制层5中惯性测量器驱动模块51、电机驱动模块52和开关驱动模块53。

图5示出的对比例的机器人软件架构与本实施例的机器人软件架构相比,一方面,对比例的机器人软件架构中交互层3和Linux系统层4使用不同的操作系统(也即安卓系统和Linux),并需要各自运行在独立的ARM芯片上,因此需要单独设计对应的电路,导致硬件成本增加。而本实施例的机器人软件架构通过虚拟机11在Linux内核中部署安卓系统111和ROS2系统,硬件成本大幅下降。另一方面,对比例的机器人软件架构如果与拓展设备连接,需要开发不同的设备驱动,无法做到通用性,造成软件开发成本增加。而本实施例的机器人软件架构可以使用ROS2系统提供的驱动程序,驱动开发效率大幅提升。进一步地,对比例的机器人软件架构的示意图可以参考图6。

图6是对比例的机器人软件架构的示意图。如图6所示,对比例的机器人软件架构包括安卓系统层6和运动控制层7。安卓系统层6包括安卓应用程序61和62、算法模块63和64、触摸屏驱动模块65、相机驱动模块66、雷达驱动模块67和串口驱动模块68。运动控制层7包括惯性测量器驱动模块71、电机驱动模块72和开关驱动模块73。

在对比例中,安卓系统层6可以部署与ARM芯片上。运动控制层7可以部署于STM32单片机上。

在对比例中,安卓系统层6部署有安卓系统,ROS1系统的算法模块63和64被编译成安卓应用程序运行在安卓系统上,ROS1系统的算法模块63和64与安卓应用程序61和62基于ROS1通信框架(也即ROS1TCP/UDP)通信。

图6示出的对比例的机器人软件架构与本实施例的机器人软件架构相比,一方面,图6示出的对比例虽然解决了图5示出的三层架构的软硬件成本问题,由于ROS1系统是在Linux下开发,将ROS1系统的算法模块63和64编译成安卓应用程序运行在安卓系统上需要进行代码适配和交叉编译,导致软件开发成本增加。而本实施例的机器人软件架构可以使用ROS2系统提供的驱动程序,驱动开发效率大幅提升。另一方面,图6示出的对比例的机器人软件架构,如果安卓系统版本的升级可能对ROS1的算法模块63和64造成兼容性问题,并且ROS1系统虽然可以应用于安卓系统,但ROS1系统采用一个主节点控制多个从节点,一旦主节点程序崩溃,则所有从节点都不能进行通信,导致稳定性较差且通信效率较低。而本实施例的机器人软件架构采用数据分发服务的通信方式提高机器人软件架构中各模块的通信效率,具有较高的稳定性。

图7是对比例的机器人软件架构的示意图。如图7所示,对比例的机器人软件架构包括安卓系统层8A和运动控制层8B。安卓系统层8A包括安卓应用程序8A1和8A2、Docker虚拟机8A4、触摸屏驱动模块8A5和相机驱动模块8A6。Docker虚拟机8A4用于在安卓系统层8A中部署Linux系统,Linux系统可以运行ROS2系统框架。同时,Linux系统包括算法模块8A41和8A42、雷达驱动模块8A43以及串口驱动模块8A44。运动控制层8B包括惯性测量器驱动模块8B1、电机驱动模块8B2和开关驱动模块8B3。

在图7示出的对比例中,安卓应用程序8A1和8A2可以将交互信息写入共享内存8A3,对应的算法模块8A41和8A42可以从共享内存8A3读取交互信息以生成交互指令,以通过串口驱动模块8A44将交互指令传输至运动控制层8B。

图7示出的对比例的机器人软件架构与本实施例的机器人软件架构相比,图7示出的对比例中安卓系统层8A与Docker虚拟机8A4部署的Linux系统存在影响,且稳定性较低。例如,安卓系统层8A无法运行时,会同时导致安卓系统层8A中Docker虚拟机8A4部署的Linux系统无法运行。而本实施例的机器人软件架构中通过虚拟机11通过不同的容器分别部署安卓系统111和ROS2系统,安卓系统111与ROS2系统互不影响,具有较高的稳定性。

图8是对比例的机器人软件架构的示意图。如图8所示,对比例的机器人软件架构包括Linux系统层8C和运动控制层8D。Linux系统层8C包括算法模块8C1和8C2、雷达驱动模块8C3、串口驱动模块8C4以及Docker虚拟机8C6。Docker虚拟机8C6用于在Linux系统层8C中部署安卓系统,安卓系统包括安卓应用程序8C61和8C62、触摸屏驱动模块8C63以及相机驱动模块8C64。运动控制层8D包括惯性测量器驱动模块8D1、电机驱动模块8D2和开关驱动模块8D3。

图8示出的对比例与图7示出的对比例的机器人软件架构类似。图8示出的对比例与本实施例的机器人软件架构相比,图8示出的对比例中Linux系统层8C与Docker虚拟机8C6部署的安卓系统存在影响,且稳定性较低。例如,Linux系统层8C无法运行时,会同时导致Linux系统层8C中Docker虚拟机8C6部署的安卓系统无法运行。而本实施例的机器人软件架构中通过虚拟机11通过不同的容器分别部署安卓系统111和ROS2系统,安卓系统111与ROS2系统互不影响,具有较高的稳定性。

本发明实施例通过在机器人软件架构中部署目标系统,在目标系统中部署虚拟机,由虚拟机在目标系统中分别部署安卓系统和ROS2系统,进而安卓系统中预设的应用模块通过对应的第一数据通道将交互信息写入共享内存,通过ROS2系统预设的信息处理模采用数据分发服务的方式,基于订阅的第一数据通道从共享内存读取交互信息,以根据交互信息生成交互指令,进而通过对应的第二数据通道将交互指令写入共享内存,使得机器人根据交互指令执行预定功能。由此,可以提高机器人软件架构中各模块的通信效率,并提高机器人软件架构的兼容性和稳定性,具有较高的适用性。

图9是本发明实施例的机器人控制装置的示意图。如图9所示,本实施例的机器人控制装置包括系统部署单元901、信息获取单元902、信息处理单元903和功能执行单元904。其中,系统部署单元901用于通过虚拟机在目标系统中分别部署安卓系统和ROS2系统。信息获取单元902用于调用所述安卓系统部署的应用模块以获取交互信息,以通过对应的第一数据通道写入共享内存。信息处理单元903用于调用所述ROS2系统部署的信息处理模块,采用数据分发服务的方式,基于订阅的所述第一数据通道从所述共享内存读取所述交互信息,根据所述交互信息生成交互指令,以通过对应的第二数据通道写入所述共享内存。功能执行单元904用于根据所述交互指令执行预定功能。

本发明实施例通过在机器人软件架构中部署目标系统,在目标系统中部署虚拟机,由虚拟机在目标系统中分别部署安卓系统和ROS2系统,进而安卓系统中预设的应用模块通过对应的第一数据通道将交互信息写入共享内存,通过ROS2系统预设的信息处理模采用数据分发服务的方式,基于订阅的第一数据通道从共享内存读取交互信息,以根据交互信息生成交互指令,进而通过对应的第二数据通道将交互指令写入共享内存,使得机器人根据交互指令执行预定功能。由此,可以提高机器人软件架构中各模块的通信效率,并提高机器人软件架构的兼容性和稳定性,具有较高的适用性。

图10是本发明实施例的电子设备的示意图。如图10所示,图10所示的电子设备包括通用的计算机硬件结构,其至少包括处理器911和存储器912。处理器911和存储器912通过总线913连接。存储器912适于存储处理器911可执行的指令或程序。处理器911可以是独立的微处理器,也可以是一个或者多个微处理器集合。由此,处理器911通过执行存储器912所存储的指令,从而执行如上所述的本发明实施例的方法流程实现对于数据的处理和对于其它装置的控制。总线913将上述多个组件连接在一起,同时将上述组件连接到显示控制器914和显示装置以及输入/输出(I/O)装置915。输入/输出(I/O)装置915可以是鼠标、键盘、调制解调器、网络接口、触控输入装置、体感输入装置、打印机以及本领域公知的其他装置。典型地,输入/输出装置915通过输入/输出(I/O)控制器916与系统相连。

本领域的技术人员应明白,本申请的实施例可提供为方法、装置(设备)或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品。

本申请是参照根据本申请实施例的方法、装置(设备)和计算机程序产品的流程图来描述的。应理解可由计算机程序指令实现流程图中的每一流程。

这些计算机程序指令可以存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现流程图一个流程或多个流程中指定的功能。

也可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程中指定的功能的装置。

本发明的另一实施例涉及一种非易失性存储介质,用于存储计算机可读程序,所述计算机可读程序用于供计算机执行上述部分或全部的方法实施例。

即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指定相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-On lyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域技术人员而言,本申请可以有各种改动和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 车辆控制装置、车辆、车辆控制装置的处理方法以及存储介质
  • 车辆控制装置、车辆、车辆控制装置的处理方法以及存储介质
  • 网络入侵检测方法、系统、设备及计算机可读存储介质
  • 车辆电力装置的控制方法和装置、存储介质和车辆
  • 车辆控制装置、车辆、车辆控制方法以及存储介质
  • 基于UDS的入侵检测方法、入侵检测装置、车辆及存储介质
  • 基于UDS协议的入侵检测方法、装置、电子设备及存储介质
技术分类

06120116571278