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