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