CN109639548A - 一种桥接ROS系统和CANopen网络实时通信方法 - Google Patents
一种桥接ROS系统和CANopen网络实时通信方法 Download PDFInfo
- Publication number
- CN109639548A CN109639548A CN201910135207.2A CN201910135207A CN109639548A CN 109639548 A CN109639548 A CN 109639548A CN 201910135207 A CN201910135207 A CN 201910135207A CN 109639548 A CN109639548 A CN 109639548A
- Authority
- CN
- China
- Prior art keywords
- canopen
- ros
- module
- real
- bridge joint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
- H04L12/40013—Details regarding a bus controller
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40215—Controller Area Network CAN
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种桥接ROS系统和CANopen网络实时通信方法,ROS系统包括从最底层到最高层叠层依次设计的CANopen驱动模块、CANopen核心模块、CANopen主站模块和CANopen桥接模块;方法包括步骤:通过CANopen驱动模块驱动PC平台的CAN硬件设备,实现CAN总线的打开和关闭以及CAN报文的收发操作;在CANopen核心模块中设定CANopen协议,基于CANopen协议实现CANopen驱动模块与上层之间的数据交互;通过CANopen主站模块检测CANopen网络中的所有节点,并实现CANopen网络中所有设备的自动识别罗列、识别和初始化,并为具有已知配置文件的所有设备创建ROS topic和sercives;通过CANopen桥接模块提供OD服务,并将已知配置文件的功能映射到标准ROS消息,实现ROS网络中ROS节点的ROS消息访问;本发明满足不同通信任务的实时需求,提升了CANopen网络对机器人的适应性。
Description
技术领域
本发明属于网络通信技术领域,尤其涉及ROS系统与CANopen网络之间的数据通信,具体涉及一种桥接ROS系统和CANopen网络实时通信方法。
背景技术
CAN总线在20世纪80年代中期被开发作为汽车通信系统,并于1993年标准化为ISO标准(ISO 11898)。CAN使用差分信号传输来实现汽车环境中所需的高抗噪性。总线访问由标识符和基于所有收发器的位级同步的按位仲裁来管理。由于这种仲裁,总线访问的优先级是明确定义的和确定的,因此实现了硬实时通信。CAN总线是一种共享介质,所有传输都是广播。设备根据帧标识符过滤数据。每个数据帧最多可携带8个数据字节。总体而言,CAN标准涵盖了OSI第1层和第2层。
CANopen是用于自动化的嵌入式系统的通信协议和设备配置文件规范。就OSI模型而言,CANopen定义了基于CAN总线的现场总线协议栈的更高层(OSI层3-7)。CANopen开发始于20世纪90年代初,并于2002年成为欧洲标准(EN 50325-4)。基本CANopen设备和通信配置文件由总部位于德国纽伦堡的CiA组织——CAN in Automation发布的CiA 301规范中给出。并且CiA在CANopen基础协议CiA301之上,对各个行业不断推出设备子协议,使CANopen协议在各个行业得到更快的发展与推广。比如经常应用于机器人运动控制的CiA402标准。虽然最大数据速率限制为1Mbit/s,但CANopen仍广泛用于实时控制机器和自动化系统,比如I/O模块和电机驱动器。由于它的低成本和与定制嵌入式系统集成简单,所以在机器人和自动化研究中的使用更是尤其普遍。
机器人操作系统(ROS)是一个让机器人能够运作起来的中间件(即用于机器人软件开发的软件框架的集合)。迄今为止,ROS取得了巨大的成功,世界上大部分机器人工程师、研究学者和爱好者都在使用和维护,并涉及机器人相关的众多领域。
然而,CANopen仍然存在对诸如机器人操作系统(ROS)所代表的更高控制层的集成挑战,比如ROS对CAN总线的支持,对CANopen设备交互的高效性,友好性和实时性。因此我们需要有一种方法来实现可以通过ROS访问CAN总线中基于CANopen协议的设备。
发明内容
针对上述现有技术中无法实现ROS与CAN总线之间的实时性交互问题,本发明于提出一种桥接ROS系统和CANopen网络实时通信方法,该方法可以使ROS节点可以作为CANopen主站直接访问和控制CANopen从站设备,具体技术方案如下:
一种桥接ROS系统和CANopen网络实时通信方法,所述ROS系统包括CANopen驱动模块、CANopen核心模块、CANopen主站模块和CANopen桥接模块,其中,所述CANopen驱动模块、CANopen核心模块、CANopen主站模块和CANopen桥接模块依次从最底层到最高层叠层设计;所述方法包括步骤:
S1、通过所述CANopen驱动模块驱动PC平台的CAN硬件设备,实现CAN总线的打开和关闭以及CAN报文的收发操作;
S2、在所述CANopen核心模块中设定CANopen协议,基于所述CANopen协议实现所述CANopen驱动模块与上层之间的数据交互;
S3、通过所述CANopen主站模块检测所述CANopen网络中的所有节点,并实现CANopen网络中所有设备的自动识别罗列、识别和初始化,并为具有已知配置文件的所有设备创建ROS topic和sercives;
S4、通过所述CANopen桥接模块提供OD服务,并将所述已知配置文件的功能映射到标准ROS消息,实现所述ROS网络中ROS节点的ROS消息访问。
进一步的,所述CANopen协议包括NMT消息处理协议、SDO消息处理协议和PDO消息处理协议。
进一步的,所述CANopen主站模块与所述CANopen网络之间的数据交互方式包括直连和桥接两种。
进一步的,所述步骤S3中还包括:
S31、通过所述NMT消息处理协议按照指定大小周期查询CAN总线上的设备数量,若检测到新设备,则所述CANopen主站模块触发一个事件驱动,用户将与所述事件驱动对应的新设备添加到应用程序;
S32、给每一所述新设备加载相对应的EDS文件并导入所述EDS文件中的所有条目。
进一步的,所述OD服务包括索引和子索引访问,以及指定所述EDS读取器中对应名称访问。
进一步的,所述OD服务采用所述SDO消息处理协议或PDO消息处理协议实现对CAN总线上设备的完全访问。
本发明的桥接ROS系统和CANopen网络实时通信方法,由从最底层到最高层叠层依次设计的CANopen驱动模块、CANopen核心模块、CANopen主站模块和CANopen桥接模块构成CANopen网络,由CANopen主站模块实现主站功能并支持CAN总线上设备的热插拔和从设备EDS文件的自动加载,实现上层可通过数字索引或文字名称的方式来访问,并在CANopen网络中设置直连和桥接两种数据交互方式,以提升整体的数据传输效率;与现有技术相比,本发明方法中用户可知ROS系统自定义ROS节点作为CANopen网站主站,实现灵活的访问和控制从站设备且易于实现,并满足不同通信任务的实时需求。
附图说明
图1是实现本发明桥接ROS系统和CANopen网络实时通信方法的软硬件平台模块示意图示意;
图2是本发明实施例中所述CANopen主站模块的实现流程图示意;
图3是本发明实施例中所述CANopen桥接模块的实现流程图示意。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例一
在本发明实施例中,提供了一种桥接ROS系统和CANopen网络实时通信方法,ROS系统包括CANopen驱动模块、CANopen核心模块、CANopen主站模块和CANopen桥接模块,CANopen驱动模块、CANopen核心模块、CANopen主站模块和CANopen桥接模块依次从最底层到最高层叠层设计;方法包括步骤:
S1、通过CANopen驱动模块驱动PC平台的CAN硬件设备,实现CAN总线的打开和关闭以及CAN报文的收发操作,其中,CAN硬件设备的实现主要程序源代码为:
驱动模块提供的函数:
接受消息:canReceive_driver
发送消息:canSend_driver
打开CAN总线:canOpen_driver
关闭CAN总线:canClose_driver
改变波特率:canChangeBaudRate_driver
CANOPEN消息数据结构:
S2、在CANopen核心模块中设定CANopen协议,基于CANopen协议实现CANopen驱动模块与上层之间的数据交互;其中,CANopen协议包括NMT消息处理协议、SDO消息处理协议和PDO消息处理协议,其中,NMT消息处理协议、SDO消息处理协议和PDO消息处理协议的主要程序实现为:
NMT消息处理:
SDO消息处理:
S3、通过CANopen主站模块检测CANopen网络中的所有节点,并实现CANopen网络中所有设备的自动识别罗列、识别和初始化,实现CANopen主站功能,同时,本发明中CANopen主站模块支持CAN总线上设备热插拔;并为具有已知配置文件的所有设备创建ROS topic和sercives;其中,CANopen主站模块与CANopen网络之间的数据交互方式包括直连和桥接两种;具体的,直连将充当数据源的CANopen节点与其消耗数据的节点连接在一起,在此模式下,所有过程数据都在CAN总线内传输,可以给出硬实时保证;桥接将CANopen数据发布到CANopen桥接模块(ROS域)或将数据从CANopen桥接模块(ROS域)发送到CANopen节点;当数据在CAN实时域和非实时ROS域传输时,适用于软实时任务;当数据在CAN实时域和实时操作系统下的实时ROS域之间传输时,适用于硬实时任务。
在本发明实施例的具体通信过程中,先通过NMT消息处理协议按照指定大小周期查询CAN总线上的设备数量,若检测到新设备,则CANopen主站模块触发一个事件驱动,具体的,所述事件驱动为对持续事务进行决策的一种策略,可根据实际情况进行设备和编辑对应的源代码,基于事件驱动,用户可将与事件驱动对应的新设备添加到应用程序,以此实现CAN总线上设备的热插拔操作;然后为每一新设备加载相对应的EDS文件并导入EDS文件中的所有条目,其中,本发明通过EDS读取器为新申报加载EDS文件;优选的,本发明方法可对CAN总线上设备实施热插拔操作,因此可实现对同一CAN总线上不常用的设备可实时阶段性断电处理。
S4、通过CANopen桥接模块提供OD服务,并将已知配置文件的功能映射到标准ROS消息,实现ROS网络中ROS节点的ROS消息访问;其中,OD服务包括索引和子索引访问,以及指定EDS读取器中对应名称访问,提升了OD服务的便捷性;且OD服务采用SDO消息处理协议或PDO消息处理协议实现对CAN总线上设备的完全访问;由CANopen桥接模块提供的OD服务即提供在ROS网络内的请求/回复交互方面的服务机制,以SDO消息处理协议的方式对连接设备的完全访问;和通用OD条目发布器/订阅器,即将各个字典条目映射到他们自己的话题发布器或订阅器,将PDO映射到OD条目,在持续读写设备OD条目时,条目的值可以以固定频率在话题中发布。当用户使用通用OD服务和通用OD条目发布器/订阅器相结合时,有利于提升CAN总线的利用率。
实施例二
以本发明的控制系统硬件部分采用X86平台加USB-to-CAN转接卡连接CAN总线上的机械臂的一个Cia-402协议关节电机和其Cia-406编码器;软件环境为RT_PREEMPT补过内核的实时Linux操作系统,用来提供完全可抢占式的进程调度实现实时ROS域,对本发明的方法进行具体说明,具体过程如下:
首先,由CANopen驱动模块重用CAN驱动程序,例如PCAN和SocketCAN,由CanFestival项目通过其简单的C接口提供,解决与CAN硬件通信问题;在实际操作中,C接口仅包含核心层依赖的changeBaudrate,open,close,receive和send函数;CANopen驱动模块与提供了20多种不同的CAN驱动程序的CanFestival所兼容,解决和不同平台上的各种CAN硬件进行通信的问题。
然后,由CANopen核心模块以高度面向对象的方式实现设定CANopen协议:比如将Modern C++功能用于事件驱动的处理,可为任何COB注册自定义回调;事件驱动的核心将std::async与通用多态函数包装器std::function一起使用,从而可以在所有更高层中灵活选择C++callable。
最后,通过CANopen桥接模块的通用OD服务和通用OD条目发布器/订阅器为具有Cia 402配置文件的机械臂关节电机实现特定于设备的无需硬实时数据传输据需求的ROS服务和有硬实时数据传输需求的关节状态发布器/关节状态订阅器,具体可参阅图3,其中,ROS服务为SDO通信下的如归位等初始化例程,轮廓速度设定等一些OD条目的配置,关节状态发布器/关节状态订阅器为PDO映射流数据通信,如发布当前关节角度、速度和加速度等,订阅控制字,关节位置值和轨迹路径点等,使用专用于此设备的ROS消息,例如sensors_msgs/JointState,以此实现自定义的ROS主站节点。
综上可知,本发明的桥接ROS系统和CANopen网络实时通信方法,由从最底层到最高层叠层依次设计的CANopen驱动模块、CANopen核心模块、CANopen主站模块和CANopen桥接模块构成CANopen网络,由CANopen主站模块实现主站功能并支持CAN总线上设备的热插拔和从设备EDS文件的自动加载,实现上层可通过数字索引或文字名称的方式来访问,并在CANopen网络中设置直连和桥接两种数据交互方式,以提升整体的数据传输效率;与现有技术相比,本发明方法中用户可知ROS系统自定义ROS节点作为CANopen网站主站,实现灵活的访问和控制从站设备且易于实现,并满足不同通信任务的实时需求;完整的实现设备在CANopen网络下和其他机器人的ROS包交互的能力。
以上仅为本发明的较佳实施例,但并不限制本发明的专利范围,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本发明说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本发明专利保护范围之内。
Claims (6)
1.一种桥接ROS系统和CANopen网络实时通信方法,其特征在于,所述ROS系统包括CANopen驱动模块、CANopen核心模块、CANopen主站模块和CANopen桥接模块,其中,所述CANopen驱动模块、CANopen核心模块、CANopen主站模块和CANopen桥接模块依次从最底层到最高层叠层设计;所述方法包括步骤:
S1、通过所述CANopen驱动模块驱动PC平台的CAN硬件设备,实现CAN总线的打开和关闭以及CAN报文的收发操作;
S2、在所述CANopen核心模块中设定CANopen协议,基于所述CANopen协议实现所述CANopen驱动模块与上层之间的数据交互;
S3、通过所述CANopen主站模块检测所述CANopen网络中的所有节点,并实现CANopen网络中所有设备的自动识别罗列、识别和初始化,并为具有已知配置文件的所有设备创建ROStopic和sercives;
S4、通过所述CANopen桥接模块提供OD服务,并将所述已知配置文件的功能映射到标准ROS消息,实现所述ROS网络中ROS节点的ROS消息访问。
2.如权利要求1所述的桥接ROS系统和CANopen网络实时通信方法,其特征在于,所述CANopen协议包括NMT消息处理协议、SDO消息处理协议和PDO消息处理协议。
3.如权利要求2所述的桥接ROS系统和CANopen网络实时通信方法,其特征在于,所述CANopen主站模块与所述CANopen网络之间的数据交互方式包括直连和桥接两种。
4.如权利要求2所述的桥接ROS系统和CANopen网络实时通信方法,其特征在于,所述步骤S3中还包括:
S31、通过所述NMT消息处理协议按照指定大小周期查询CAN总线上的设备数量,若检测到新设备,则所述CANopen主站模块触发一个事件驱动,用户将与所述事件驱动对应的新设备添加到应用程序;
S32、给每一所述新设备加载相对应的EDS文件并导入所述EDS文件中的所有条目。
5.如权利要求4所述的桥接ROS系统和CANopen网络实时通信方法,其特征在于,所述OD服务包括索引和子索引访问,以及指定所述EDS读取器中对应名称访问。
6.如权利要求5所述的桥接ROS系统和CANopen网络实时通信方法,其特征在于,所述OD服务采用所述SDO消息处理协议或PDO消息处理协议实现对CAN总线上设备的完全访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910135207.2A CN109639548A (zh) | 2019-02-22 | 2019-02-22 | 一种桥接ROS系统和CANopen网络实时通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910135207.2A CN109639548A (zh) | 2019-02-22 | 2019-02-22 | 一种桥接ROS系统和CANopen网络实时通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109639548A true CN109639548A (zh) | 2019-04-16 |
Family
ID=66065750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910135207.2A Pending CN109639548A (zh) | 2019-02-22 | 2019-02-22 | 一种桥接ROS系统和CANopen网络实时通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109639548A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110806855A (zh) * | 2019-10-30 | 2020-02-18 | 中山大学 | 一种can设备开发系统及其方法 |
CN112866304A (zh) * | 2021-04-26 | 2021-05-28 | 知行汽车科技(苏州)有限公司 | 一种can报文与ros消息的互转设备及其互转方法 |
CN114157997A (zh) * | 2021-11-26 | 2022-03-08 | 山东新一代信息产业技术研究院有限公司 | 一种iros话题桥接方法、设备及介质 |
CN115473863A (zh) * | 2022-07-25 | 2022-12-13 | 山东新一代信息产业技术研究院有限公司 | 一种ros与iros的消息桥接方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105278940A (zh) * | 2014-07-08 | 2016-01-27 | 北京航空航天大学 | 一种基于多核处理器架构的机器人混合系统应用框架 |
CN106774352A (zh) * | 2017-03-27 | 2017-05-31 | 东莞市松迪智能机器人科技有限公司 | 自动导引运输车的机器人控制系统及单驱双向自动导引运输车 |
US20180227392A1 (en) * | 2017-02-09 | 2018-08-09 | Joseph Sullivan | System for Arranging and Controlling Interconnected Intelligences |
-
2019
- 2019-02-22 CN CN201910135207.2A patent/CN109639548A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105278940A (zh) * | 2014-07-08 | 2016-01-27 | 北京航空航天大学 | 一种基于多核处理器架构的机器人混合系统应用框架 |
US20180227392A1 (en) * | 2017-02-09 | 2018-08-09 | Joseph Sullivan | System for Arranging and Controlling Interconnected Intelligences |
CN106774352A (zh) * | 2017-03-27 | 2017-05-31 | 东莞市松迪智能机器人科技有限公司 | 自动导引运输车的机器人控制系统及单驱双向自动导引运输车 |
Non-Patent Citations (1)
Title |
---|
ANDREAS BIHLMAIER ET.AL: "KaCanOpen:An Open Plug&Play CANopen Stack for ROS in Modern C++", 《INTERNATIONAL SYMPOSIUM ON ROBOTICS》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110806855A (zh) * | 2019-10-30 | 2020-02-18 | 中山大学 | 一种can设备开发系统及其方法 |
CN112866304A (zh) * | 2021-04-26 | 2021-05-28 | 知行汽车科技(苏州)有限公司 | 一种can报文与ros消息的互转设备及其互转方法 |
CN112866304B (zh) * | 2021-04-26 | 2021-08-17 | 知行汽车科技(苏州)有限公司 | 一种can报文与ros消息的互转设备及其互转方法 |
CN114157997A (zh) * | 2021-11-26 | 2022-03-08 | 山东新一代信息产业技术研究院有限公司 | 一种iros话题桥接方法、设备及介质 |
CN115473863A (zh) * | 2022-07-25 | 2022-12-13 | 山东新一代信息产业技术研究院有限公司 | 一种ros与iros的消息桥接方法及系统 |
CN115473863B (zh) * | 2022-07-25 | 2023-08-08 | 山东新一代信息产业技术研究院有限公司 | 一种ros与iros的消息桥接方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109639548A (zh) | 一种桥接ROS系统和CANopen网络实时通信方法 | |
US20070086476A1 (en) | Method for smart device network application infrastructure (SDNA) | |
US9705962B2 (en) | Asynchronous reporting system | |
CN201887792U (zh) | 多协议转换网关 | |
CN101938164B (zh) | 一种电力设备控制方法、装置及其相关系统 | |
CN111786862B (zh) | 控制系统及其控制方法、全地形车 | |
WO2006015245A2 (en) | Universal configurable device gateway | |
CN101227354B (zh) | 家庭网络中信息家电设备接入的方法 | |
CN103596117A (zh) | 发现机器对机器业务的方法、设备及系统 | |
CN110069433B (zh) | 一种兼容不同汽车can通信接口的媒介系统 | |
CN101119315B (zh) | 控制网络中数据传输的方法、系统和网关 | |
CN106375204A (zh) | 智能网关系统及其操作方法 | |
CN108494671A (zh) | 一种网关设备 | |
US20140082068A1 (en) | Mailbox data storage system | |
CN101808132A (zh) | 一种can总线系统中的应用层通讯方法 | |
CN102984258A (zh) | 物联网数据传输方法和适配器 | |
CN106506303A (zh) | 一种控制器实时以太网EtherCAT的主站系统 | |
CN102209396B (zh) | 终端设备在网络中附着的方法、网元设备及网络系统 | |
CN104993583A (zh) | 配电自动化设备的通信方法 | |
CN104901990B (zh) | 基于物联网的传感器柔性接入系统及其柔性接入方法 | |
CN101931642A (zh) | 一种多网络控制系统通讯管理方法 | |
CN110430110B (zh) | 一种现场总线网关及其协议转换方法 | |
CN106850660A (zh) | 一种基于SocketCAN的SAE J1939传输协议的设计方法 | |
CN109936500A (zh) | 一种数据交互方法、数据交互装置及电子设备 | |
CN115454387A (zh) | 车机的应用层和系统层适配的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190416 |