基于ROS+CANopen的SocketCAN驱动在Ubuntu下的应用说明
2021/5/18 7:25:46
本文主要是介绍基于ROS+CANopen的SocketCAN驱动在Ubuntu下的应用说明,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
基于ROS+CANopen的SocketCAN驱动在Ubuntu20.04 / 18.04上的应用说明
摘要(Abstract、keywords)
在Ubuntu 20.04或者18.04里,运用ROS下的CANopen消息机制,Viewtool USB-CAN适配器使用SocketCAN驱动对CAN网络的控制说明.
关键词:ROS,CANopen,SocketCAN,驱动Ginkgo.ko,CAN.
介绍(Introduction):
- 下载CANopen包.
- 配置CANopen包.
- 加载Viewtool SocketCAN驱动及其使用CAN-utils测试.
- 添加socketcan_vt.cpp/vt.h 及其编译.
- 测试canopen_interface socketcan_vt及socketcan_dump.
正文(Text):
1.下载CANopen包
下载canopen源码包(http://wiki.ros.org/ros_canopen)
https://github.com/ros-industrial/ros_canopen.git
Figure 1-1
2.放置CANopen包
把下载的源码包放在your_working/ros/canopen的路径下解压
Figure 2-1
3.加载Viewtool socketCAN驱动及其使用CAN-utils测试
根据自己的系统选择不同版本的驱动(Viewtool socketCAN驱动下载:
http://www.viewtool.com/index.php/22-2016-07-29-02-11-32/308-ginkgo-socketcan-software-download)
这一步主要是交叉验证socketCAN的驱动是工作的,本篇主要是介绍ROS CANopen下的工作机制,略过具体验证步骤。
(具体验证参阅: http://www.viewtool.com/wiki/index.php/SocketCAN_Application_Note)
特别注意:驱动不要加载两次,不难理解吧
Figure 3-1
特别提醒:
- 安装Viewtool socketCAN驱动ginkgo.ko后,接上CAN 适配器,dmesg就能看到CAN适配器的信息。
- Ifconfig –a的信息:
(如果不能显示网络信息,安装一下net-tools)
Figure 3-2
4. 添加socketcan_vt.cpp/vt.h 及其编译
4.1添加文件
socketcan_vt.cpp、vt.h的对应目录:
Figure 4-1-1
Figure 4-1-2
4.2 修改CMakeLists.txt
Figure 4-2-1
Figure 4-2-2
4.3编译:
(在路径ros/canopen下)
Figure 4-3-1
过程中可能出现的问题及其解决方法:
Figure 4-3-2
4.4 编译完成
(编译期间可以看到我们的目标文件被编译):
Figure4-4-1
(如果没有编译我们的文件,可以把CMakeLists.txt里面的内容更新一下,重新编译就可以)。
5.测试canopen_interface socketcan_vt
CAN网络硬件连接方式:
两台viewtool 的USB-CAN适配器(A, B), 构建成一个最简化的CAN网络,模拟实际CAN网络,以实现通过CAN总线实现控制网络节点的目的。
CAN网络软件控制:
一端(CAN适配器A)采用ROS来控制收发,另一端(CAN适配器B)采用windows的App来控制收发.
5.1 启动 ROSCORE
sudo roscore
Figure 5-1
5.2 通过socketcan_bridge socketcan_to_topic_node连接canX通道
Rosrun socketcan_bridge socketcan_to_topic_node
Figure 5-2
PS:
每一步都请看一下,知道连上一个通道。
确定编译过,就是source一下的事情。
5.3 初始化配置:
设置两个通道波特率 channel 0, channel 1:
sudo ip link set can0 type can bitrate 500000
sudo ip link set can1 type can bitrate 500000
激活两个通道channel 0, channel 1:
sudo ip link set can0 up
sudo ip link set can1 up
5.4 通过socketcan_interface使用socketcan_vt进行发数:
代码的发送部分:
Figure 5-4-1
发送一波:
Figure 5-4-2
由于代码里面写了数据,终端输入的数据就可以不计了。
接收端的数据(就是另一个CAN适配器B 使用windows端的app来进行控制):
Figure 5-4-3
5.5通过socketcan_interface使用socketcan_dump进行接收数据:
Rosrun socketcan_interface socketcan_dump can1
Figure 5-5-1
发送端(CAN适配器B)的发送图:
Figure 5-5-2
结论
按照这样的步骤就可以顺利完成:
在ROS下,使用CANopen消息机制,通过viewtool的socketcan对CAN设备在CAN网络中的控制。
(如果不愿意自己去下载,安装等繁琐的操作,可以直接下载VMware workstation版本的虚拟机或者通过虚拟机备份出来的iso自己还原系统进行实践,
其中包含: Can-utils,socketCAN的驱动-ginkgo.ko,ROS, CANopen包, 还缺什么?请留言)
(链接:https://pan.baidu.com/s/1bBCakQi0PT6BVKR_bLm0kQ 提取码:1234)
参考文献:
http://wiki.ros.org/ros_canopen
特别鸣谢以下朋友的建议及其博客:
- 北京理工大学 王仕豪
- 特斯联北京科技有限公司 赵树立
- 浙江工业大学 一叶执念的博客
https://blog.csdn.net/YiYeZhiNian/article/details/102730879
- 程序员大本营的博客:
https://www.pianshen.com/article/7613822784/
- xyzxyz576的博客:
https://blog.csdn.net/u011304078/article/details/102986429?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-11.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-11.control
- blinkroad的博客:
https://blog.csdn.net/ost_csdn/article/details/104009843
这篇关于基于ROS+CANopen的SocketCAN驱动在Ubuntu下的应用说明的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-06有没有什么开源的py项目可以对图像进行分类-icode9专业技术文章分享
- 2024-07-05feign默认connecttimeout和readtimeout是多少-icode9专业技术文章分享
- 2024-07-05idea控制台,日志太多,导致部分想看得日志被刷走 搜不到-icode9专业技术文章分享
- 2024-07-05The server selected protocol version Tls10 is not accepted by client preferences [TLs12]-icode9专业技术文章分享
- 2024-07-05怎么清理项目缓存-icode9专业技术文章分享
- 2024-07-04安装 Eyoucms详细图文教程-icode9专业技术文章分享
- 2024-07-04ueditor 复制文章时,图片的链接是一个下载图片地址,该如何处理?-icode9专业技术文章分享
- 2024-07-04怎样判断host有没有对wordpress有缓存呢-icode9专业技术文章分享
- 2024-07-04具有编译功能的系统make后,无法ssh连接-icode9专业技术文章分享
- 2024-07-04make后如何升级ssh-icode9专业技术文章分享