一种基于IROS的CAN大消息通信方法、设备、存储介质与流程

文档序号:29137101发布日期:2022-03-05 02:07阅读:158来源:国知局
一种基于IROS的CAN大消息通信方法、设备、存储介质与流程
一种基于iros的can大消息通信方法、设备、存储介质
技术领域
1.本技术涉及数据传输领域,尤其涉及一种基于iros的can大消息通信方法、设备、存储介质。


背景技术:

2.随着科技的发展,机器人的出现是社会和经济发展的必然,机器人操作系统(robot operating system,ros)是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。
3.智能机器人操作系统(intelligent robot operating system,iros),具备ros类似的功能,替代了开源ros的内核,提供了兼容ros的接口,解决了ros可靠性、性能、安全等相关的问题,并增加了新的功能,支持云化机器人开发、支持云边端通信、支持多机器人协作等。
4.控制器局域网络(controller area network,can),是一种用于实时应用的串行通讯协议总线,它可以用双绞线来传输信号,作为一种现场总线技术,由于其可靠性高、稳定性好、抗干扰能力强、通讯速率高和维护成本低等特点,被普遍应用于工业控制领域。
5.目前,在ros中进行can通信,要求开发人员必须熟知can协议,并且ros支持传输的有效数据最多是8个字节,这不仅对开发人员的要求高而且数据传输效率低。基于此,需要能够降低开发人员的作业难度,提高数据传输效率的方案,以更好地实现机器人内部的数据传输。


技术实现要素:

