TX2(RTSO-9002)上的Can 和 Ros 通信

2023-05-16

TX2(RTSO-9002)上有两个can接口,分别是P1上的5、6接口(CAN1_H,CAN1_L);7、8接口(CAN0_H,CAN0_L)。

CAN和ROS通信主要是通过ros_canopen(http://wiki.ros.org/ros_canopen?distro=kinetic)中的模块实现的。

1. 安装ros_canopen的各个模块:

1) 可以通过源码安装: https://github.com/ros-industrial/ros_canopen/tree/kinetic-devel

2)通过终端命令安装:

$ sudo apt-get install ros-kinetic-can-msgs

$ sudo apt-get install ros-kinetic-canopen-master

$ sudo apt-get install ros-kinetic-canopen-402

$ sudo apt-get install ros-kinetic-canopen-motor-node

$ sudo apt-get install ros-kinetic-canopen-chain-node

$ sudo apt-get install ros-kinetic-socketcan-bridge

$ sudo apt-get install ros-kinetic-socketcan-interface

2. 安装can_utils

$ git clone https://github.com/linux-can/can-utils.git

$ cd can-utils 

$ make

$ sudo make install

can_utils主要用于配置TX2上can0和can1的属性,同时还能通过cansend和candump指令来测试can接口的收发是否正常。

可以参考 https://blog.csdn.net/xuezhunzhen9743/article/details/81877757

3. 配置can

在配置can之前,需要手动使能can接口:

sudo modprobe can

sudo modprobe can-raw

sudo modprobe can-bcm

sudo modprobe can-gw

sudo modprobe can_dev

sudo modprobe mttcan

可以将以上指令写成脚本,这样就不用每次都输入这么多指令,直接运行脚本即可:

创建脚本文件init_can

在文件中输入:

#!/bin/bash

modprobe can

modprobe can-raw

modprobe can-bcm

modprobe can-gw

modprobe can_dev

modprobe mttcan

保存并退出文件

更改文件权限:

$ chmod 777 init_can

运行脚本:

$ sudo ./init_can

即完成了can接口使能。

 

can0和can1配置:

sudo ip link set can0 type can bitrate 500000

sudo ip link set up can0

sudo ip link set can1 type can bitrate 500000

sudo ip link set up can1

配置完成后,通过ifconfig,可以看到can0和can1的信息:

4. roscan通信

ROS和can通信主要是通过ros_canopen中的socketcan_bridge来实现的。

通过从https://github.com/ros-industrial/ros_canopen/tree/kinetic-devel下载的源码,可以简单来看看通信的实现过程:

在ros_canopen-kinetic-devel/socketcan_bridge/src中可以看到里边有socketcan_to_topic_node.cpp以及topic_to_socketcan_node.cpp。

ROS和can的通信就是通过运行这两个结点实现的。

我们以socketcan_to_topic_node.cpp为例:

57和58行的函数原型在socketcan_to_topic.cpp中有具体的实现。

可以看出,ros将转化后的can信息以Frame.msg的格式通过received_messages这一话题进行发布。

可以进行如下测试:

在配置好can0之后(见3),

$ rosrun socketcan_bridge socketcan_to_topic_node

出现如下信息:

此时,通过rostopic list 可以发现,已经有/received_messages发布。然后在终端输入

$ rostopic echo /received_messages

此时由于can0还没有产生数据,所以topic中并没有东西。

 

在socketcan_bridge/test中,有一个launch文件,vcan0_to_vcan1.launch.该launch文件主要实现的是can0和can1的通讯(通过socketcan_to_topic_node和topic_to_socketcan_node实现)launch 文件中将topic_to_socketcan_node中的sent_messages话题映射为received_messages.  可以将launch文件中的参数<param name="can_device" value="vcan0" /><param name="can_device" value="vcan1" /> 分别改成can0和can1来进行实测。

 

如有错误还请指出。

转载请注明:https://mp.csdn.net/postedit/86229776

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

