2
0

More than 5 years have passed since last update.

ROSを始めよう その9

Posted at

前回の内容

その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の勉強はひとまず終わりです。あとは実践あるのみ!色々作っていきましょう。

2
0
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
2
0