LoginSignup
4

More than 3 years have passed since last update.

ArduinoUnoとROS(Raspberry Pi 3 Model B+, UbuntuMate 16.04LTS)を繋げる

Posted at

目的

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の間の通信を行う

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4