一种CAN报文与ROS消息的互转设备及其互转方法转让专利

申请号 : CN202110450963.1

文献号 : CN112866304B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱为文

申请人 : 知行汽车科技(苏州)有限公司

摘要 :

本发明涉及汽车控制技术领域,具体涉及一种CAN报文与ROS消息相互转换的设备及其互转方法,包括CAN总线模块、CAN模块、核心模块、以太网模块以及上位机模块;所述CAN总线模块通过所述CAN模块电性连接于所述核心模块,所述核心模块通过所述以太网模块电性连接于所述上位机模块;其中,所述核心模块包括CAN与ROS互转程序模块和管理程序模块,所述CAN与ROS互转程序模块负责CAN报文与ROS消息的相互转换,所述管理程序模块负责CAN与ROS互转程序的更新,且与上位机模块的相互交互。本发明能将ROS的强大生态运用与CAN通讯上,不仅对CAN通讯的调试监控能力,更重要的是本发明的成本低,可以极大降低汽车相关企业的成本。

权利要求 :

1.一种CAN报文与ROS消息的互转方法,所述互转方法基于CAN报文与ROS消息的互转设备,其特征在于,所述CAN报文与ROS消息的互转设备包括CAN总线模块、CAN模块、核心模块、以太网模块以及上位机模块;所述CAN总线模块通过所述CAN模块电性连接于所述核心模块,所述核心模块通过所述以太网模块电性连接于所述上位机模块;其中,所述核心模块包括CAN与ROS互转程序模块和管理程序模块,所述CAN与ROS互转程序模块负责CAN报文与ROS消息的相互转换,所述管理程序模块负责CAN与ROS互转程序的更新,且与上位机模块相互交互;互转方法,包括如下步骤:S1.用户提供dbc文件;

S2.上位机模块识别dbc文件,生成相应的msg文件, 且生成相应的互转程序;

S3.调用ROS工具链编译msg文件;

S4.通过管理程序模块将CAN与ROS互转程序更新到互转程序模块中,将CAN报文和ROS消息相互转换;

使用PlotJunggler对CAN报文中的信号绘制, 使用Rosbag记录CAN上面的通讯, 使用c++或者python对CAN报文转换所得的ROS消息进一步处理;

CAN报文和ROS消息相互转换的流程包括:a1.收到CAN报文;

a2.根据对应的报文ID建立对应的ROS消息;

a3.按照dbc文件中各信号定义填充ROS消息中的各成员;

a4.发送ROS消息;

CAN报文和ROS消息相互转换的流程包括:b1.收到ROS消息;

b2.进入对应ROS消息的回调函数;

b3.按照dbc文件中各信号定义填充CAN报文中的各成员;

b4.以对应的报文ID发送CAN报文。

说明书 :

一种CAN报文与ROS消息的互转设备及其互转方法

技术领域

[0001] 本发明涉及汽车控制技术领域,具体涉及一种CAN报文与ROS消息相互转换的设备及其互转方法。

背景技术

[0002] CAN(Controller Area Network),是一种用于实时应用的串形通讯协议总线,它可以用双绞线来传输信号,是世界上应用最广泛的现场总线之一。CAN作为汽车控制领域的
事实标准,尽管存在一些问题(例如速度慢,报文短),但仍然是所有车辆的核心网络。而ROS
(Robot Operating System)作为机器人领域的事实标准,相对CAN优点很多(速度快,灵活,
工具丰富),但也有其限制,目前在量产车辆上没有得到运用。
[0003] 在车辆开发过程中我们需要从CAN网络上获取数据,记录数据和可视化数据,能够做到这部分工作我们所需要的设备往往价格高昂(例如Vector相关工具),而且与其他工具
链整合麻烦(例如需要设置一个虚拟节点)。实际上如果仅将CAN数据转换记录,其硬件价格
很低,但软件价格很高(如CANoe)。而ROS作为开源软件其工具链成熟,容易整合,并且软件
无需额外费用。如果能使用开源的ROS可以极大的降低企业成本,且工具链成熟,还不断有
新的开源工具出现。

发明内容

