上篇文章提到过,对于CAN测试,不能完全依靠CAN卡对应的软件,指导老师推荐了ros_canopen、socketcan_interface方法。记录一下使用该方法的过程。
安装ros_canopen,对应ros版本git clone下载资源并安装。
https://github.com/ros-industrial/ros_canopen.git
ros的常规过程
![](https://img-blog.csdnimg.cn/225c67a15c4448c386098487d1e39bd0.png)
看网上教程安装libmuparser-dev
sudo apt-get install libmuparser-dev
然后catkin_make 编译。
bug:缺少相关的包,对照提示sudo apt-get install ***,错误不全部贴出来了。
CMake Error at ros_canopen/socketcan_bridge/CMakeLists.txt:109 (find_package):
By not providing "Findroslint.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "roslint", but
CMake did not find one.
![](https://img-blog.csdnimg.cn/23776a0674c24fe6a2663f0bdf3deaf0.png)
sudo apt-get install ros-melodic-roslint
sudo apt-get install ros-melodic-controller-manager
sudo apt-get install ros-melodic-filters
sudo apt-get install ros-melodic-joint-limits-interface
最后编译成功
查阅资料得知,周立功USBCAN-2E-U仅支持win环境,所以改换使用CANalyst-2(Linux版),网上有资料使用虚拟CAN进行测试,先测试一下虚拟CAN,参考下方教程
ros_canopen使用心得_NIgori_MrW的博客-CSDN博客
![](https://img-blog.csdnimg.cn/e4868adde4134034973730dff2283e9e.png)
![](https://img-blog.csdnimg.cn/f32884dabf3540dd95a9d36ab18f0d90.png)
启动节点时报错缺少包
pilot@pilot:~$ rosrun socketcan_bridge socketcan_to_topic_node
[rospack] Error: package 'socketcan_bridge' not found
安装socketcan_bridge包:
sudo apt-get install ros-melodic-socketcan-bridge
重新启动节点
pilot@pilot:~$ rosrun socketcan_bridge socketcan_to_topic_node
[ INFO] [1678264578.378877740]: Successfully connected to can0.
新开一个终端用于打印通道内容:rostopic echo /received_messages
![](https://img-blog.csdnimg.cn/1e346c4a4336420db13c2163f6633255.png)
新开一个终端用于接受CAN数据:candump can0
![](https://img-blog.csdnimg.cn/9f8ec035f678495ab20699dce76ab08f.png)
新开一个终端发送CAN数据测试,发送完之后,前面两个终端就可以显示接收到的数据
cansend can0 7ff#123456
参考上述教程了解到后续就可以自己写程序和launch文件进行集成运行。
官方教程:ros_canopen - ROS Wiki
socketcan_interface - ROS Wiki