ROSを始めよう その9


前回の内容

その8

今回の内容

今回はArduinoなどによる自作ロボットの動かし方を見ていきましょう。

マイコンをROSを動かすrosserial

Arduinoとrosserialの準備

$ sudo apt-get install ros-kinetic-rosserial ros-kinetic-rosserial-arduinoでインストールします。
また、$ sudo apt-get install arduinoでArduinoをインストールして$ arduinoで立ち上げます。
そして、以下のようにインストールをしたら準備完了です。

$ cd ~/sketchbook/libraries
$ rosrun rosserial_arduino make_libraries.py .

プログラムでLチカさせる

まずは以下のプログラムをArduinoに書き込みます。

arduino_blink.ino
#include <ros.h>
#include <std_msgs/Bool.h>
#include <std_msgs/String.h>

ros::NodeHandle node;
std_msgs::String chat;
ros::Publisher pub("arduino", &chat);

void ledCallback(const std_msgs::Bool &is_led_on){
  if (is_led_on.data) {
    digitalWrite(13, HIGH);
    chat.data = "led on!";
  } else {
    digitalWrite(13, LOW);
    chat.data = "led off!";
  }
  pub.publish(&chat);
}

ros::Subscriber<std_msgs::Bool> sub("led", &ledCallback);

void setup()
{
  pinMode(13, OUTPUT);
  node.initNode();
  node.subscribe(sub);
  node.advertise(pub);
}

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

次に$ roscoreを立ち上げ、$ rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0と実行します。(Arduinoが認識されているのが、/dev/ttyACM0ならそのように書きましょう。)

もし書き込み権限がなければ、$ sudo chmod 777 /dev/ttyUSB0と権限を与えましょう。

$ rostopic echo /arduinoでArduinoから送られてくるMessageを確認できます。
$ rostopic pub /led std_msgs/Bool true$ rostopic pub /led std_msgs/Bool falseでTopic /ledを発行して、LED変化とMessageを確認できます。

サーボモーターの利用

$ sudo apt-get install ros-kinetic-dynamixel-motorでDynamixelというサーボモーターをROSで制御できるようになります。

まとめ

今回はArduinoなどによる自作ロボットの動かし方を見ていきました。
これにてROSの勉強はひとまず終わりです。あとは実践あるのみ!色々作っていきましょう。