CARA MENGIRIM DATA STRING DARI ROS KE ARDUINO

Pada tutorial kali ini kita akan membuat koding arduino kita dapat mengirimkan data string yaitu kalimat "Hello World". kita akan menggunakan koding yang sudah disediakan dari ros

KODING ARDUINO
    1. Buka arduino ide ➙Files ➙Example ➙ HelloWorld
    2.  Akan muncul koding seperti berikut, compila kodingnya kemudian upload ke arduino anda

#include <ros.h>
#include <std_msgs/String.h>

ros::NodeHandle nh;

std_msgs::String str_msg;
ros::Publisher chatter("chatter", &str_msg);

char hello[13] = "hello world!";

void setup(){
nh.initNode();
nh.advertise(chatter);
}

void loop(){
str_msg.data = hello;
chatter.publish( &str_msg );
nh.spinOnce();
delay(1000);
}

    3. Jalankan ros anda dengan mengetikkan perintah "roscore"

roscore


    4. Kemudian jalankan node rosserial client yang berfungsiuntuk menerima data, pastikan anda                 memilih port yang sesuai dengan port arduino anda, disinii port arduino yang saya gunakan                 yaitu /def/ttyACM0,mungkin port anda akan memiliki nama yang berbeda


rosrun rosserial_python serial_node.py /dev/ttyACM0

    5. Setelah berhasil terhubung maka kita dapat melihat data yang dikirm dari arduino ke ros,                      ketikkan peritntah berikut .

rostopic echo /chatter
          /chatter ⤑ nama topic anda, perhatikan kembali koding Arduino anda, anda membuat sebuah                                topic  pada baris berikut :

ros::Publisher chatter("chatter", &str_msg);
          "chatter" ⤑ nama topic

PENJELASAN KODING ARDUINO

#include<ros.h>
Memasukkan libary ros

#include<std_msgs/String.h>
Memasukkan library message yang akan di gunaka, std msgs/String.h merupakan message yang telah tersedia dari ros

ros::NodeHandler nh;
membuat objek dari kelas NodeHandler dengan nama nh, objek ini berfungsi untuk memanggil fungsi-fungsi yang terdapat di dalam library ros seperti fungsi untuk inisialisasi node

std_msgs::String str_msg;
membuat objek dari class String dengan nama str msg, class String merupakan message dari ros

ros::Publisher chatter("chatter",&str_msg)
Membuat publisher dengan nama topic ”chatter” dan objek str_msg yang akan dipublish