ROS的ros_canopen调试

2023-05-16

Ros_canopen是ros支持can通信的package

链接:

http://wiki.ros.org/ros_canopen?distro=indigo

Ros_canopen包结构如下

SocketCAN是一组开源的CAN驱动程序和网络堆栈,由Volkswagen Research提供给Linux内核。以前称为低级别CAN框架(LLCF)

1. can_msgs

就是一个数据类型

2. canopen_402

CiA402是基于CANOPEN的电机控制驱动代码和通信层的接口。这个程序包包含了CiA 402 DSP协议的实现。它只是通过对象进行通信(canopen_master,不需要直接的CAN通信)。

该包支持所有标准的驱动模式,以下是通过状态机控制的不同的控制模式

通过状态机的切换,可以调节不同的控制模式。

以上说的其实是通过can对于机械臂的控制的模式的选择,以上模式并不一定适用于所有的机械臂控制器或者马达。

 

我的理解是canopen_402就是一个模式管理的状态机包,用来配置can的工作模式。

 

3. canopen_chain_node

该package包含与socketcan_interface的接口,与canopen_master的接口。可以认为是一个独立的节点。该包的功能是管理一个具有单个或者多个节点的can bus总线。

配置可以分为不同的部分。首先设置总线,所有节点共享这些设置。然后必须配置它们的CANopen和ROS接口。所有参数都必须加载到节点的私有名称空间中。

CANopen Bus layer 总线设置包含can接口(socketcan_interface)以及共享总线的设置(canopen_master)

Node layer所有的节点都会在list在节点参数表中

 

我理解的是,此节点会对can做基础的配置工作。

 

4. canopen_master

该包是CANopen DS 301 协议的master实现,它提供相关的库与canopen设备进行连接,并且通过高优先级访问其他设备的数据对象。

该功能实现可以支持大部分的canopen的接口与服务。

SDO,client/server 接口读写

PDO,publisher/subscriber 接口读写

 

我理解的这部分就是直接对接can总线设备的模块。

 

5. canopen_motor_node

该包为canopen 402提供ros_controller接口。它基于canopen_chain_node并集成了它的所有接口。

该节点包含一个controller_manager实例,可用于派生与controller_interface兼容的控制器。根据电机设备不同,支持不同的接口。

每个节点的驱动的位置、速度、力会被记录在hardware_interface::JointStateHandle 数据类型内,实际的值由转换函数决定。

Joint limits是从URDF文件或者其他途径读取,然后通过joint_limits_interface控制完成

https://github.com/ros-controls/ros_control/wiki/joint_limits_interface.

为了让canopen_motor_node工作,每个节点都有一个联合参数,该参数默认为CANopen节点名,并在ros_control接口中用作联合名

6. socketcan_bridge

这个模块的包提供从socketcan到ros tospic的发布can 帧信息的功能。内部使用ros_canopen的socketcan_interface,可以支持处理基本帧与扩展帧两种形式。

功能的实现靠socketcan bridge node, socketcan to topic node 和topic to socketcan node三个节点实现。

socketcan bridge node 从SocketCAN 设备接收frames并将之publishes到topic上,同时监听can的信息并将之送给SocketCAN;发送与接收的信息格式在can_msgs文件夹。

socketcan_to_topic_node也是从SocketCAN 设备接收frames并将之publishes到topic上,但是没有监听功能。

topic_to_socketcan_node 接收topic信息发送给SocketCAN设备。

 

7. socketcan_interface

该包提供一个通用的can接口类型,并提供一个基于SocketCAN的驱动应用的实现。

StateInterface: Listener interface for the state of the driver,监测驱动的状态

CommInterface: Listener interface for receiving messages and send functionality,检测收发功能

DriverInterface: inherits from both and adds management interfaces,继承并添加管理接口

 

我理解,这个包是涉及硬件信息的,也就是该包是一个硬件接口。

 

注:ros canopen模块弄起来太费劲,所以最后我放弃了,可以尝试lbpcan驱动,不过libpcan的硬件比较贵,国外需要3000,国内仿造的也要700-800的样子,还有一种方式就是采用最常见的can模块,但是driver需要自己编写,与canopen有点相同,如果只是采用can的简单读写功能的话,我认为自己编写反而比用ros canopen更容易一些;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS的ros_canopen调试 的相关文章

