一种支持多种硬件接口的机器人开发板ROS通讯系统的制作方法

文档序号:24174023发布日期:2021-03-05 20:01阅读:246来源:国知局
一种支持多种硬件接口的机器人开发板ROS通讯系统的制作方法
一种支持多种硬件接口的机器人开发板ros通讯系统
技术领域
1.本发明涉及ros通讯技术领域,具体而言涉及一种支持多种硬件接口的机器人开发板ros通讯系统。


背景技术:

2.ros机器人操作系统(robot operating system)是当前主流的开源机器人软件开发架构,其本质是通讯机制、开发工具、应用功能和生态系统的集合体。ros通讯只能使用以太网和wifi硬件接口,阻碍了机器人开发板小型化、低功耗化和降低成本的发展方向。
3.在机器人的硬件设计中,嵌入式开发板集成的芯片和硬件接口数量影响了它的大小和成本。一方面集成芯片和硬件接口越多的板子造价越高、体积增大。另一方面,使用wifi用于通讯,加大了机器人的能耗,减少了机器人电池的工作时长。
4.因此,亟需一种通讯系统,能够解决原生ros通讯支持硬件接口少的问题,允许ros使用常见的硬件接口进行通讯,如usb2.0、usb3.0、otg、蓝牙、串口、以太网、wifi等。


技术实现要素:

