在Ubuntu 20.04或者18.04里,运用ROS下的CANopen消息机制,Viewtool USB-CAN适配器使用SocketCAN驱动对CAN网络的控制说明.
关键词:ROS,CANopen,SocketCAN,驱动Ginkgo.ko,CAN.
下载canopen源码包(http://wiki.ros.org/ros_canopen)
https://github.com/ros-industrial/ros_canopen.git
Figure 1-1
把下载的源码包放在your_working/ros/canopen的路径下解压
Figure 2-1
根据自己的系统选择不同版本的驱动(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
特别提醒:
(如果不能显示网络信息,安装一下net-tools)
Figure 3-2
socketcan_vt.cpp、vt.h的对应目录:
Figure 4-1-1
Figure 4-1-2
Figure 4-2-1
Figure 4-2-2
(在路径ros/canopen下)
Figure 4-3-1
过程中可能出现的问题及其解决方法:
Figure 4-3-2
(编译期间可以看到我们的目标文件被编译):
Figure4-4-1
(如果没有编译我们的文件,可以把CMakeLists.txt里面的内容更新一下,重新编译就可以)。
CAN网络硬件连接方式:
两台viewtool 的USB-CAN适配器(A, B), 构建成一个最简化的CAN网络,模拟实际CAN网络,以实现通过CAN总线实现控制网络节点的目的。
CAN网络软件控制:
一端(CAN适配器A)采用ROS来控制收发,另一端(CAN适配器B)采用windows的App来控制收发.
sudo roscore
Figure 5-1
Rosrun socketcan_bridge socketcan_to_topic_node
Figure 5-2
PS:
每一步都请看一下,知道连上一个通道。
确定编译过,就是source一下的事情。
设置两个通道波特率 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
代码的发送部分:
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)
socketCAN_vt code: https://github.com/szzhangfq/Viewtool-socketCAN
http://wiki.ros.org/ros_canopen
特别鸣谢以下朋友的建议及其博客:
https://blog.csdn.net/YiYeZhiNian/article/details/102730879
https://www.pianshen.com/article/7613822784/
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
https://blog.csdn.net/ost_csdn/article/details/104009843