ArduinoとROSを繋ぐ
Arduino IDEのダウンロード
ダウンロード Arduino - Software
解凍
$ tar Jxfv arduino-1.8.9-linux64.tar.xz $ cd arduino-1.8.9 $ ./install.sh
- シリアルポートのアクセス許可
$ ls -l /dev/ttyACM0 $ sudo usermod -a -G dialout `whoami`
rosserialのAruduino用ライブラリをインストール
$ sudo apt install ros-melodic-rosserial ros-melodic-rosserial-arduino $ rosrun rosserial_arduino make_libraries.py ~/arduino-1.8.9/libraries/
サンプルプログラムの実行
新規ファイルから以下のコードをコピペして,ボードに書き込む.
#include <ros.h> #include <std_msgs/Int32.h> //PWM const int PWM1 = 10; const int PWM2 = 11; //ノードハンドルの宣言 ros::NodeHandle nh; void messageCb(const std_msgs::Int32& toggle_msg){ analogWrite(PWM1, toggle_msg.data); } // トピック名をtoggle_ledとしてSubscriberをインスタンス化し、messageCbを呼び出す ros::Subscriber<std_msgs::Int32> sub("toggle_led", &messageCb ); void setup() { nh.initNode(); nh.subscribe(sub); pinMode(PWM1, OUTPUT); pinMode(PWM2, OUTPUT); } void loop() { nh.spinOnce(); delay(1); }
ターミナルで以下のコマンドを実行すると数字(ここでは255)に応じたPWMが生成される.
$ roscore $ rosrun rosserial_pyhton serial_node.py /dev/ttyACM0 $ rostopic pub toggle_led std_msgs/Int32 255 --once