TX2(RTSO-9002)上的Can 和 Ros 通信 的相关文章

  • SLAM-hector_slam 简介与使用

    hector slam功能包使用高斯牛顿方法 不需要里程计数据 只根据激光信息便可构建地图 所以他的总体框架如下 hector slam功能包 hector slam的核心节点是hector mapping 它订阅 scan 话题以获取SL
  • ros 中ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdist

    ros 中ERROR cannot download default sources list from https raw githubusercontent com ros rosdistro master rosdep sources
  • 关于相机与激光雷达数据采集与标定

    最近在做一个关于车路协同的项目 需要做一个路侧系统 传感器有摄像头和激光雷达 相机和激光雷达联合标定费了老半天劲 在此记录一下 雷达时间戳不对 导致摄像头和雷达的数据无法对齐 解决办法 修改雷达驱动发布点云消息时的时间戳 相机内参标定可以使
  • ROS2踩坑记录

    Vscode 显示 找不到module 以此选择 设置 Python 在setting json中编辑 在 python autoComplete extraPaths 中添加额外的第三方库路径 如 opt ros foxy lib pyt
  • ROS rosdep update 出错方法 不需要翻墙切换之类的解决方法 ‘https://raw.githubusercontent.com/ros/rosdistro/master/inde

    系统 ubuntu18 rosdep update参考的这篇文章 https blog csdn net weixin 43311920 article details 114796748 utm source app app versio
  • ROS noetic tf demo错误处理及python版本切换

    文章目录 报错描述及解决 ubuntu20 04下python版本切换 报错描述及解决 ubuntu版本 20 04 ROS版本 noetic roslaunch turtle tf turtle tf demo launch 报错信息 t
  • STM32的CAN标识符过滤器超简单理解

    1 STM32中CAN1与CAN2的过滤器组 103系列14个过滤器组 104 107系列28个过滤器组 CAN FilterInitStructure CAN FilterNumber 0 0 13 2 每组过滤器组有两种工作模式 标识符
  • Ubuntu安装ROS

    原文链接 https blog csdn net qq 44830040 article details 106049992 这也是我在ubuntu里面安装ROS的第N次 以前每次安装过程都忘记总结了 导致每次安装ROS都浪费了很多的时间用
  • Ubuntu16.04及ROS Kinetic环境下安装使用RealSense SR300

    Ubuntu16 04及ROS Kinetic环境下安装使用RealSense SR300 1 准备条件 需要安装Ubuntu16 04及ROS Kinetic 2 安装驱动 安装realsense的驱动流程可以根据Github上的官方推荐
  • 局域网下ROS多机通信的网络连接配置

    1 在路由器设置中固定各机器IP地址 在浏览器中输入路由器的IP地址 例如TP LINK路由器的IP为 192 168 1 1 进入登录页面后 输入用户名和密码登录 用户名一般为admin 密码为自定义 在 基本设置 gt LAN设置 gt
  • 【ROS】usb_cam相机标定

    1 唠叨两句 当我们要用相机做测量用途时 就需要做相机标定了 不然得到的计算结果会有很大误差 标定的内容包括三部分 内参 外参还有畸变参数 所以标定的过程就是要求得上面这些参数 以前弄这个事估计挺麻烦 需要做实验和计算才能得到 现在通过ro
  • 《机器人操作系统入门》课程代码示例安装出错解决方法

    问题描述 学习 机器人操作系统入门 课程时 在Ubuntu 16 04 上安装了kinetic 安装ROS Academy for Beginners时依赖总是报错 如下所示 rosdep install from paths src ig
  • roslaunch error: ERROR: cannot launch node of type

    今天在因为github上有个之前的包更新了 重新git clone后出现了一个问题 ERROR cannot launch node of type crazyflie demo controller py can t locate nod
  • 无法加载 LZ4 支持的 Python 扩展。 LZ4 压缩将不可用

    我是 ROS 新手 我刚刚打开终端并输入roscore和另一个终端并键入rostopic node我收到这个错误 上面写着 无法加载 LZ4 支持的 Python 扩展 LZ4 压缩将不可用 我搜索并去了https pypi org pro
  • 将 CUDA 添加到 ROS 包

    我想在 ros 包中使用 cuda 有人给我一个简单的例子吗 我尝试使用 cuda 函数构建一个静态库并将该库添加到我的包中 但总是出现链接错误 未定义的引用 cuda 我已经构建了一个可执行文件而不是库并且它可以工作 请帮忙 我自己找到了
  • 如何将曲面拟合到一组数据点并获得曲面方程

    乌班图 ROS 思维 Python程序 我正在尝试获取适合点云数据中的一组点的表面方程 数据来自激光雷达扫描仪 我在 rviz 中选择整个扫描的一部分 并获得该选择的坐标选定表面的图片 所选曲面并不总是如此线性 因为材质中可能存在轻微的曲线
  • 功放诊断测试

    1 切换trace显示时间模式 Toggle time mode 2 测seedkey 需要加载seednkey dll 3 功能寻址和物理寻址切换
  • 如何使用 PyQT5 连接和分离外部应用程序或对接外部应用程序?

    我正在使用 ROS 为多机器人系统开发 GUI 但我对界面中最不想做的事情感到困惑 在我的应用程序中嵌入 RVIZ GMAPPING 或其他屏幕 我已经在界面中放置了一个终端 但我无法解决如何向我的应用程序添加外部应用程序窗口的问题 我知道
  • 无法在 Ubuntu 20.04 上安装 ROS Melodic

    我正在尝试使用这些命令在 Ubuntu 20 04 上安装 ROS Melodic sudo sh c echo deb http packages ros org ros ubuntu lsb release sc main gt etc
  • 安装 ROS 时 Cmake 未检测到 boost-python

    我一直在尝试在我的 Mac 上安装 ROS 并根据不同版本的 boost 使用不同的库解决了错误 然而 似乎有一个库甚至没有检测到 boost python 这是我得到的错误 CMake Error at usr local share c