随机推荐

  • open-falcon 监控cpu指标及含义

    user 30512019 从系统启动开始累计到当前时刻 xff0c 用户态的CPU时间 xff0c 不包含nice值为负进程 nice 2905 从系统启动开始累计到当前时刻 xff0c nice值为负的进程所占用的CPU时间 syste
  • [Unity] 串口读取数据错误 IOException: 拒绝访问。

    错误内容 IOException 拒绝访问 System IO Ports WinSerialStream ReportIOError System String optional arg at lt 14e3453b740b4bd690e
  • px4仿真无法起飞问题(Failsafe enabled: no datalink)

    报错信息 问题描述 xff1a 使用JMAVSim和gazebo仿真px4起飞时报错如下 xff1a WARN commander Failsafe enabled no datalink 说不安全 解决方法 打开QGC 就可以起飞了
  • TCP (传输控制协议)和 UDP

    传输控制协议 xff08 TCP xff0c Transmission Control Protocol xff09 是一种面向连接的 可靠的 基于字节流的传输层通信协议 是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输
  • 全网第一篇 Jetson AGX Xaiver + Jetpack5.0.2(Ubuntu20.04) + ROS2 + ORB-SLAM3 + ZED2

    本机系统 xff1a Jetpack5 0 2 Ubuntu 20 04 LTS 注意事项 xff1a 想要避坑 xff0c 务必按照文中版本准备各种环境 一 安装软件 1 Pangolin 0 5 网址 xff1a https githu
  • java中char转化为int的几种方法

    java中char转化为int的几种方法总结 方法一 xff1a 在char后面 0 span class token keyword public span span class token keyword class span span
  • 大疆 RoboMaster 3508/2006/GM6020 电机使用教程

    19年开始使用大疆的电机 xff0c 刚开始接触有很多东西不懂 xff0c 网上除了RM官网提供的一些资料外没有很多其他的资料 xff0c 现在使用大疆电机近一年了 xff0c 想分享一下自己的经验 1 硬件部分 1 C610电调只能连接M
  • DBC文件解析及CAN通信矩阵

    一般的 DBC 文件中包含了如下的8种信息 xff1a 1 版本与新符号 2 波特率定义 3 网络节点的定义 4 报文帧的定义 5 信号的定义 6 注解部分 7 特征部分 8 数值表部分 VERSOIN 34 34 版本信息 xff0c 为
  • 基于Rplidar二维雷达使用Hector_SLAM算法在ROS中建图

    文章目录 前言一 ROS分布式通信 xff08 配置多机通信 xff09 1 简介2 步骤2 1 准备2 2 修改配置文件2 3配置主机IP2 4配置从机IP 二 RPlidar的使用教程1 创建环境2 下载激光雷达的功能包3 编译4 启动
  • TCP连接建立的步骤

    TCP连接建立的步骤 一 客户端向服务器端发送连接请求后 xff0c 就被动地等待服务器的响应 典型的TCP客户端要经过下面三步操作 xff1a 1 创建一个Socket实例 xff1a 构造函数向指定的远程主机和端口建立一个TCP连接 x
  • 能否在头文件中放置函数定义?

    语法上是可以这样做的 xff0c 但是在编程规范中并不鼓励这样做 成员函数一般是不可以在头文件中定义的 xff0c 只能在头文件中声明 因为函数只能有一次定义 xff0c 而可以有多次声明 xff0c 当头文件被多次包含的时候 xff0c
  • 万能的sprintf

    0 前言 先推荐一本书 xff0c 政治书籍 政治的人生 xff0c 算是一本日记题材 是现任 xff0c 作者大家百度一下就知道了 xff0c 这里不宜过多说明 从这本书里 xff0c 可以看出来现在的社会 这本书是30年前的 大佬就是大
  • 串口通讯UART/RS232/RS485/RS-422笔记

    串口通讯详解笔记 串口通讯概述串口通讯传输数据帧的结构UARTRS232RS485RS 422RS 232 RS 422和RS 485的主要区别 xff08 重要 xff09 串口通讯概述 串口通讯是指数据按位 xff08 bit xff0
  • Stm32 hal库 usart2与hc-08透传模块通讯

    Stm32 hal库 usart2与hc 08透传模块通讯 xff08 附数据解析 xff09 一 stm32cubeMX配置 1 配置RCC为外部晶振 2 配置时钟树 3 配置usart1 usart2 xff0c 其中usart1将作为
  • darknet分类网络,训练,C++调用分类器

    Darknet 分类器 出于对Darknet框架下YOLO结构的火热 xff0c 网络上一堆关于目标检测的C 43 43 调用形式和模板 xff0c 但是未曾存在C 43 43 调用分类器的模板 xff0c 故采用如下形式 xff0c 展开
  • zed2 win10 采集数据

    环境 xff1a win10 cuda10 2 zed2相机 zed sdk 3 7 python3 7 1 标定 参考的博客 2 配置环境 1 xff09 win10安装cuda cudnn 如何查看windows的cuda版本 win1
  • 链表指针赋值

    总结来说 xff0c 就是等号赋值右边的指针 xff08 节点地址 xff09 不变 xff0c 左边的地址变成右边的 即左边的指针移到右边指针的位置 xff08 PS 指针命名时不要用next xff0c 会搞混 xff09 span c
  • 网络基础知识和常用数据帧格式

    网络基础知识和常用数据帧格式 1 IP路由相关1 1 网络分层1 2 网络分段1 3 子网掩码1 4 网关功能1 5 数据路由 2 常用帧格式2 1 ARP帧格式2 2 ICMP帧格式2 3 UDP帧格式2 4 TCP帧格式 本文主要介绍网
  • 解决github上的图片无法显示的问题

    把本地图片上传到 github 上后 xff0c 无法打开图片 xff0c 报如下图片 xff1a 百度了一下 xff0c 说什么DNS污染 xff0c 解决办法如下 xff1a 首先 xff0c 打开域名解析网站 xff1a https
  • ROS的ros_canopen调试

    Ros canopen是ros支持can通信的package 链接 xff1a http wiki ros org ros canopen distro 61 indigo Ros canopen包结构如下 SocketCAN是一组开源的C