目的
ArduinoUnoとROS(Raspberry Pi 3 Model B+, UbuntuMate 16.04LTS)を繋げた際の備忘録です。
準備
ArduinoUno
Raspberry Pi 3 Model B+
RaspberryPiはRaspberry Pi 3B+(Ubuntu Mate 16.04LTS)にROS kinetic をインストールしてturtlesimを動かすの環境を使います。
コード
rosserial_arduino Arduino IDE Setup
rosserial_arduino Hello World (example publisher)
rosserial for Arduino を installします。
$ sudo apt-get install ros-kinetic-rosserial-arduino
$ sudo apt-get install ros-kinetic-rosserial
$ mkdir -p ~/catkin_workspace/src
$ cd ~/catkin_workspace/src
$ git clone https://github.com/ros-drivers/rosserial.git
$ cd ~/catkin_workspace/
$ catkin_make
ArduinoIDE用のros_libライブラリを作成します。
$ mkdir -p ~/tmp/libraries
$ cd ~/tmp/libraries
$ rm -rf ros_lib
$ rosrun rosserial_arduino make_libraries.py .
$ ls
ros_lib
ros_lib HelloWorldをArduinoへ書き込みます。
ros_lib HelloWorldを書き込んだArduinoをRaspberryPiと接続します。
RaspberryPi側で下記を実行してROS topicを確認します。
$ roscore
$ rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0
[INFO] [1561975864.676817]: ROS Serial Python Node
[INFO] [1561975864.683801]: Connecting to /dev/ttyUSB0 at 57600 baud
[INFO] [1561975867.311368]: Note: publish buffer size is 280 bytes
[INFO] [1561975867.311865]: Setup publisher on chatter [std_msgs/String]
[INFO] [1561975983.204755]: Send tx stop request
$ rosrun rosserial_arduino serial_node.py _port:=/dev/ttyUSB0
$ rostopic echo chatter
data: "hello world!"
---
data: "hello world!"
---
CodingError対策
$ ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 7月 1 18:55 /dev/ttyUSB0
$ sudo chmod o+r /dev/ttyUSB0
$ sudo chmod o+w /dev/ttyUSB0
$ ls -l /dev/ttyUSB0
crw-rw-rw- 1 root dialout 188, 0 7月 1 19:12 /dev/ttyUSB0
Arduinoと接続した際にデバイスファイルがttyUSB0となっていることを確認します。
--
make_libraries.pyのスクリプト実体は以下にあります。
/opt/ros/kinetic/share/rosserial_arduino/make_libraries.py
rosrun rosserial_arduino make_libraries.py ~/.
参考
rosserial_arduino Arduino IDE Setup
rosserial_arduino Hello World (example publisher)
ArduinoにROSのノードをのせる
ArduinoでROSを使う(rosserial)→Ubuntuのみで利用可能
rosserial を用いてROSとArduinoの間の通信を行う