随机推荐

  • 计算机硬盘备份和恢复解决方案

    问题背景 xff1a 项目需要提供一份系统使用的计算机硬盘备份和恢复方案 xff0c 方便计算机软硬件故障后快速的恢复系统 之前项目使用的工具是Macrium reflect工具 xff0c 但这个工具现在收费了 xff0c 而且功能比较多
  • Python函数详解(一)——函数的定义、调用及变量

    今天继续给大家介绍Python相关知识 xff0c 本文主要内容是Python函数的定义 调用及变量 一 Python函数的定义与调用 在Python中 xff0c 如果我们要反复的进行一种相同或者类似的代码 xff0c 那么我们就可以将这
  • vscode SSH 保存密码自动登录服务器vs code

    先在win local mac 上拿到公钥和私钥 xff0c 然后再把这公钥copy 进服务器 让ssh 身份认证转化为秘钥认证 xff08 mac也是一样的 xff09 1 创建 RSA 密钥对 第一步是在客户端机器 xff08 通常是您
  • 普罗米修斯

    普罗米修斯 xff08 Prometheus xff09 概述 Prometheus是一套开源的监控 报警 时间序列数据库的组合 xff0c 起始是由SoundCloud公司开发的 从2016年加入CNCF xff0c 2016年6月正式发
  • ROS-mavros-PX4加速度控制

    要写的飞控算法本来的输入是roll pitch以及推进力 xff0c 由于PX4不支持输入具体大小的推进力 xff0c 改用三方向加速度 xff08 可用旋转矩阵进行变换 xff09 进行控制 但是PX4的setpoint accel实际控
  • C# 委托(Delegate)与事件(Event)、Func与Action

    一 委托 1 概念 xff1a 从内存角度看 xff0c 委托是一个存储方法的容器 xff0c 当使用该容器时 xff0c 会把容器里面的方法全部执行一遍 xff0c 容器里面的方法可增 43 61 可减 61 从IL Microsoft中
  • STM32 UART串口通信IDLE空闲中断的使用步骤

    参考了各路大神的资料 xff0c 蒙蔽了半天 xff0c 终于学会了 xff0c 记录一下 xff0c 以后忘了可以回来复习参考 一 首先在stm32cube中配置打开对应uart串口的中断 二 工程main函数调用 HAL UART EN
  • 三大通信协议(1)UART

    目录 一 UART通信协议简介 二 UART通信时序 三 UART RS232 TTL关系阐述 1 简介 2 电平转换 四 实例 1 程序代码 2 仿真验证 总结 一 UART通信协议简介 UART xff08 Universal Asyn
  • CAD难学吗?

    首先 xff0c CAD程序不容易学习 这些程序不像学习Microsoft Word或Excel 大多数CAD应用程序都有较高的学习曲线 一些参数和3D CAD应用程序的学习曲线相当陡峭 由于它们的复杂性 xff0c 学习的承诺会更长 CA
  • 安卓strings.xml文件中的msgid的作用__2019.09.12

    lt string name 61 34 name 34 msgid 61 34 012345678912345 34 gt 34 name Name 34 lt string gt 是系统返回信息的标识id这个信息的唯一性 xff0c 你
  • RealSense SDK编译

    0 uname r 查看linux的内核版本 1 xff0c ls l dev sda 查看USB设备的设备文件 2 sudo dmesg tail n 50 查看是否能检测到相机 3 查看 librealsense doc install
  • Linux-磁盘管理

    第14章 Linux系统管理 磁盘管理 第14章 Linux系统管理 磁盘管理 1 磁盘的基本概念 2 磁盘的基本结构 3 磁盘的预备知识 4 磁盘基本分区Fdisk 5 磁盘基本分区Gdisk 6 磁盘挂载方式Mount 7 虚拟内存Sw
  • 网络---数据链路层

    数据链路层 一 数据链路层的信道类型 1 点对点信道 这种信道使用一对一的点对点通信方式 2 广播信道 这种信道使用一对多的广播通信方式 xff0c 因此过程比较复杂 xff0c 广播信道上连接的主机很多 xff0c 因此必须使用专用的共享
  • 第二讲:双目vio视觉前端以及后端重投影残差

    双目vio视觉前端以及后端重投影残差 vins双目 本次主要讲解vio双目系统的视觉前端部分和后端融合的重投影残差部分 xff0c 以vins切入做为分析 xff0c 并赋代码注释解析 主要包含以下五部分内容 xff11 xff09 双目特
  • Eigen 中Geometry (几何模块)

    该代码源于 视觉SLAM十四讲 Eigen 中Geometry xff08 几何模块 xff09 主要操作有旋转向量和旋转矩阵之间的转换 xff1b 欧拉角 xff08 旋转矩阵变欧拉角 xff09 xff1b 欧式变换 xff08 旋转
  • C++实现http发起GET/POST请求

    目录 HTTP请求报文解析HTTP响应报文解析C 43 43 实现http发起GET请求 HTTP xff08 Hyper Text Transfer Protocol xff0c HTTP xff09 超文本传输协议 xff0c 是一个简
  • C++/Qt音视频通话开发MetaRTC源码解读,音频推流和拉流

    本章内容解读MetaRTC开源代码 xff0c 无任何二次开发 xff0c 用于学习交流 MetaRTC是国人开发的开源项目 xff0c 适用各种场景音视频二次开发 xff0c 可以去git阅读README xff0c 我们使用相对成熟的版
  • ROVIO论文笔记

    最近看了ROVIO的相关论文 1 3 1 是15年作者发表的会议论文 xff0c 内容特别简要 xff0c 根本看不懂 3 是作者发表在杂志上的论文 xff0c 对 1 进行了改进 xff0c 内容也进行了大量的扩充 2 是作者16年发表的
  • TX2(RTSO-9002)环境配置(ROS,mavros,arduino,ttyACM,串口)

    TX2 环境配置 1 TX2 ubuntu16 04换源 备份文件 xff1a sudo cp etc apt sources list etc apt sources init list 打开文件 xff1a etc apt source
  • TX2(RTSO-9002)上的Can 和 Ros 通信

    TX2 RTSO 9002 上有两个can接口 xff0c 分别是P1上的5 6接口 xff08 CAN1 H xff0c CAN1 L xff09 xff1b 7 8接口 xff08 CAN0 H xff0c CAN0 L xff09 C