ALGORITMA MULTI-AGEN ROBOWORKS Robofleet
Spesifikasi
- Nama Produk: ROBOWORKS
- Versi: 20240501
- Disiapkan oleh: Wayne Liu & Janette Lin
- Tanggal: 1 Mei 2024
Informasi Produk
ROBOWORKS adalah sistem multi-agen yang memungkinkan penerapan berbagai algoritma untuk koordinasi dan komunikasi robot.
Tanya Jawab Umum
T: Apa yang harus saya lakukan jika robot tidak dapat terhubung secara otomatis ke Wifi?
A: Jika robot gagal terhubung secara otomatis, coba cabut lalu sambungkan kembali kartu jaringan, lalu coba sambungkan lagi.
RINGKASAN
Dokumen ini terutama menjelaskan penggunaan paket fungsi pembentukan multi-robot bernama wheeltec_multi.
Dokumen ini dibagi menjadi empat bagian:
- Bagian pertama terutama tentang pengenalan metode pembentukan multi-robot;
- bagian kedua terutama menjelaskan pengaturan komunikasi multi-mesin ROS, termasuk konstruksi ROS komunikasi multi-mesin dan masalah yang mungkin dihadapi dalam proses komunikasi ROS;
- bagian ketiga terutama menjelaskan langkah-langkah operasi sinkronisasi waktu multi-mesin;
- Bagian keempat menguraikan penggunaan spesifik paket fungsi pembentukan multi-mesin.
Tujuan dari dokumen ini adalah pengenalan terhadap sistem robotik multi-agen dan memungkinkan pengguna untuk memulai proyek pembentukan multi-robot dengan cepat.
PENGENALAN ALGORITMA MULTI-AGEN
Algoritma pembentukan multi-agen
Paket ROS ini menyajikan masalah umum multi-agen dalam kontrol kolaboratif selama gerakan pembentukan. Tutorial ini meletakkan dasar untuk pengembangan topik ini di masa mendatang. Algoritma kontrol pembentukan mengacu pada algoritma yang mengendalikan beberapa agen untuk membentuk formasi tertentu guna melakukan tugas. Kolaborasi mengacu pada kerja sama antara beberapa agen dengan menggunakan hubungan kendala tertentu untuk menyelesaikan tugas. Ambil gerakan pembentukan multi-robot sebagai contohampKolaborasi berarti beberapa robot membentuk formasi yang diinginkan bersama-sama. Esensinya adalah hubungan matematis tertentu yang terpenuhi antara posisi masing-masing robot. Metode formasi terutama dibagi menjadi kontrol formasi terpusat dan kontrol formasi terdistribusi. Metode kontrol formasi terpusat terutama mencakup metode struktur virtual, metode teori grafis, dan metode prediksi model. Metode kontrol formasi terdistribusi terutama mencakup metode pemimpin-pengikut, metode berbasis perilaku, dan metode struktur virtual.
Paket ROS ini menerapkan metode pemimpin-pengikut dalam metode kontrol formasi terdistribusi untuk menjalankan gerakan formasi multi-robot. Satu robot dalam formasi ditetapkan sebagai pemimpin, dan robot lainnya ditetapkan sebagai budak untuk mengikuti pemimpin. Algoritme menggunakan lintasan pergerakan robot terdepan untuk mengatur koordinat yang akan dilacak oleh robot-robot berikutnya dengan arah dan kecepatan tertentu. Dengan mengoreksi penyimpangan posisi dari koordinat pelacakan, para pengikut pada akhirnya akan mengurangi penyimpangan antara pengikut dan koordinat pelacakan yang diharapkan menjadi nol untuk mencapai tujuan gerakan formasi. Dengan cara ini, algoritme relatif kurang rumit.
Algoritma penghindaran rintangan
Algoritma penghindaran rintangan yang umum adalah metode medan potensial buatan. Pergerakan robot dalam lingkungan fisik dianggap sebagai pergerakan dalam medan gaya buatan virtual. Rintangan terdekat diidentifikasi oleh LiDAR. Rintangan tersebut memberikan medan gaya tolak untuk menghasilkan gaya tolak pada robot dan titik target memberikan medan gravitasi untuk menghasilkan gaya gravitasi pada robot. Dengan cara ini, ia mengendalikan gerakan robot di bawah aksi gabungan gaya tolak dan gaya tarik.
Paket ROS ini merupakan penyempurnaan berdasarkan metode medan potensial buatan. Pertama, algoritme pembentukan menghitung kecepatan linier dan sudut pengikut Slave. Kemudian, algoritme tersebut menambah atau mengurangi kecepatan linier dan sudut sesuai dengan persyaratan penghindaran rintangan. Ketika jarak antara pengikut Slave dan rintangan lebih dekat, gaya tolak rintangan terhadap pengikut Slave lebih besar. Sementara itu, perubahan kecepatan linier dan variasi kecepatan sudut lebih besar. Ketika rintangan lebih dekat ke bagian depan pengikut Slave, tolakan rintangan terhadap pengikut Slave menjadi lebih besar (tolakan depan paling besar dan tolakan samping paling kecil). Hasilnya, variasi kecepatan linier dan kecepatan sudut lebih besar. Melalui metode medan potensial buatan, algoritme tersebut meningkatkan solusi ketika robot dapat berhenti merespons di depan rintangan. Hal ini bertujuan untuk menghindari rintangan dengan lebih baik.
PENYIAPAN KOMUNIKASI MULTI-AGEN
Komunikasi multiagen merupakan salah satu langkah kunci untuk melengkapi formasi multirobot. Ketika posisi relatif beberapa robot tidak diketahui, robot perlu saling berbagi informasi melalui komunikasi untuk memfasilitasi pembentukan koneksi. Arsitektur terdistribusi ROS dan komunikasi jaringan sangatlah canggih. Komunikasi ini tidak hanya nyaman untuk komunikasi antarproses tetapi juga untuk komunikasi antara perangkat yang berbeda. Melalui komunikasi jaringan, semua node dapat berjalan di komputer mana pun. Tugas utama seperti pemrosesan data diselesaikan di sisi host. Mesin slave bertanggung jawab untuk menerima data lingkungan yang dikumpulkan oleh berbagai sensor. Host di sini adalah manajer yang menjalankan node Master di ROS. Kerangka kerja komunikasi multiagen saat ini adalah melalui manajer node dan manajer parameter untuk menangani komunikasi di antara beberapa robot.
Langkah-langkah untuk mengatur komunikasi multi-agen
- Siapkan Kontrol ROS di jaringan yang sama
- Ada 2 cara untuk mengatur Kontrol ROS Master/Slave di bawah jaringan yang sama.
Opsi 1:
Host Master membuat wi-fi lokal dengan menjalankan manajer node Master. Umumnya, salah satu robot yang ditunjuk sebagai master membuat jaringan wi-fi ini. Robot atau mesin virtual lain bergabung dengan jaringan wi-fi ini sebagai slave.
Opsi 2:
Jaringan wi-fi lokal disediakan oleh router pihak ketiga sebagai pusat relai informasi. Semua robot terhubung ke router yang sama. Router juga dapat digunakan tanpa koneksi internet. Pilih salah satu robot sebagai master dan jalankan pengelola node Master. Robot lainnya ditetapkan sebagai slave dan menjalankan pengelola node master dari master.
Keputusan tentang opsi mana yang akan dipilih bergantung pada persyaratan proyek Anda. Jika jumlah robot yang perlu berkomunikasi tidak terlalu banyak, Opsi 1 direkomendasikan karena menghemat biaya dan mudah disiapkan. Jika jumlah robot dalam jumlah besar, Opsi 2 direkomendasikan. Kendala pada daya komputasi kontrol utama ROS dan bandwidth wi-fi onboard yang terbatas dapat dengan mudah menyebabkan penundaan dan gangguan jaringan. Router dapat dengan mudah memperbaiki masalah ini. Harap perhatikan bahwa saat melakukan komunikasi multi-agen, jika mesin virtual digunakan sebagai slave ROS, mode jaringannya perlu diatur ke mode bridge.
Konfigurasikan variabel lingkungan Master/Slave
Setelah semua master ROS berada dalam jaringan yang sama, variabel lingkungan untuk komunikasi multiagen perlu ditetapkan. Variabel lingkungan ini dikonfigurasi dalam file .bashrc di direktori utama. Jalankan perintah gedit ~/.bashrc untuk meluncurkannya. Harap perhatikan bahwa file .bashrc master dan slave dalam komunikasi multiagen perlu dikonfigurasi. Yang perlu diubah adalah alamat IP di akhir file. Dua baris adalah ROS_MASTER_URI dan ROS_HOSTNAME, seperti yang ditunjukkan pada Gambar 2-1-4. ROS_MASTER_URI dan ROS_HOSTNAME dari host ROS keduanya adalah IP lokal. ROS_MASTER_URI dalam file .bashrc slave ROS perlu diubah ke alamat IP host sementara ROS_HOSTNAME tetap sebagai alamat IP lokal.
Komunikasi multimesin ROS tidak dibatasi oleh versi rilis ROS. Dalam proses komunikasi multimesin, seseorang harus menyadari hal-hal berikut:
- Pengoperasian program slave ROS bergantung pada program master ROS pada perangkat master ROS. Program master ROS harus diluncurkan terlebih dahulu pada perangkat master sebelum menjalankan program slave pada perangkat slave.
- Alamat IP mesin master dan slave dalam komunikasi multi-mesin harus berada dalam jaringan yang sama. Ini berarti alamat IP dan subnet mask berada di jaringan yang sama.
- ROS_HOSTNAME dalam berkas konfigurasi lingkungan .bashrc tidak direkomendasikan untuk menggunakan localhost. Sebaiknya gunakan alamat IP tertentu.
- Jika alamat IP budak tidak diatur dengan benar, perangkat budak masih dapat mengakses master ROS tetapi tidak dapat memasukkan informasi kontrol.
- Jika mesin virtual berpartisipasi dalam komunikasi multi-agen, mode jaringannya perlu diatur ke mode jembatan. IP statis tidak dapat dipilih untuk koneksi jaringan.
- Komunikasi multi-mesin tidak bisa view atau berlangganan topik tipe data pesan yang tidak ada secara lokal.
- Anda dapat menggunakan demo simulasi Little Turtle untuk memverifikasi apakah komunikasi antar robot berhasil:
- a. Lari dari master
- skor ulang #luncurkan layanan ROS
- mimbar kura-kura turtlesim_node #luncurkan antarmuka kura-kura
- b. Lari dari budak
- jalankan kembali turtle turtle_teleop_key #luncurkan simpul kontrol keyboard untuk turtle
- a. Lari dari master
Jika Anda dapat memanipulasi gerakan turtle dari keyboard pada slave, berarti komunikasi master/slave telah berhasil terjalin.
Koneksi Wi-Fi otomatis di ROS
Prosedur di bawah ini menjelaskan cara mengonfigurasi robot agar terhubung secara otomatis ke jaringan host atau jaringan router.
Pengaturan koneksi Wi-Fi otomatis untuk Jetson Nano
- Hubungkan Jetson Nano melalui alat jarak jauh VNC atau langsung ke layar komputer. Klik ikon wifi di sudut kanan atas lalu klik “Edit Koneksi..”
- Klik tombol + di Koneksi Jaringan:
- Di bawah jendela “Pilih Jenis Koneksi”, klik menu tarik-turun dan klik tombol “Buat…”:
- Di Panel Kontrol, klik opsi Wi-Fi. Masukkan nama Wi-Fi untuk menghubungkan di kolom “Nama Koneksi” dan SSID. Pilih “Klien” di menu tarik-turun “Mode” dan pilih “wlan0” di menu tarik-turun “Perangkat”.
- Di Control Panel, klik opsi “General” dan centang “Automatically connect to this network…”. Atur prioritas koneksi ke 1 di opsi “Connection priority for auto-activation”. Centang opsi “All users may connect to this network”. Bila opsi diatur ke 0 di “Connection priority for auto-activation” untuk wi-fi lain, ini berarti ini adalah jaringan wi-fi pilihan sebelumnya.
- Klik opsi “Wi-Fi Security” di Control Panel. Pilih “WPA & WPA2 Personal” di kolom “Security”. Lalu masukkan kata sandi Wi-Fi di kolom “Password”.
Catatan: Jika robot tidak dapat terhubung secara otomatis ke jaringan wifi setelah melakukan booting saat prioritas wifi diatur ke 0, hal itu mungkin disebabkan oleh masalah sinyal wifi yang lemah. Untuk menghindari masalah ini, Anda dapat memilih untuk menghapus semua opsi wifi yang telah terhubung di masa lalu. Hanya simpan jaringan wifi yang dibuat oleh host atau router. Klik opsi “Pengaturan IPv4” di panel kontrol pengaturan jaringan. Pilih opsi “Manual” di kolom “Metode”. Kemudian klik “Tambah”, isi alamat IP mesin slave di kolom “Alamat”. Isi “24” di kolom “Netmask”. Isi segmen jaringan IP di “Gateway”. Ubah tiga digit terakhir segmen jaringan IP menjadi “1”. Tujuan utama dari langkah ini adalah untuk memperbaiki alamat IP. Setelah ini selesai untuk pertama kalinya, alamat IP akan tetap tidak berubah saat menghubungkan ke WIFI yang sama selanjutnya.
Setelah semua pengaturan dikonfigurasi, klik “simpan” untuk menyimpan pengaturan. Setelah penyimpanan berhasil, robot akan secara otomatis terhubung ke jaringan host atau router saat dinyalakan.
Catatan:
- Alamat IP yang ditetapkan di sini harus sama dengan alamat IP yang ditetapkan dalam file .bashrc di Bagian 2.1.
- Alamat IP master dan setiap slave harus unik.
- Alamat IP master dan slave harus berada di segmen jaringan yang sama.
- Anda harus menunggu host atau router mengirimkan sinyal WiFi sebelum robot budak dapat dihidupkan dan secara otomatis terhubung ke jaringan WiFi.
- Setelah pengaturan dikonfigurasikan, jika robot tidak dapat terhubung secara otomatis ke WiFi saat dihidupkan, silakan pasang dan cabut kartu jaringan dan coba sambungkan lagi.
Pengaturan koneksi Wi-Fi otomatis untuk Raspberry Pi
Prosedur Raspberry Pi sama dengan Jetson Nano.
Pengaturan koneksi Wi-Fi otomatis untuk Jetson TX1
Pengaturan di Jetson TX1 hampir sama dengan di Jetson Nano dengan satu pengecualian. Jetson TX1 harus memilih perangkat “wlan1” di “Device” di panel kontrol pengaturan jaringan.
PENYIAPAN SINKRONISASI MULTI-AGEN
Dalam proyek pembentukan multi-agen, pengaturan sinkronisasi waktu multi-agen merupakan langkah krusial. Dalam proses pembentukan, banyak masalah akan muncul akibat waktu sistem yang tidak sinkron pada setiap robot. Sinkronisasi waktu multi-agen dibagi menjadi dua situasi, yaitu situasi di mana robot master dan slave terhubung ke jaringan dan situasi di mana keduanya terputus dari jaringan.
Koneksi jaringan master/slave berhasil
Setelah komunikasi multi-agen dikonfigurasi, jika mesin induk dan mesin budak berhasil terhubung ke jaringan, maka mesin-mesin tersebut akan secara otomatis menyinkronkan waktu jaringan. Dalam hal ini, tidak ada tindakan lebih lanjut yang diperlukan untuk mencapai sinkronisasi waktu.
Memecahkan masalah pemutusan koneksi jaringan
Setelah komunikasi multi-agen dikonfigurasi, jika perangkat master dan slave tidak dapat terhubung ke jaringan, sinkronisasi waktu harus dilakukan secara manual. Kita akan menggunakan perintah date untuk menyelesaikan pengaturan waktu.
Pertama, instal alat terminator. Dari alat terminator, gunakan alat pemisah jendela untuk menempatkan terminal kontrol master dan slave ke dalam jendela terminal yang sama (klik kanan untuk mengatur jendela terpisah, dan masuk ke mesin master dan slave dengan ssh di jendela yang berbeda) .
- sudo apt-get install terminator # Unduh terminator untuk membagi jendela terminal
Klik tombol di kiri atas, pilih opsi [Broadcast to all]/[Broadcast all], dan masukkan perintah berikut. Kemudian gunakan alat terminator untuk mengatur waktu yang sama untuk master dan slave.
- sudo date -s “2022-01-30 15:15:00” # Pengaturan waktu manual
PAKET ROS MULTI-AGEN
Pengenalan Paket ROS
Siapkan nama budak
Dalam paket fungsi wheeltec_multi, perlu untuk menetapkan nama unik untuk setiap robot slave guna menghindari kesalahan. Misalnyaample, No. 1 untuk slave1 dan No. 2 untuk slave2, dst. Tujuan pengaturan nama yang berbeda adalah untuk mengelompokkan node yang sedang berjalan dan membedakannya dengan namespace yang berbeda. Misalnyaample, topik radar slave 1 adalah /slave1/scan, dan node LiDAR slave 1 adalah /slave1/laser.
Siapkan koordinat budak
Paket wheeltec_multi dapat mengimplementasikan formasi kustom. Jika diperlukan formasi yang berbeda, cukup ubah koordinat robot slave yang diinginkan. Slave_x dan slave_y adalah koordinat x dan y dari slave dengan master sebagai titik referensi awal. Bagian depan master adalah arah positif dari koordinat x, dan sisi kiri adalah arah positif dari koordinat y. Setelah pengaturan selesai, koordinat TF slave1 akan dikeluarkan sebagai koordinat slave yang diharapkan. Jika ada satu master dan dua slave, formasi berikut dapat ditetapkan:
- Formasi horizontal: Anda dapat mengatur koordinat slave di sebelah kiri ke slave_x:0, slave_y: 0.8, dan koordinat slave di sebelah kanan ke slave_x:0, slave_y:-0.8.
- Pembentukan kolom: Koordinat satu budak dapat diatur ke: slave_x:-0.8, slave_y:0, dan koordinat budak lainnya dapat diatur ke: slave_x:-1.8, slave_y:0.
- Formasi segitiga: Koordinat satu budak dapat diatur ke: slave_x:-0.8, slave_y: 0.8, dan koordinat budak lainnya dapat diatur ke: slave_x:-0.8, slave_y:-0.8.
Formasi lainnya dapat disesuaikan sesuai kebutuhan.
Catatan:
- Jarak yang disarankan antara kedua robot diatur ke 0.8, dan disarankan tidak lebih rendah dari 0.6. Jarak antara budak dan master direkomendasikan untuk diatur di bawah 2.0. Semakin jauh jaraknya dari master, semakin besar kecepatan linear dari slave ketika master berputar. Karena keterbatasan kecepatan maksimum, kecepatan budak akan menyimpang jika tidak memenuhi persyaratan. Formasi robot akan menjadi kacau.
Inisialisasi posisi slave
- Posisi awal robot slave berada pada koordinat yang diharapkan secara default. Sebelum menjalankan program, cukup tempatkan robot slave di dekat koordinat yang diharapkan untuk menyelesaikan inisialisasi. Fungsi ini diimplementasikan oleh simpul pose_setter dalam file bernama turn_on_wheeltec_robot.launch dalam paket wheeltec_multi, seperti yang ditunjukkan pada Gambar 4-1-3.
Jika pengguna ingin menyesuaikan posisi awal budak, dia hanya perlu mengatur nilai slave_x dan slave_y seperti yang ditunjukkan pada Gambar 4-1-4 di wheeltec_slave.launch. Nilai slave_x dan slave_y akan diteruskan ke turn_on_wheeltec_robot.launch dan ditetapkan ke node pose_setter. Tempatkan saja robot pada posisi khusus sebelum menjalankan program.
Konfigurasi Posisi
Dalam formasi multi-agen, masalah pertama yang harus dipecahkan adalah pemosisian master dan slave. Master akan membuat peta 2D terlebih dahulu. Setelah membuat dan menyimpan peta, jalankan paket navigasi 2D dan gunakan algoritma pemosisian Monte Carlo adaptif (posisi amcl) dalam paket navigasi 2D untuk mengonfigurasikan pemosisian master. Karena master dan slave berada dalam jaringan yang sama dan berbagi pengelola node yang sama, master telah meluncurkan peta dari paket navigasi 2D, semua slave dapat menggunakan peta yang sama di bawah pengelola node yang sama. Oleh karena itu, slave tidak perlu membuat peta. Dalam wheeltec_slave.launch, jalankan pemosisian Monte Carlo (posisi amcl), slave dapat mengonfigurasikan posisi mereka dengan menggunakan peta yang dibuat oleh master.
Bagaimana menciptakan formasi dan mempertahankan formasi
Dalam proses pergerakan formasi, pergerakan master dapat dikontrol oleh Rviz, keyboard, remote control, dan metode lainnya. Slave menghitung kecepatannya melalui node slave_tf_listener untuk mengontrol pergerakannya dan mencapai tujuan formasi. Node slave_tf_listener membatasi kecepatan slave untuk menghindari kecepatan yang berlebihan melalui perhitungan node, yang akan menyebabkan serangkaian benturan. Nilai spesifik dapat dimodifikasi di wheeltec_slave.launch.
Parameter yang relevan dari algoritma pembentukan adalah sebagai berikut:
Informasi penghindaran rintangan
Dalam formasi multi-agen, master dapat menggunakan node move_base untuk menyelesaikan penghindaran rintangan. Namun, inisialisasi slave tidak menggunakan node move_base. Pada titik ini, node multi_avoidance perlu dipanggil dalam program slave. Node penghindaran rintangan diaktifkan secara default dalam paket. Jika perlu, penghindaran dapat diatur ke "false" untuk menonaktifkan node penghindaran rintangan.
Beberapa parameter yang relevan dari simpul penghindaran rintangan ditunjukkan pada gambar di bawah ini, di mana safe_distance adalah batas jarak aman rintangan, dan danger_distance adalah batas jarak berbahaya rintangan. Ketika rintangan berada dalam jarak aman dan jarak berbahaya, slave menyesuaikan posisinya untuk menghindari rintangan. Ketika rintangan berada dalam bahaya, slave akan menjauh dari rintangan.
Prosedur Operasional
Masukkan perintah eksekusi
Persiapan sebelum memulai pembentukan multi-agent:
- Master dan slave terhubung ke jaringan yang sama dan mengatur komunikasi multi-agen dengan benar
- Master membuat peta 2D terlebih dahulu dan menyimpannya
- Master ditempatkan pada titik awal peta, dan slave ditempatkan di dekat posisi inisialisasi (posisi formasi slave default)
- Setelah masuk ke Jetson Nano/Raspberry Pi dari jarak jauh, lakukan sinkronisasi waktu.
tanggal sudo -s “2022-04-01 15:15:00”
- Langkah 1: Buka peta 2D dari master.
roslaunch turn_on_wheeltec_robot navigasi.peluncuran
- Langkah 2:Jalankan program pembentukan dari semua slave.
roslaunch wheeltec_multi wheeltec_slave.launch
- Langkah 3: Buka simpul kontrol keyboard dari master atau gunakan joystick untuk mengendalikan pergerakan master dari jarak jauh.
luncurkan kembali wheeltec_robot_rc keyboard_teleop.launch
- Langkah 4: (Opsional) Amati pergerakan robot dari Rviz.
rviz
Catatan:
- Pastikan untuk menyelesaikan operasi sinkronisasi waktu sebelum menjalankan program.
- Saat mengendalikan master formasi multi-agen, kecepatan sudut tidak boleh terlalu cepat. Kecepatan linier yang disarankan adalah 0.2 m/s, derajat kecepatan sudut di bawah 0.3 rad/s. Saat master berbelok, semakin jauh slave dari master, semakin besar kecepatan linier yang dibutuhkan. Karena batas kecepatan linier dan kecepatan sudut dalam paket, saat mobil slave tidak dapat mencapai kecepatan yang dibutuhkan, formasi akan kacau. Secara keseluruhan, kecepatan linier yang berlebihan dapat dengan mudah merusak robot.
- Bila jumlah slave lebih dari satu, karena bandwidth wi-fi on-board host ROS terbatas, maka mudah terjadi penundaan yang signifikan dan pemutusan komunikasi multi-agen. Penggunaan router dapat mengatasi masalah ini dengan baik.
- Pohon TF dari formasi multi-robot (2 budak) adalah: rqt_tf_tree
- Diagram hubungan simpul dari formasi multi-robot (2 budak) adalah: rqt_graph
Dokumen / Sumber Daya
![]() |
ALGORITMA MULTI-AGEN ROBOWORKS Robofleet [Bahasa Indonesia:] Panduan Pengguna Algoritma Multi Agen Robofleet, Robofleet, Algoritma Multi Agen, Algoritma Agen, Algoritma |