LoginSignup
28
27

More than 5 years have passed since last update.

ROSのrosserialを使ってArduinoでLチカをする

Last updated at Posted at 2017-10-22

目的

ROSのrosserialを使ってArduinoでLチカをする。
ROSには、arduinoと通信を行うパッケージros-indigo-rosserial-arduinoが用意されており、
これでArduinoをROSノード化することができる。

環境

Ubuntu-14.04.1(x64)
ROS:Indigo

インストール

rosserialとrosserial-arduinoをapt-getでインストールする。

ROS Indigoの場合

 sudo apt-get install ros-indigo-rosserial-arduino
 sudo apt-get install ros-indigo-rosserial

ArduinoIDEをインストールする。
以下のページから、ArduinoIDEのLinux版をダウンロードして回答する。
https://www.arduino.cc/en/main/software

そして、Arduinoのライブラリにros_libを追加する。
ros_libはArduinoのlibrariesフォルダでmake_libraries.pyを実行することでインストールできる

ArduinoIDEのスケッチ→ライブラリをインクルード→ros_libがあればOK。

cd
mkdir dev
wget https://downloads.arduino.cc/arduino-1.8.5-linux64.tar.xz
tar Jxfv arduino-1.8.5-linux64.tar.xz 
 cd arduino-1.8.5/libraries/
rosrun rosserial_arduino make_libraries.py .
cd ..
./arduino

デバイスファイルの設定

PCとArduinoをUSBで接続すると、/dev/ttyACM*のバイスファイルが生成される。
デバイスファイルに書き込み権限をつける。

ttyACM0の場合

sudo chmod 666 /dev/ttyACM0

Lチカのテスト

ArduinoのDigital-11番ピンにLEDの足の長い端子を、GNDに足の短い端子を接続する。

IMAGE.jpg

ArduinoIDEで下記のソースを貼り付けて、
「スケッチ」→「検証・コンパイル」→「マイコンボードに書き込む」
11番ピンにつけたLEDがチカチカできていることを確認する。

test.ino

void setup() {
  pinMode(11, OUTPUT);  //A0
}

void loop() {
    digitalWrite(11,HIGH);
    delay(100);
    digitalWrite(11,LOW);
    delay(100);
}

ROSからのTopicをSubscribeしてLチカのテスト

ArduinoIDEで下記のソースを貼り付けて、
「スケッチ」→「検証・コンパイル」→「マイコンボードに書き込む」

test_L_tika.ino


#include <ros.h>
#include <std_msgs/Empty.h>

ros::NodeHandle nh;

void messageCb( const std_msgs::Empty& toggle_msg) {
  digitalWrite(11, HIGH);
  delay(100);
  digitalWrite(11, LOW);
  delay(100);
}

ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb );

void setup(){
  pinMode(11, OUTPUT);
  digitalWrite(11, HIGH); 
  nh.initNode();
  nh.subscribe(sub);
}

void loop(){
  nh.spinOnce();
  delay(1);
}

下記のコマンドで、ROSを立ち上げ、rostopicで「toggle_led」をpublishする。
「toggle_led」を受けとると、arduinoはLチカを行う。

roscore
rosrun rosserial_python serial_node.py /dev/ttyUSB0
rostopic pub toggle_led std_msgs/Empty --once

参考

28
27
0

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
28
27