[0004] 本申请中为了解决上述技术问题,本发明提供了种CAN报文与ROS消息相互转换的设备及其互转方法。
[0005] 本发明提供了如下的技术方案:
[0006] 一种CAN报文与ROS消息的互转设备,包括CAN总线模块、CAN模块、核心模块、以太网模块以及上位机模块;所述CAN总线模块通过所述CAN模块电性连接于所述核心模块,所
述核心模块通过所述以太网模块电性连接于所述上位机模块;其中,所述核心模块包括CAN
与ROS互转程序模块和管理程序模块,所述CAN与ROS互转程序模块负责CAN报文与ROS消息
的相互转换,所述管理程序模块负责CAN与ROS互转程序的更新,且与上位机模块的相互交
互。
[0007] 一种CAN报文与ROS消息的互转设备的互转设备的互转方法,包括如下步骤:
[0008] S1.用户提供dbc文件;
[0009] S2.上位机模块识别dbc文件,生成相应的msg文件,且生成相应的互转程序;
[0010] S3.通过管理程序模块将CAN与ROS互转程序更新到互转程序模块中,将CAN报文和ROS消息相互转换;
[0011] S4.调用ROS工具链编译msg文件;
[0012] 优选的,使用PlotJunggler对CAN报文中的信号绘制,使用Rosbag记录CAN上面的通讯,使用c++或者python对CAN报文转换所得的ROS消息进一步处理。
[0013] 优选的,CAN报文和ROS消息相互转换的流程为:
[0014] a1.收到CAN报文;
[0015] a2.根据对应的报文ID建立可对应的ROS消息;
[0016] a3.按照dbc文件中各信号定义填充ROS消息中的各成员;
[0017] a4.发送ROS消息。
[0018] 优选的,CAN报文和ROS消息相互转换的流程为:
[0019] b1.收到ROS消息;
[0020] b2.进入对应ROS消息的回调函数;
[0021] b3.按照dbc文件中各信号定义填充CAN报文中的各成员;
[0022] b4.以对应的报文ID发送CAN报文。
[0023] 本发明涉及一种CAN报文与ROS消息相互转换的设备及其互转方法,其有益效果在于:本发明能将ROS的强大生态运用与CAN通讯上,不仅对CAN通讯的调试监控能力,更重要
的是本发明的成本低,可以极大降低汽车相关企业的成本。

附图说明

[0024] 附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0025] 图1是CAN报文与ROS消息的互转设备的结构示意图;
[0026] 图2是CAN报文和ROS消息相互转换的流程图;
[0027] 图3是本发明装置中CAN报文与ROS消息互转方法准备阶段的序列图;
[0028] 图4是本发明装置中CAN报文与ROS消息互转方法的序列图;

具体实施方式

[0029] 以下结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整地描述,以充分理解本发明的目的、方案和效果。需要说明的是,在不冲突的情况下本
申请中的实施例及实施例中的特征可以相互组合。需要说明的是,如无特殊说明,当某一特
征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间
接地固定、连接在另一个特征上。此外,本发明中所使用的上、下、左、右等描述仅仅是相对
于附图中本发明各组成部分的相互位置关系来说的。
[0030] 如图1所示,一种CAN报文与ROS消息的互转设备,包括CAN总线模块、CAN模块、核心模块、以太网模块以及上位机模块;所述CAN总线模块通过所述CAN模块电性连接于所述核
心模块,所述核心模块通过所述以太网模块电性连接于所述上位机模块;其中,所述核心模
块包括CAN与ROS互转程序模块和管理程序模块,所述CAN与ROS互转程序模块负责CAN报文
与ROS消息的相互转换,所述管理程序模块负责CAN与ROS互转程序的更新,且与上位机模块
的相互交互。
[0031] 一种CAN报文与ROS消息的互转设备的互转设备的互转方法,包括如下步骤:
[0032] S1.用户提供dbc文件;
[0033] S2.上位机模块识别dbc文件,生成相应的msg文件,且生成相应的互转程序;
[0034] S3.通过管理程序模块将CAN与ROS互转程序更新到互转程序模块中,将CAN报文和ROS消息相互转换;
[0035] S4.调用ROS工具链编译msg文件;
[0036] 优选的,使用PlotJunggler对CAN报文中的信号绘制,使用Rosbag记录CAN上面的通讯,使用c++或者python对CAN报文转换所得的ROS消息进一步处理。
[0037] 互转模块中相关的转换流程如图2所示,在互转模块中没有进行物理值到传输值的转换,相关转换在上位机中完成,这样可以尽量保证数据在转换过程中不产生损失。
[0038] CAN报文转化为ROS消息相的流程图:
[0039] a1.收到CAN报文;
[0040] a2.根据报文ID建立可对应的ROS消息;
[0041] a3.按照dbc文件中各信号定义填充ROS消息中的各成员;
[0042] a4.发送ROS消息。
[0043] ROS消息转换为CAN报文的流程图为:
[0044] b1.收到ROS消息;
[0045] b2.进入对应ROS消息的回调函数;
[0046] b3.按照dbc文件中各信号定义填充CAN报文中的各成员;
[0047] b4.以对应ID发送CAN报文。
[0048] 如图3所示,用户提供dbc文件,PC端软件根据dbc文件自动生成msg文件,同时,生成CAN与ROS互转程序通过管理程序模块更新到互转程序模块中,从而实现CAN报文和ROS消
息的互转,通过调用ROS工具链可以编译msg文件。准备工作完成后就可以正常使用,简单来
说本发明主要工作就是在CAN网络和ROS网络之间架设一个桥梁,让它们之间可以相互通
讯,这样,就可以使用ROS的工具链来进行CAN网络分析调试。
[0049] 如图4所示,从图中可以看出,通过收到的ROS报文解析对应的CAN报文,也可以发送ROS报文到互转设备让其转发的CAN网络上。
[0050] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施
例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精
神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。