CARA MEMBUAT MENGIRIM DATA DARI ROS KE ARDUINO

Jika pada tutorial sebelumnya kita mengirim data dari arduino ke ros, maka pada tutorial kali ini kita kan membuat sebaliknya yaitu mengirim data dari ros ke arduino. Disini kita akan membuat data yang dikirim kan dari ros ke arduino akan mempua lampu di arduino hidup/mati

1. copy coding berikut :

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

ros::NodeHandle nh;

void messageCb( const std_msgs::Empty& toggle_msg){
digitalWrite(13, HIGH-digitalRead(13)); // blink the led
}

ros::Subscriber<std_msgs::Empty> sub("led", &messageCb);

void setup(){
pinMode(13, OUTPUT);
nh.initNode();
nh.subscribe(sub);
}

void loop(){
nh.spinOnce();
delay(1);
}

2. compile dan upload koding tersebut.
3. jalankan ros anda dengan mengetikkan perintah roscore
4. Kemudian jalankan node rosserial_client yang berfungsi untuk menerima dan mengirimkan data melalui serial, pastikan anda memilih port yang sesuai dengan port arduino anda, disini port arduino yang saya yaitu /def/ttyACM0
5. Setelah berhasil terhubung, maka kita dapat mengirim data melalui ros ke arduino. ketikkan perintah berikut


rostopic pub led std_msgs/Empty
Perhatikan lampu led pada arduino anda akan hidup, jika anda menjalankannya sekali
lagi maka lampu led akan mati

PENJELASAN KDOING ARDUINO


#include<ros.h>
Memasukkan libary ros

#include<std_msgs/Empty.h>
Memasukkan library message yang akan di gunaka, std msgs/Empty.h merupakan message yang telah tersedia dari ros, message tersebut tidak memiliki variabel primitif, anda dapat melihatnya dengan
cara berikut:

rosmsg show std_msgs/Empty
setelah anda jalankan maka tidak akan keluar apapun.

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

void messageCb(const std_msgs::Empty& toggle_msg){
digitalWrite(13,HIGH - digitalRead(13));
}
Membuat callback function dengan nama ”messageCb”. Callback Function adalah fungsi yang akan dijalankan saat arduino menerima topic, topic yang masuk akan disimpan dalam ”variabel toggle msg” dengan tipe variabel std msgs::Empty

ros::Subscriber<std_msgs::Empty> sub("led", &messageCb);
Membuat Subscriber dengan nama topic yang akan disubscribe (diterima) yaitu ”led” dan callback funtion dengan nama messageCb

void setup(){
pinMode(13, OUTPUT);
nh.initNode();
nh.subscribe(sub);
}
inisialisasi pin 13 sebagai OUTPUT, yaitu LED yang sudah tertanam pada arduino uno

nh.initNode();
nh.subscribe(sub);
inisialisasi node serta subscriber