5.本发明针对现有技术中的不足,提供一种支持多种硬件接口的机器人开发板ros通讯系统,能够在不需要额外的硬件支持和不需要对ros做任何修改的条件下,通过在软件层面上的中间件设计和通讯信息编码,支持原生ros使用usb2.0、usb3.0、otg、蓝牙、串口、以太网、wifi硬件接口进行通讯,同时不影响原接口的正常功能,从而可以根据嵌入式开发板的接口设计和使用情况灵活配置任意接口用于ros通讯,极大地方便了低成本和低功耗ros开发板的设计,同时也有利于开发板的小型化。
6.为实现上述目的,本发明采用以下技术方案:
7.一种支持多种硬件接口的机器人开发板ros通讯系统,所述ros通讯系统包括虚拟网络中间件和虚拟适配器;
8.所述虚拟网络中间件用于将对应线路的不同类型的硬件接口虚拟成网络接口,通过虚拟ip支持原生ros通讯;
9.所述虚拟适配器对接收到的通讯数据进行识别,如果是ros数据,将原本的网路线路调用嫁接到相应线路编号的虚拟线路上,采用对应的硬件接口本地回环接收到的通讯数据至共享内存,如果不是ros数据,按照该硬件接口的正常功能传输至外部程序。
10.为优化上述技术方案,采取的具体措施还包括:
11.进一步地,所述ros通讯系统还包括内部处理模块;
12.所述内部处理模块提取共享内存中的ros数据,自动添加到ros队列尾部,供ros程序调用。
13.进一步地,所述虚拟适配器对通讯数据进行识别的过程包括以下步骤:
14.s01,接收到的通讯数据,通过http使用统一资源标识符判断源数据是否满足http协议,如果满足,进入步骤s02,否则,进入步骤s03;
15.s02,判断数据是否符合xml封装,如果符合,判定接收到的通讯数据满足ros通讯的xml-rpc协议,否则,进入步骤s03;
16.s03,判定接收到的通讯数据为非ros数据。
17.进一步地,所述虚拟网络中间件包括基础驱动生成模块和自定义虚拟接口生成模块;
18.所述基础驱动模块用于生成基础驱动程序;所述自定义虚拟模块用于根据开发板的功能部署图确认虚拟对象的线路编号,并根据确认结果将对应线路的不同类型的硬件接口虚拟成网络接口,通过虚拟ip支持原生ros通讯。
19.进一步地,所述基础驱动模块的工作流程包括以下步骤:
20.s11,确认芯片规格,获取对应的gcc编译器;
21.s12,根据硬件接口的用途,选择电源芯片,并将该电源芯片连接到处理器上;
22.s13,编写对应操作系统的dts节点与驱动,编写电源适配逻辑驱动;
23.s14,根据cpu架构编译linux内核,生成映像文件、模块文件。
24.进一步地,所述自定义虚拟模块的工作流程包括以下步骤:
25.s21,确认开发板的功能部署图,确认虚拟网络适配器的线路编号;
26.s22,编写每个线路对应的硬件接口的自定义设备虚拟模块,将原本的线路调用嫁接到虚拟线路上;
27.s23,自动分配或设定每个线路自身的虚拟ip,并将虚拟接口的对象设备ip设为自己的网关;
28.s24,预留桥接ros的接口。
29.进一步地,所述虚拟适配器的加载流程包括以下步骤:
30.s31,通过专用的烧写连接线和烧写电路,将生成的虚拟适配器烧写到处理器中;
31.s32,向linux内核加载生成的虚拟适配器模块文件;
32.s33,通过命令行启动虚拟适配器;
33.s34,通过修改host,将ros的数据包桥接到虚拟适配器。
34.s35,设置复合ros规格的转发规则、转发地址和转发端口。
35.s36,启动ros,开始传输数据。
36.进一步地,所述不同类型的硬件接口包括usb接口、otg接口、蓝牙接口、串口接口、以太网接口和wifi接口。
37.本发明的有益效果是:
38.(1)本发明实现了在嵌入式开发板上利用不同硬件接口(如usb-otg等)支持ros通讯的功能,本发明所设计的通讯系统成功解决了ros通讯支持硬件接口少的缺点。
39.(2)本发明可利用现有开发板的硬件接口,无需对开发板的硬件进行改动。
40.(3)本发明摆脱了对开发板生产厂商的依赖,无需生产厂商提供额外软件功能模块。
41.(4)本发明降低了开发板的成本,减少了开发板的尺寸。
42.(5)本发明节省了ros wifi通讯造成的能耗。
43.(6)本发明支持usb3.0硬件接口,提供了更高的每秒5gb传输速度。
附图说明
44.图1是本发明的支持多种硬件接口的机器人开发板ros通讯系统的结构示意图。
45.图2是本发明的模块加载整合流程图。
具体实施方式
46.现在结合附图对本发明作进一步详细的说明。
47.需要注意的是,发明中所引用的如“上”、“下”、“左”、“右”、“前”、“后”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。
48.结合图1,本发明提及一种支持多种硬件接口的机器人开发板ros通讯系统,所述ros通讯系统包括虚拟网络中间件和虚拟适配器。
49.所述虚拟网络中间件用于将对应线路的不同类型的硬件接口虚拟成网络接口,通过虚拟ip支持原生ros通讯。
50.所述虚拟适配器对接收到的通讯数据进行识别,如果是ros数据,将原本的网路线路调用嫁接到相应线路编号的虚拟线路上,采用对应的硬件接口本地回环接收到的通讯数据至共享内存,如果不是ros数据,按照该硬件接口的正常功能传输至外部程序。
51.由于原生ros只支持网络通讯,因此本发明的总体思路是通过设计虚拟网络中间件,将不同硬件接口虚拟成一个网络接口,通过虚拟ip支持原生ros通讯。同时通过设计所使用硬件接口的虚拟适配器,智能识别通讯数据,如果是ros数据,则按照虚拟网络中间件方式传输,否则按照硬件接口的正常功能传输。操作系统在需要调用某个接口功能时,先通过虚拟适配器进行编码封装,然后发送到目标的设备接口,也就是“自定义设备虚拟模块”。自定义设备虚拟模块将这条命令转换到其他硬件接口,如usb接口,通过该设备控制器将该命令执行下去。从而实现原本需要一套硬件组件才能实现的功能。
52.一、虚拟网络中间件
53.虚拟网络中间件用于将多种硬件接口根据自定义设置封装为虚拟网络接口,在操作系统层面虚拟为网卡,不需要额外的硬件支持,例如不需要网卡转换装置实现多种硬件接口的网络通讯功能。具体的,通过确认开发板的功能部署图,确认虚拟网络适配器的线路编号。然后编写不同硬件接口的虚拟网络中间件模块,将原本的网络线路调用嫁接到虚拟线路上,从而实现使用不同硬件接口替代原本的网络接口。
54.二、虚拟适配器
55.虚拟适配器使用软件的方法实现原本的硬件适配器功能,支持不同硬件接口的正常功能和虚拟网络功能,即接口处于网络和标准功能的复用状态。ros网络传输协议使用了http和xml-rpc,这里需要对收到的数据进行判断是否是ros的通讯。通过http使用统一资源标识符(uniform resource identifiers,uri)判断源数据是否满足http协议。进一步确认数据符合xml封装,确认满足ros通讯的xml-rpc协议。如果判断通讯数据符合ros数据规格,则证明是ros通讯,需要通过虚拟网络中间件传输,将接收到的数据转换为网络传输用的信号。否则则说明是标准接口传输内容,按照该硬件接口的正常数据转换进行。
56.下面以usb-otg接口为例对虚拟适配器的工作原理进行说明。
57.(一)基础驱动部分流程:
58.(1)确认芯片规格,获取对应的gcc编译器。
59.(2)根据usb-otg用途,选择电源芯片,并将该电源芯片连接到处理器上。
60.(3)编写对应操作系统的dts节点与驱动,编写电源适配逻辑驱动。
61.(4)根据cpu架构(本例是arch64)编译linux内核,生成映像文件、模块文件。
62.(二)自定义虚拟模块实现流程:
63.(1)确认(开发板的)功能部署图,确认虚拟对象(网络适配器)的线路编号。
64.(2)编写对应设备的自定义设备虚拟模块,将原本的线路调用嫁接到usb-otg线路上。
65.(3)设定自身的虚拟ip,并将usb-otg接口的对象设备ip设为自己的网关。
66.(4)预留桥接ros的接口,以便于后续为了ros服务。
67.正常的硬件通讯,数据会通过开发板上面的微电路传输到网卡上面再经由网络发送,假设本案例的网卡数据线路编号ym33,usb-otg接口线路ym72,本发明通过编写程序将原本经由ym33转接到ym72线路上,即实现使用usb-otg接口替代原本的网络接口。
68.网络传输协议需要双方具有ip地址,如果设备有网卡的话,接入网络后会自动分配ip地址,而如果使用usb-otg接口,则需要设置自身的虚拟ip,并把传输对象的虚拟ip设为自己的网关,以模拟正常的网络传输。
69.(三)虚拟适配器的编译与加载
70.首先需要确认目标的芯片架构:根据x86/arch64架构就获取对应x86/arch64的gcc编译器。将编辑完成的驱动源码放入到对应的driver文件夹中,并在该内核的dts节点中注册对应驱动的设备树。然后编辑kconfig,把相关功能加入到menuconfig中并默认打开,目的是为了让gcc编译器识别出需要编译的东西并加入编译队列。最后采用make命令编译内核,生成kernel内核映像文件烧入到芯片中。因为刚编译好的文件必须刷入到芯片中才能使用。
71.当以上编译步骤完成后,把编译好的.ko文件从目录中复制出来,通过u盘/ftp/http等方式传输到系统中,因为linux默认编译中模块文件和映像文件是分开的。通过insmod加载模块,即可成功使用虚拟网络中间件和虚拟网络适配器。
72.(四)虚拟适配器实现流程(仅叙述调制部分,解调部分为反向流程):
73.(1)通过http使用统一资源标识符(uniform resource identifiers,uri)判断源数据是否满足http协议。
74.(2)进一步确认数据符合xml封装,确认满足ros通讯的xml-rpc协议。
75.(3)将对应请求调制成usb传输协议的需求,发送。
76.ros的网络传输协议使用了http和xml-rpc,这里需要对收到的数据进行判断是否是ros通讯数据。因为本案例使用了usb-otg接口代替网络接口,但是usb-otg接口处于网络和标准usb的复用状态,所以需要判断数据格式来鉴别数据是哪一种。如果符合ros数据规格,则证明是ros通讯数据,如果不是则说明是标准usb-传输内容。另外,通常网卡内置调制解调功能,即将接收到的数据转换为传输用的信号,将接收到的信号转换为通用数据。本步骤即为usb实现调制解调功能的说明。
77.(五)模块加载整合实现流程:
78.(1)通过专用的烧写连接线和烧写电路将虚拟适配器烧写到处理器中。
79.(2)向linux内核加载生成的模块文件。
80.(3)通过命令行启动虚拟适配器模块、虚拟模块。
81.(4)通过修改host,将ros的数据包桥接到模块。
82.(5)设置复合ros规格的转发规则和转发地址、端口。
83.(6)启动ros,传输数据
84.通过前述步骤将程序部分烧录到操作系统的内核中,以实现相应功能。在烧录程序之后,还需要将ros和本案例的预留接口结合。图2为本发明的模块加载整合流程图。
85.以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1