環境
Ubuntu18.04
ROS:Melodic(http://wiki.ros.org/melodic/Installation/Ubuntu)
Arduino Mega
インストール
$ sudo apt install ros-melodic-rosserial-arduino $ sudo apt install ros-melodic-rosserial $ cd ~/Arduino/libraries/ $ rosrun rosserial_arduino make_libraries.py .
書き込み権限付与
$ sudo chmod 666 /dev/ttyACM0
Lチカ
スケッチ
#include <ros.h> #include <std_msgs/Empty.h> ros::NodeHandle nh; void messageCb( const std_msgs::Empty& toggle_msg) { digitalWrite(LED_BUILTIN, HIGH); delay(100); digitalWrite(LED_BUILTIN, LOW); delay(100); } ros::Subscriber<std_msgs::Empty> sub("toggle_led", &messageCb ); void setup(){ pinMode(LED_BUILTIN, OUTPUT); nh.initNode(); nh.subscribe(sub); } void loop(){ nh.spinOnce(); delay(1); }
$ roscore $ rosrun rosserial_python serial_node.py /dev/ttyACM0 $ rostopic pub toggle_led std_msgs/Empty --once
モータを動かす
GitHub - karadalex/ros_steppermotors_topic_control: ROS & Arduino - Control Stepper motors リンク先のスケッチをArduinoへ書き込みし、
$ rostopic pub motor2/start std_msgs/Empty --once
パブリッシュすれば動きます。
今回の構成
余談
GitHub - ROBOTIS-GIT/ros2arduino: This library helps the Arduino board communicate with the ROS2 using XRCE-DDS. は手持ちのArduino MegaではRAMが足りなかった...。
参考
ROSのrosserialを使ってArduinoでLチカをする - Qiita
GitHub - nr-parikh/rosserial_tutorials: Examples of how to use rossserial with Arduino/Teensy.