ふるお〜と!- FullAuto

AI・ロボットが普及しBI(ベーシックインカム)が早急に実現されることを願う元ニートのブログ

ふるお〜と!-FullAuto

ROSのrosserialを使ってモータを動かしてみた

github.com

環境

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

パブリッシュすれば動きます。

今回の構成

f:id:nullpo24:20200514215553p:plain
rosserial

余談

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.