Ini adalah tutorial singkat untuk berkenalan dengan ROS dan ROS2 Galactic. Robotic Operating System bukanlah OS seperti Windows, atau MacOS, melainkan sebuah rangkaian sistem yang dapat membantu pengembangan robot yang kompleks. Dalam tutorial ini kita belajar cara menjalankan ROS2 Galactic dengan cukup mudah tanpa perlu instalasi ROS, yaitu menggunakan docker.
2. Daftar isi
• Apa itu Robotic Operating System
• Apa itu ROS2 Galactic
• Persiapan instalasi
• Menjalankan ROS2 dengan Docker
• Mengenal perintah-perintah dasar ROS2
• Menjalankan Turtlesim
3. Apa itu Robotic Operating System
• ROS adalah sebuah aplikasi (atau bisa juga disebut sebagai platform/framework) untuk
mempermudah pengerjaan proyek robot yang kompleks, menjadi terstruktur, terorganisasi
dengan rapih, dan mudah untuk dikembangkan kedepannya karena menggunakan standar.
• Inti dari ROS adalah sebuah sistem pubsub (publisher-subscriber), dimana ada pihak yang
berfungsi menerbitkan data dan ada pihak yang menerima data. Dalam sebuah sistem robotika
yang menggunakan ROS, kita memisahkan beberapa subsistem (sensor/actuator) kedalam 2 atau
lebih node. Masing-masing node ini berkomunikasi menggunakan mekanisme pubsub. Setiap
node minimal terdiri dari 1 subscriber atau 1 publisher (atau bisa keduanya).
• Data yang dikirimkan dalam pubsub ini disebut msg (message) dan dikirimkan dalam per topik
(topic). Setiap topic memiliki structur msg tersendiri. Ada banyak jenis struktur msg di ROS. Pada
prinsipnya setiap msg memiliki struktur data tertentu, apakah berbentuk rangkaian angka (integer,
float), huruf (cha, string) ataupun kombinasinya. Kitapun bisa membuat definisi message
tersendiri sesuai kebutuhan, lalu menerbitkannya menggunakan nama topic tertentu yang kita
tentukan sendiri.
4. Apa itu Robotic Operating System
*Ilustrasi node, topic dan message https://docs.ros.org/en/foxy/_images/Topic-MultiplePublisherandMultipleSubscriber.gif
5. Apa itu ROS2 Galactic
• ROS2 Galactic adalah distro terbaru dari ROS2 (rilis Mei 2021). ROS2
Galactic adalah distro Long Term Support (LTS) dimana OSRF akan
memberikan dukungan resmi lebih utama dan rentang waktu yang
lebih panjang dibanding distro lain yang tidak LTS
• ROS2 Galactic telah cukup lama dikerjakan dan dinantikan baik oleh
komunitas maupun industri.
• Data Distribution System (DDS) pada ROS2 Galactic mendapat
dukungan penuh dari vendor DDS industri seperti eProsima, RTI,
Adlink dan Eclipse dengan proyek Cyclone-nya. DDS ini didukung
berbagai organisasi besar seperti Nasa, Comma.ai, Autoware, bahkan
PX4 dari Drone Code Foundation.
6. Apa itu Robotic Operating System
Perbedaan arsitektur ROS1 dan ROS2 secara umum
7. Apa itu ROS2 Galactic
Sekilas tentang ROS2:
• Menggunakan DDS (default-nya Eclipse Cyclone DDS, tetapi bisa di
implementasikan menggunakan berbagai produk DDS lain seperti eProsima
FastDDS, ADLINK OpenSplice, RTI Connext).
• Menghilangkan konsep Master-Slave (Tidak memiliki ROS Master seperti ROS1.
Sehingga tidak memiliki risiko Single-Point-of-Failure apabila master down)
• Semua perintah utama menggunakan perintah
ros2 <arg1> <arg2>
• Semua fungsi/modul utama pada ROS1 akan di-porting ke ROS2, dan ada
banyak lagi fitur-fitur baru yang akan ditambahkan
• Dokumentasinya jauh lebih baik dan terstruktur dibandingkan dengan
dokumentasi ROS1
8. Persiapan instalasi
• Dalam slide ini, akan dibahas cara yang menurut penulis paling mudah dan kecil risiko gagal. Ada
banyak cara untuk instalasi ROS2 Galactic, silahkan baca selengkapnya pada
https://docs.ros.org/en/galactic/
• Namun diharapkan pembaca sudah familiar dengan Docker. Jika belum, ada banyak sekali tutorial
berbahasa Indonesia yang menjelaskan tentang Docker. Misalnya:
https://www.youtube.com/watch?v=KrcHmVzmFN8&list=PL-CtdCApEFH-
A7jBmdertzbeACuQWvQao
• Konfigurasi yang dipakai dalam tutorial ini adalah:
• Host : Windows 7
• VM: Menggunakan Virtual Box, instance menggunakan Ubuntu 18
• Docker: Versi 19.03.12
• Docker-compose: Versi 1.26.2
• Python: 3.8
• Tool SSH: MobaXTerm (Windows. Free. https://mobaxterm.mobatek.net/download.html)
9. Menjalankan Docker ROS2 Galactic
• Hidupkan VM Ubuntu dengan Virtual Box
• Buka MobaXterm, hubungkan dengan VM Ubuntu dengan cara:
ssh <username>@<ip VM Ubuntu>
• Cara cepat untuk menjalankan ROS2 Galatic menggunakan Docker
adalah, ketik:
docker run -it althack/ros2:galactic-full
• Sebelum menjalankan perintah pada ROS2, pastikan environment
sudah sesuai dan daemon sudah berjalan:
source /opt/ros/galactic/setup.bash
ros2 daemon start
10. ROS daemon
• Untuk apa ROS daemon? Bukankan ROS2 mengusung konsep peer-too-peer, tanpa
master seperti roscore di ROS1?
• ROS daemon adalah sebuah daemon yang akan mencari dan terhubung dengan daemon
di komputer lain jika ada. Satu komputer cukup satu daemon, setelah itu node akan
otomatis terhubung satu dengan lain walaupun beda komputer.
• Ketika ROS daemon dijalankan ada beberapa port baru yang dibuka. bisa di cek dengan
perintah: netstat -atun | grep LISTEN atau dengan ss -upnl4
• Rangkaian port yang dibuka bergantung pada pilihan domain ID (ROS_DOMAIN_ID). Jika
kita tidak mendifinisikan domain id, maka otomatis dipilih domain 0 dengan port yang
buka adalah 5900/TCP, 11511/TCP, 33577/UDP, 43470/UDP, 7400/UDP, 7401/UDP
• Lebih detail soal domain dan port yang dibuka bisa dibaca disini
https://docs.ros.org/en/galactic/Concepts/About-Domain-ID.html
11. ROS daemon
• Untuk mengetahi fungsi masing-masing port yang dibuka, pada bagian
bawah dokumen, terdapat port calculator.
• Klik link berikut https://docs.ros.org/en/galactic/Concepts/About-Domain-
ID.html#domain-id-to-udp-port-calculator
ROS2 menggunakan konsep UDP Multicast (dari satu sender ke beberapa
receiver dalam group),
dan Unicast (dari satu sender ke satu receiver). Bedakan dengan UDP
boardcast.
Lebih detail tentang Unicast dan Multicast bisa dibaca disini
https://www.geeksforgeeks.org/difference-between-unicast-broadcast-and-
multicast-in-computer-network/
Jika mau ujicoba UDP broadcast bs juga baca
https://www.slideshare.net/DonyRiyanto/creating-udp-broadcast-app-using-
python-socket-on-windows-linux
12. Mengenal ROS2 Galactic
• Perhatikan, setelah menjalankan perintah diatas, maka ada beberapa
setting evironment ditambahkan. Bisa dilihat dengan cara:
printenv | grep ROS
• Setting env lain bisa dilihat dengan cara ketik:
printenv | grep _PATH
13. Mengenal ROS2 Galactic
• Artinya, instalasi ROS berada di
folder /opt/ros/galactic
• Semua default package bisa dilihat
di folder
/opt/ros/galactic/share
• Untuk menjalankan perintah
ros2 run dan ros2 launch
dibutuhkan package dan launch
file yang sesuai dengan nama
foldernya
14. Menjalankan Aplikagi GUI
• Agar dapat menjalankan aplikasi GUI pada ROS, seperti Rviz, Rqt,
Gazebo, ada beberapa cara. Namun agar kita tidak bolak balik pindah
dari Windows ke Ubuntu, kita dapat memanfaatkan fitur X11 pada
Docker dan Ubuntu, dan ditampilkan ke Windows dengan bantuan
X11 session dari MobaXTerm.
• Untuk itu ada beberapa langkah yang perlu dilakukan:
• Menambahkan setting saat menjalankan perintah Docker. Yaitu -v
/tmp/.X11-unix:/tmp/.X11-unix
• Memastikan IP dari host (Windows yang menjalankan MobaXterm)
• Menjalankan perintah export DISPLAY=<ip host>:0
17. Jika Gagal Tampil & Muncul Pesan Error
Jika muncul pesan error, mungkin ada setting pada MobaXTerm yang
belum sesuai. Coba lakukan langkah-langkah berikut:
1. Klik Setting, lalu pilih Configuration
2. Klik tab X11
3. Hilangkan centang (unchecked) RANDR
4. Lalu klik Ok
5. Jalankan kemabli perintah turtlesim sebelumnya
18. Menjalankan Teleop
• Jika sudah muncul visualisasi turtlesim, saatnya kita menggerakkannya menggunakan teleop key
• Teleop key adalah node yang umum ada di proyek ROS yang berfungsi untuk mengendalikan robot
menggunakan keyboard
• Buka tab baru di MobaXTerm, lakukan ssh lagi ke Ubuntu
• Lihat daftar contrainer:
docker ps
• Perhatikan nama container-nya
19. Menjalankan Teleop
• Eksekusi bash shell pada container tersebut dengan cara:
docker exec -it <nama container> bash
• Lalu jalankan teleop key: ros2 run turtlesim turtle_teleop_key
20. Menjalankan Teleop
• Untuk memudahkan kita mengendalikan robot turtlesim, kita bisa memisahkan teminal teleop supaya bisa
bergerak bebas. Caranya klik dan tahan tab terminal teleop, lalu tarik ke bawah
• Terminal akan terpisah, sehingga bisa di-resize dan geser mendekati layar visualisasi turtlesim
Jika hendak dikembalikan ke tab utama, bisa klik
'Reattach this tab'
21. Apa yang terjadi?
• Pada saat turtlesim dijalankan, ROS akan menjalankan dan
mendaftarkan beberapa node dan topic baru.
• Daftar node ini dapat dilihat dengan mengetik:
ros2 node list
• Untuk meilhat daftar topic, bisa dengan:
ros2 topic list
22. Ringkasan
Jadi untuk menjalankan turtlesim di ROS2 Galactic, ringkasannya
perintahnya adalah sbb:
• Menjalankan turtlesim, dengan cara ketik:
ros2 run turtlesim turtlesim_node &
• Akan terbentuk node baru. Tanda & dibelakang perintah tersebut
adalah agar perintah tersebut dijalankan pada background, sehingga
kita bisa melanjutkan mengetik perintah berikutnya di terminal yang
sama.
• Untuk mengendalikan turtle, jalankan perintah:
ros2 run turtlesim turtle_teleop_key
• Ikuti instruksi pada layar untuk menggerakkan & memutar arah turtle