Antarmuka Electron untuk Robot RAISA yang terhubung ke ROS melalui rosbridge.
- Instal dependensi dengan
npm install. - Produksi:
npm startmenggunakan jendela 1200×1920 dalam mode fullscreen. - Development:
npm run devmenggunakan jendela 640×960 tanpa fullscreen.
Mode development juga dapat diaktifkan dengan environment variable NODE_ENV=development atau argumen Electron --dev. Jika keduanya tidak diberikan, aplikasi otomatis menggunakan mode produksi.
Membuka VIDEO memutar playlist promo sekaligus mengaktifkan navigasi otomatis. Robot bergerak bolak-balik dengan urutan titikjemput → tunggu 5 detik → titikantar → tunggu 5 detik, lalu mengulang urutan selama video promo terbuka.
Menutup video memublikasikan cancel ke /ui/goto_waypoint (std_msgs/String) dan menghentikan timer tunggu. Tujuan aktif tetap disimpan. Ketika video dibuka kembali, robot melanjutkan tujuan yang tertunda; jika loop dihentikan saat menunggu, jeda lima detik dimulai kembali sebelum waypoint berikutnya dikirim.
Status kedatangan dibaca dari /communication/nav_status (std_msgs/Int8). Nilai 1 menandai waypoint aktif telah tercapai dan memulai jeda lima detik. Video tetap diputar selama perjalanan dan jeda. Kegagalan koneksi ROS tidak menghentikan pemutaran video.
Menu Navigasi tetap tersedia untuk memilih waypoint secara manual, tetapi loop otomatis hanya dikendalikan oleh buka/tutup video promo.
Proses Electron (main.js) menjalankan server HTTP lokal di http://localhost:9999 untuk mengendalikan pemutaran musik latar. Server hanya mendengarkan di localhost sehingga tidak terekspos ke jaringan.
Daftar musik didefinisikan sekali di music.js dan dipakai bersama oleh menu UI (renderMusicList) dan API, sehingga nama yang diterima API sama persis dengan yang ditampilkan di daftar musik.
-
GET /api/musicmengembalikan daftar nama musik.{ "music": ["- - Stop Music - -", "rek-ayo-rek", "Hymne-ITS"] } -
POST /api/music/playmemutar musik melaluiplayMusic()diapp.js. Body JSON berisinameyang harus cocok dengan salah satu nama dariGET /api/music. Mengirim"- - Stop Music - -"menghentikan pemutaran.curl -X POST http://localhost:9999/api/music/play \ -H "Content-Type: application/json" \ -d '{"name": "Hymne-ITS"}'
Respons:
202dengan{ "success": true, "name": "Hymne-ITS" }bila diterima,400bila nama tidak valid (menyertakan daftarmusic), atau503bila renderer belum siap.
index.html: struktur halaman dan overlay.style.css: tema dan layout layar sentuh.app.js: interaksi UI, publisher, subscriber, dan state perjalanan.music.js: katalog musik bersama (dipakaiapp.jsdanmain.js).bridge.js: koneksi rosbridge dan mekanisme reconnect/resubscribe.pameran.html: halaman display pameran mandiri berbasis Bootstrap dengan orb besar, ikon Lucide, dan transisi ikon/teks otomatis setiap lima detik.
pameran.html saat ini hanya mengimplementasikan UI dan tidak terhubung ke ROS atau WebSocket. Halaman menampilkan empat state contoh (suara, percakapan, musik, dan wajah) untuk mendemonstrasikan animasi transisi. Bootstrap 5.3.3 dan Lucide 0.468.0 dimuat dari CDN, sehingga koneksi internet diperlukan agar styling Bootstrap dan ikon tersedia.