6.本技术提供了一种基于iros的can大消息通信方法、设备、存储介质,解决了开发人员的工作难度大,机器人系统内部数据传输效率低的技术问题。
7.一种基于iros的can大消息通信方法,应用于计算设备中,所述计算设备基于智能机器人操作系统iros运行,包括:
8.在所述计算设备中建立can发送节点、第一can发送接口,并配置第一can模块;其中,所述第一can发送接口用于封装can通信协议;
9.通过在所述计算设备中安装的应用程序将第一消息发送到话题中,然后由所述can发送节点从所述话题实时获取所述第一消息;
10.将所述第一消息通过所述can发送节点调用所述第一can发送接口,发送至所述第一can模块;
11.通过所述第一can模块与控制设备中的第二can模块建立的基于can协议的通信连接,向所述第二can模块发送所述第一消息。
12.在本技术的一种实施例中,当所述计算设备接收来自所述控制设备的第二消息时,所述方法还包括:所述计算设备还包括can接收节点、第一can接收接口;通过所述第一
can模块与所述第二can模块建立的基于can协议的通信连接,接收来自所述控制设备的第二消息;通过所述can接收节点调用所述第一can接收接口,将所述第二消息从所述第一can模块接收至对应的话题中存储;通过应用程序从所述对应的话题中获取所述第二消息。
13.在本技术的一种实施例中,所述方法还包括:根据iros支持的话题实时订阅功能,建立多个话题类型,生成每个话题类型对应的话题名称;通过can发送节点进行配置,将每个所述话题名称与对应的can id绑定,以使所述第一消息能够实时发送。
14.在本技术的一种实施例中,所述方法还包括:通过can接收节点进行配置,将每个所述话题名称与对应的can id绑定,以实时接收来自所述控制单元的第二消息;将所述第二消息存储到对应的话题中。
15.一种基于can的大消息通信方法,其特征在于,应用于控制设备中,包括:
16.所述控制设备包括第二can接收接口、第二can模块;
17.通过第二can模块接收来自计算设备的第一消息;
18.由所述控制设备安装的嵌入式应用调用所述第二can接收接口从所述第二can模块获取接收到的所述第一消息。
19.在本技术的一种实施例中,所述控制设备还包括第二can发送接口;所述方法还包括:所述嵌入式应用通过调用所述第二can发送接口将第二消息发送到所述第二can模块;通过所述第二can模块与计算设备中的第一can模块建立的基于can协议的通信连接,将所述第二消息发送至所述第一can模块。
20.在本技术的一种实施例中,所述方法还包括:当计算设备的第一can发送接口或控制设备的第二can发送接口发送数据时,将待发送的大消息拆分成多个can协议能识别的小消息;其中,首个小消息表示消息数目和总消息大小;将拆分后的小消息根据设定的可配置的can id发送到目的地。
21.在本技术的一种实施例中,所述方法还包括:当所述第一can接收接口接收到小消息时,通过对应的can id通道向所述第二can发送接口发送消息回执,以确认成功接收所述小消息;当所述第二can接收接口接收到小消息时,通过对应的can id通道向can id向所述第一can发送接口发送消息回执,以确认成功接收所述小消息;根据所述首个小消息包括的消息数目和总消息大小,将所述小消息组合还原成大消息。
22.一种基于iros的can大消息通信设备,包括:
23.至少一个处理器;以及,
24.与所述至少一个处理器通信连接的存储器;其中,
25.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
26.在计算设备中建立can发送节点、第一can发送接口,并配置第一can模块;其中,所述第一can发送接口用于封装can通信协议;
27.通过在所述计算设备中安装的应用程序将第一消息发送到话题中,然后由所述can发送节点从所述话题实时获取所述第一消息;
28.将所述第一消息通过所述can发送节点调用所述第一can发送接口,发送至所述第一can模块;
29.通过所述第一can模块与控制设备中的第二can模块建立的基于can协议的通信连
接,向所述第二can模块发送所述第一消息。
30.一种非易失性存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
31.在计算设备中建立can发送节点、第一can发送接口,并配置第一can模块;其中,所述第一can发送接口用于封装can通信协议;
32.通过在所述计算设备中安装的应用程序将第一消息发送到话题中,然后由所述can发送节点从所述话题实时获取所述第一消息;
33.将所述第一消息通过所述can发送节点调用所述第一can发送接口,发送至所述第一can模块;
34.通过所述第一can模块与控制设备中的第二can模块建立的基于can协议的通信连接,向所述第二can模块发送所述第一消息。
35.本技术提供了一种基于iros的can大消息通信方法,至少包括以下有益效果:通过使用智能机器人操作系统iros,支持can通信kb级别以上数据包的通信,相比机器人操作系统ros,能更快的进行数据传输,极大地提高了数据的传输效率,且能保持can通信的可靠性和性能;通过建立在机器人的计算设备中建立多个话题,保证了大消息的实时发送;通过在计算设备和控制设备中建立can发送接口和can接收接口,将can协议进行封装,使开发人员在操作时直接调用接口即可使用,无需掌握底层can协议,降低了工作难度。
附图说明
36.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
37.图1为本技术实施例提供的一种基于iros的can大消息通信方法的步骤示意图;
38.图2为本技术实施例提供的从计算设备向控制设备发送消息的流程示意图;
39.图3为本技术实施例提供的计算设备和控制设备同时发送和接收大消息的流程示意图;
40.图4为本技术实施例提供的一种基于iros的can大消息通信设备的组成结构示意图。
具体实施方式
41.为了使本技术的目的、技术方案和优点更加清楚,下面将结合本技术具体实施例对本技术进行清楚、完整的描述。显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
42.在现有技术中,机器人操作系统(robot operating system,ros)是一个适用于机器人的开源的元操作系统。它提供了操作系统应有的服务,包括硬件抽象,底层设备控制,常用函数的实现,进程间消息传递,以及包管理。它也提供用于获取、编译、编写、和跨计算机运行代码所需的工具和库函数。ros的主要目标是为机器人研究和开发提供代码复用的支持。ros是一个分布式的进程(也就是“节点”)框架,这些进程被封装在易于被分享和发布的程序包和功能包中。
43.智能机器人操作系统(intelligent robot operating system,iros),具备ros类似的功能,替代了开源ros的内核,提供了兼容ros的接口,解决了ros可靠性、性能、安全等相关的问题,并增加了新的功能,支持云化机器人开发、支持云边端通信、支持多机器人协作等。
44.控制器局域网络(controller area network,can),是一种用于实时应用的串行通讯协议总线,它可以用双绞线来传输信号,作为一种现场总线技术,由于其可靠性高、稳定性好、抗干扰能力强、通讯速率高和维护成本低等特点,被普遍应用于工业控制领域。鉴于其良好的性能及独特的设计,机器人、汽车领域也广泛地使用can总线来实现内部控制器、执行器和各检测设备间的数据通信。
45.目前,在ros中进行can通信,要求开发人员必须熟知can协议,并且ros支持can传输的有效数据最多是8个字节,这样不仅使开发人员的工作难度高,而且数据传输效率低。基于此,需要能够降低开发人员的作业难度,提高数据传输效率的方案,以更好地实现机器人内部的数据传输。
46.通过使用智能机器人操作系统iros,支持can通信kb级别以上数据包的通信,相比机器人操作系统ros,能更快的进行数据传输,极大地提高了数据的传输效率,且能保持can通信的可靠性和性能;通过建立在机器人的计算设备中建立多个话题,保证了大消息的实时发送;通过在计算设备和控制设备中建立can发送接口和can接收接口,将can协议进行封装,使开发人员在操作时直接调用接口即可使用,无需掌握底层can协议,降低了工作难度。下面进行具体说明。
47.智能机器人的组成中包括计算设备和控制设备,计算设备安装智能机器人操作系统(intelligent robot operating system,iros),配置第一can模块,基于iros运行的系统能够支持can通信kb级别以上的数据包通信,能够保持can通信的可靠性和性能。控制设备运行嵌入式应用,配置有第二can模块,计算设备和控制设备通过两个can模块进行通信。
48.为了能够流畅的发送数据,基于iros的计算设备建立话题(存储单元)、can发送节点、can接收节点、第一can发送接口、第一can接收接口,控制设备运行第二can发送接口、第二can接收接口。
49.图1为本技术实施例提供的一种基于iros的can大消息通信方法的步骤示意图,可以包括以下步骤:
50.s101:在计算设备中建立can发送节点、第一can发送接口,并配置第一can模块;其中,第一can发送接口用于封装can通信协议。
51.s102:通过在计算设备中安装的应用程序将第一消息发送到话题中,然后由can发送节点从话题实时获取第一消息。
52.s103:将第一消息通过can发送节点调用第一can发送接口,发送至第一can模块。
53.s104:通过第一can模块与控制设备中的第二can模块建立的基于can协议的通信连接,向第二can模块发送第一消息。
54.具体地,如图2为机器人中从计算设备向控制设备发送消息的流程示意图。由机器人应用程序将第一消息(由计算设备发送到控制设备)发送到话题中,can发送节点从话题订阅并实时获取第一消息,调用第一can发送接口将第一消息发送到第一can模块,通过第一can模块与控制设备进行通信。计算设备的第一can模块与控制设备的第二can模块通过
双绞线相连,二者通过can协议进行通信。
55.在本技术的一种实施例中,计算设备还包括can接收节点、第一can接收接口;当计算设备接收来自控制设备的第二消息(由控制设备发送到计算设备)时,通过第一can模块与第二can模块建立的基于can协议的通信连接,接收来自控制设备的第二消息;通过can接收节点调用第一can接收接口,将第二消息从第一can模块接收至对应的话题中存储;通过应用程序从对应的话题中获取第二消息。
56.具体地,机器人计算设备接收来自控制设备发送的第二消息时,首先由第一can模块接收来自控制设备的can嵌入式应用通过第二can发送接口发送到第二can模块的第二消息;控制设备的第二can模块与计算设备的第一can模块通过双绞线相连,二者通过can协议进行通信;第一can接收节点调用第一can接收接口从第一can模块获取消息并将消息发布到话题中,机器人应用程序从话题订阅消息,进而实时接收到can嵌入式应用程序发送的第二消息。
57.在本技术的一种实施例中,根据iros支持的话题实时订阅功能,建立多个话题类型,生成每个话题类型对应的话题名称;通过can发送节点进行配置,将每个话题名称与一个can id对应绑定,以使第一消息能够实时发送。
58.具体地,根据iros支持的话题实时订阅功能,可以同时支持多个话题,针对不同类型的消息建立多个话题类型,例如机器人中不同的应用程序可以建立不同的话题类型,每个话题类型对应一个话题名称,建立与该话题名称对应的can id,通过can发送节点将话题名称和其对应的can id绑定,通过第一can模块可以将消息发送到控制设备。
59.在本技术的一种实施例中,通过can接收节点进行配置,将每个话题类型与一个can id对应绑定,以实时接收来自控制单元的第二消息;将第二消息存储到对应的话题中。
60.具体地,通过can接收节点的配置,将话题名称及对应的can id绑定,可以同时支持多个话题消息的接收,能够实时接收来自控制设备中的消息并实时存储到对应的话题中,机器人应用程序利用iros话题的实时订阅功能可实时获取消息并且不用关心底层的can协议。
61.本技术实施例提供的另一种基于can的大消息通信方法,应用于控制设备中,包括:
62.控制设备包括第二can接收接口、第二can模块;
63.通过第二can模块接收来自计算设备的第一消息;也就是接收来自第一can模块的第一消息,然后由控制设备安装的嵌入式应用调用第二can接收接口从第二can模块获取接收到的第一消息。
64.具体地,控制设备的can嵌入式应用通过第二can接收接口接收第二can模块的信息,进而实时收到应用程序发送的第一消息。
65.在本技术的一种实施例中,控制设备还包括第二can发送接口;嵌入式应用通过调用第二can发送接口将第二消息发送到第二can模块;通过第二can模块与计算设备中的第一can模块建立的基于can协议的通信连接,将第二消息发送至第一can模块。
66.具体地,控制设备的嵌入式应用通过调用第二can发送接口将第二消息发送到第二can模块。然后第二can模块通过双绞线发送到第一can模块。计算设备中的can发送节点利用iros话题的实时订阅功能,保证了能够实时接收机器人应用程序发送的消息并通过第
一can模块实时发送出去,由于can协议封装在了第一can发送接口中,所以保证发送的可靠性且开发人员无需掌握底层的can协议即可操作,降低了开发人员的工作难度。
67.如图3所示,机器人应用程序通过一个话题实时发送第一消息到话题1中,也可通过另一个话题2实时接收第二消息,同样控制设备上的嵌入式应用也能同时发送第二消息和接收第一消息,计算设备和控制设备通过iros实现了can的大消息的可靠发送。
68.在本技术的一种实施例中,当计算设备的第一can发送接口发送第一消息或控制设备的第二can发送接口发送第二消息时,此时待发送的第一消息和第二消息都属于大消息,为了提高消息传输的高效性,将待发送的大消息拆分成多个can协议能识别的小消息;其中,首个小消息表示消息数目和总消息大小;将拆分后的小消息根据设定的可配置的can id发送到目的地。
69.具体地,第一can发送接口与第二can发送接口用于将待发送的大消息拆分成多个can协议能识别的小消息,首个小消息为拆分后的消息数目及总消息大小,假设通过设定的can id1通道进行发送;第一can接收接口与第二can接收接口通过标准can协议接收小消息,并根据首个小消息中包含的消息数目及总消息大小信息,将接收到小消息组合还原为一个大消息。
70.在本技术的一种实施例中,当第一can接收接口接收到小消息时,通过对应的can id通道向第二can发送接口发送消息回执,以确认成功接收小消息;当第二can接收接口接收到小消息时,通过对应的can id通道向第一can发送接口发送消息回执,以确认成功接收小消息;根据首个小消息包括的消息数目和总消息大小,将小消息组合还原成大消息。
71.具体地,第一can接收接口或第二can接收接口每收到一个小消息同时通过另一个can id2通道发送该小消息的回执消息,第一can发送接口与第二can发送接口通过can id2通道接收到回执消息就确认该次发送成功,否则会重发,该方案解决了因can缓冲区小或因接收端故障消息丢失的问题,提高了消息发送的可靠性,同时也会使数据传输的性能较好。第一can发送接口与第二can接收接口是成对配套的,第二can发送接口与第一can接收接口是成对配套的。
72.以上为本技术实施例提供的一种基于iros的can大消息通信方法,基于同样的发明思路,本技术实施例还提供了相应的一种基于iros的can大消息通信设备,如图4所示。
73.本实施例提供了一种基于iros的can大消息通信设备,包括:
74.至少一个处理器;以及,
75.与至少一个处理器通信连接的存储器;其中,
76.存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够:
77.在计算设备中建立can发送节点、第一can发送接口,并配置第一can模块;其中,第一can发送接口用于封装can通信协议;
78.通过在计算设备中安装的应用程序将第一消息发送到话题中,然后由can发送节点从话题实时获取第一消息;
79.将第一消息通过can发送节点调用第一can发送接口,发送至第一can模块;
80.通过第一can模块与控制设备中的第二can模块建立的基于can协议的通信连接,向第二can模块发送第一消息。
81.基于同样的思路,本技术的一些实施例还提供了上述方法对应的介质。
82.本技术的一些实施例提供的一种基于iros的can大消息通信存储介质,存储有计算机可执行指令,计算机可执行指令设置为:
83.在计算设备中建立can发送节点、第一can发送接口,并配置第一can模块;其中,第一can发送接口用于封装can通信协议;
84.通过在计算设备中安装的应用程序将第一消息发送到话题中,然后由can发送节点从话题实时获取第一消息;
85.将第一消息通过can发送节点调用第一can发送接口,发送至第一can模块;
86.通过第一can模块与控制设备中的第二can模块建立的基于can协议的通信连接,向第二can模块发送第一消息。
87.本技术中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法和介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
88.本技术实施例提供的方法和介质与方法是一一对应的,因此,方法和介质也具有与其对应的方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述方法和介质的有益技术效果。
89.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程方法商品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程方法商品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程方法商品或者方法中还存在另外的相同要素。
90.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1