Robotika · pelajaran 5
MQTT: robot di internet
ROS untuk di dalam robot, MQTT untuk keluar
ROS 2 dirancang untuk node-node di dalam satu robot atau satu jaringan lokal. Untuk menghubungkan robot ke HP, server, atau dashboard di internet, yang biasa dipakai adalah MQTT: protokol ringan untuk perangkat IoT.
Bedanya yang paling penting: MQTT punya broker di tengah. Klien tidak pernah bicara langsung satu sama lain. Semua mengirim (publish) ke broker, dan broker meneruskan ke klien yang berlangganan (subscribe).
Buka tab MQTT. Ada tiga klien: op3-bridge (di robot), hp-dashboard (HP di tengah panel), dan nanti terminalmu sendiri.
Topik bertingkat dan wildcard
Topik MQTT berbentuk jalur: robot/op3/cmd_vel, robot/op3/status. Saat berlangganan, kamu boleh memakai:
| filter | cocok dengan |
|---|---|
robot/op3/status | topik itu saja |
robot/+/status | robot/op3/status, robot/arm/status (+ = tepat satu tingkat) |
robot/# | semua di bawah robot/, termasuk robot sendiri (# = sisa semua tingkat, harus di akhir) |
mosquitto_sub -t 'robot/#' -v
mosquitto_pub -t robot/op3/cmd_vel -m '{"vx":0.12}' -q 1
Jembatan MQTT ↔ ROS
mqtt_bridge berlangganan robot/op3/cmd_vel, mengubah JSON {"vx":…, "wz":…} menjadi pesan Twist, lalu menerbitkannya di /cmd_vel. Ia juga mengirim status robot ke robot/op3/status. Pola jembatan ini dipakai di banyak robot nyata: dunia luar memakai MQTT, dunia dalam memakai ROS.
Tekan dan tahan tombol ▲ di dashboard HP. HP mengirim perintah setiap 0,5 detik selama ditahan, karena watchdog robot butuh perintah yang terus datang.
QoS: seberapa yakin pesan sampai?
| QoS | jaminan | paket di jaringan |
|---|---|---|
| 0 | paling banyak sekali (bisa hilang) | PUBLISH |
| 1 | minimal sekali (bisa dobel) | PUBLISH → PUBACK |
| 2 | tepat sekali | PUBLISH → PUBREC → PUBREL → PUBCOMP |
MQTT berjalan di atas TCP, jadi paket tidak hilang secara acak. Yang terjadi di dunia nyata adalah koneksi putus. Geser Jaringan tidak stabil ke kanan, lalu kirim perintah dengan QoS 0, 1, dan 2. Di log paket akan terlihat:
- QoS 0: pesan yang dikirim saat koneksi putus hilang.
- QoS 1: pesan yang belum dibalas PUBACK dikirim ulang (tanda
DUP) setelah tersambung lagi, kadang sampai dua kali. - QoS 2: tidak pernah hilang dan tidak pernah dobel, tapi butuh 4 paket.
Untuk perintah gerak yang dikirim terus-menerus, QoS 0 sering sudah cukup (perintah berikutnya segera datang). Untuk “tendang!” sekali, QoS 1 atau 2 lebih aman.
Retained dan last will
- Retained: broker menyimpan pesan terakhir di topik itu dan langsung memberikannya ke pelanggan baru. Status robot dikirim retained, jadi HP yang baru membuka aplikasi langsung tahu keadaan robot.
- Last will: saat tersambung, robot menitipkan pesan
robot/op3/online = 0ke broker. Kalau robot hilang tanpa pamit (baterai habis, kabel dicabut), broker yang mengumumkannya. Tekan 🔌 Cabut kabel robot dan lihat dashboard HP berubah menjadi “offline”.
Misi
Gerakkan OP3 sejauh 0,5 m lewat MQTT (dashboard HP atau mosquitto_pub).
Selanjutnya: Berjalan dengan dua kaki · Semua pelajaran