ROS的ros_canopen调试(1)

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总线。

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

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

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

 

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

 

4. canopen_master

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

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

SDOclient/server 接口读写

PDOpublisher/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

这个模块的包提供从socketcanros tospic的发布can 帧信息的功能。内部使用ros_canopensocketcan_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调试(1) 的相关文章

随机推荐

  • 奇偶校验码

    偶校验为例 xff1a 例图中 xff0c 下划线为校验位 xff0c 其余为信息位 检错步骤如下 xff1a 1 根据信息位算出校验位 xff08 通过异或运算 xff1a 相同为0 xff0c 不同为1 xff09 xff1a 得出校验
  • C++中#define和const的区别

    一 define是预处理指令 xff08 pre processor directive xff09 而const是关键字 define用于给一些值定义名称 字符串 xff0c 这样定义的字符串在C C 43 43 中称为宏定义 xff0c
  • select函数实现tcp服务器与客户端随时收发

    服务器 include lt stdio h gt include lt sys types h gt include lt sys socket h gt include lt arpa inet h gt include lt neti
  • STM32F10X库函数逻辑

    define PERIPH BASE unsigned int 0x40000000 定义外围总线基地址 define APB1PERIPH BASE PERIPH BASE xff09 APB1总线开始与外围总线基地址 define AP
  • STM32F10x外部中断EXTI

    目录 一 EXTI是什么 xff1f 二 使用方法 1 功能框图及寄存器 2 库函数编程 总结 提示 xff1a 以下是本篇文章正文内容 xff0c 下面案例可供参考 一 EXTI是什么 xff1f EXTI External interr
  • QT + OpenGL + FFmpeg写的一个全景视频播放器

    临时被分配了一个任务 写一个C 43 43 版本的全景视频播放器 网上搜了搜 基于前辈的基础上 写的差不多了 测试视频源是用ffmpeg拉RTSP的流 最终是要嵌入到别的一个视频播放器模块 所以解码这块我不用太关注 只要实现渲染就可以了 效
  • 15 侥幸:在随机性面前处变不惊

    引言 之前讲过的量化思维 xff0c 已经有概率思维的影子了 xff0c 开始学着用数字提高认识世界的分辨率 现在将继续加深对概率的理解 xff0c 来探讨随机性 它解决的人生难题是 xff1a 我们时常因为心存侥幸而失败 在随机的世界里
  • 【无人驾驶】自动驾驶领域有哪些岗位可选?

    导读 想要进入自动驾驶这个领域 xff0c 便首先去调查了下这个领域的岗位 xff0c 希冀能从中找出自己最感兴趣且匹配度也比较高的方向 废话不多说 xff0c 见下 下图为自动驾驶方向的所有岗位 xff0c 总量的来说 xff0c 方向可
  • 01_搭建百度apollo环境实操可用

    搭建百度apollo环境 0 前言1 目标2 方法3 Apollo环境搭建3 1 CPU版3 1 1前置依赖硬件条件3 2 GPU版前置依赖软件1 安装 Ubuntu 18 042 安装 GIT3 安装 Docker 引擎 3 1 3克隆
  • 02_两小时了解自动驾驶

    02 两小时了解自动驾驶 目标你将学到什么什么是无人驾驶无人驾驶的运作方式参考车辆与硬件平台开源软件架构仿真环境地图简介高精地图与传统地图地图与定位 感知 规划的关系高精地图定位简介GNSS RTK惯性导航激光雷达定位视觉定位融合定位感知简
  • PCA9555的使用个人总结

    1 德州仪器PCA9555 简化PCB布线 xff0c 对处理器有限的IO口进行补充 2 带中断 xff0c 不带重启 3 24 引脚的CMOS器件 xff0c 提供I2C SMBus16位通用并行 xff08 GPIO xff09 的扩展
  • stm32掉电前的数据存储到flash

    对FLASH 的操作 FLASh 必须是先擦 后 写 下面的函数是分析案例 void FLASH WriteByte u32 addr u16 flashdata1 FLASH Status FLASHstatus 61 FLASH COM
  • SPI对外部w25Q64的读写

    SPI 1 SPI是串行外围设备接口 SPI的接口主要应用在EEPROM xff0c FLASH xff0c 实时时钟 xff0c AD 转换器 xff0c 还有数字信号处理器和数字信号 解码器之间 2 SPI xff0c 是一种高速的 x
  • Qt实战开发-仪表盘制作

    仪表盘制作 相关的基础知识 QPainter用来执行具体的绘图相关的操作 xff0c 用来画点 xff0c 线 xff0c 填充 xff0c 变换 xff0c alpha 阿尔法通道 xff08 透明度 xff09 Appha的值越大 xf
  • Qt实战开发-数字软键盘

    开发的思路 布局键盘界面每一个button对应一个槽函数把输入的字符返回到点击处的文本编辑框 开发过程首先定义功能button xff0c 在头文件中定义 QString getText QPushButton span class hlj
  • Qt图形视图框架封装-拿来就用

    简述 图形视图 xff08 Graphics View xff09 提供了一个平台 xff0c 用于大量自定义2D图元的管理与交互 xff0c 并提供了一个视图部件 xff08 view widget xff09 来显示可以缩放和旋转的图元
  • 带参数的宏定义

    带参数的宏定义的一般形式如下 xff1a define lt 宏名 gt xff08 lt 参数表 gt xff09 lt 宏体 gt 其中 xff0c lt 宏名 gt 是一个标识符 xff0c lt 参数表 gt 中的参数可以是一个 x
  • QT 视图(View)/委托(Delegate)/ 模型(Model)/项(Item) 之间的关系

    引言 在学习Qt 中此部分的使用是界面自定义出美观的重要部分 xff0c 熟练的使用 xff0c 可以制作出很好的效果 xff0c 在此梳理一下他们的关系 Model View xff08 模型 视图 xff09 视图 xff08 View
  • char(数字) 转换 int

    刷题遇到一个考点是 char型数字 转 int 进行计算的问题 一看就会 xff0c 一做就错 xff0c 显然是在这里的认识薄弱了 将一番搜索的结果记录下来 xff0c 以备再忘来打脸 char的定义参考 xff1a Java基本数据类型
  • ROS的ros_canopen调试(1)

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