r17u’s blog

忘れっぽいエンジニアのメモblogです。趣味でROSを勉強中。

ROSでCAN通信2 〜topicにcanを流す〜

前回でCANデバイスが繋がるところまで確認した。
今回はtopicで受信してみる。

環境

Ubuntu 16.04
ROS Kinetic
PCAN-USB Pro

事前準備

データを垂れ流す適当なcanデバイスをcanハーネスを介してPCAN-USBのcan0に接続する。

can0をON。

$ sudo ip link set can0 up type はcan bitrate 500000
$ ip -details -statistics link show can0

以下で受信できることを確認する。

$ rosrun socketcan_interface socketcan_dump can0
s 601	8 0 fb 96 19 80 a0 5f 63
s 602	8 3a fd af 4f 5 0 83 ff
s 603	8 2 d 58 fe 3 bc 1 0
s 604	8 e6 3 fe ff 0 0 1 0
s 605	8 70 f6 2c 4c 61 5e 0 0

トピックでの受信

ros_canopenをインストール。

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

ros起動。

$ roscore

socketcanからtopicへ流node(publisher)を起動。

$ rosrun socketcan_bridge socketcan_to_topic_node

アクティブなトピックの一覧を表示。
/received_messages があるのでこれを確認する。

$ rostopic list -v
Published topics:
 * /rosout [rosgraph_msgs/Log] 2 publishers
 * /rosout_agg [rosgraph_msgs/Log] 1 publisher
 * /received_messages [can_msgs/Frame] 1 publisher

Subscribed topics:
 * /rosout [rosgraph_msgs/Log] 1 subscriber
 * /statistics [rosgraph_msgs/TopicStatistics] 1 subscriber

echoで/received_messagesの中身を確認。

$ rostopic echo /received_messages
---
header: 
  seq: 4831
  stamp: 
    secs: 1497668981
    nsecs: 913505760
  frame_id: ''
id: 1541
is_rtr: False
is_extended: False
is_error: False
dlc: 8
data: [108, 236, 157, 72, 92, 82, 0, 0]
---

rqt_graphでも確認してみる。

$ rosrun rqt_graph rqt_grap

f:id:r17u:20170617121756p:plain


以上、ros_canopenを用いることで簡単にcanを受信することを確認できた。