МУЛЬТИАГЕНТНІ АЛГОРИТМИ ROBOWORKS Robofleet
Технічні характеристики
- Назва продукту: ROBOWORKS
- Версія: 20240501
- Підготували: Вейн Лю та Джанетт Лін
- Дата: 1 травня 2024 року
Інформація про продукт
ROBOWORKS — це мультиагентна система, яка дозволяє реалізовувати різні алгоритми для координації та зв’язку роботів.
поширені запитання
З: Що мені робити, якщо робот не може автоматично підключитися до Wi-Fi?
A: Якщо робот не може підключитися автоматично, спробуйте від’єднати та повторно підключити мережеву карту та спробуйте підключитися знову.
РЕЗЮМЕ
У цьому документі в основному пояснюється використання пакета функцій формування кількох роботів під назвою wheeltec_multi.
Цей документ складається з чотирьох частин:
- Перша частина в основному стосується впровадження методу формування кількох роботів;
- друга частина в основному описує параметри багатомашинного зв'язку ROS, включаючи конструкцію багатомашинного зв'язку ROS і проблеми, які можуть виникнути в процесі зв'язку ROS;
- третя частина в основному описує етапи роботи багатомашинної синхронізації часу;
- четверта частина пояснює конкретне використання пакета функцій багатомашинного формування.
Метою цього документа є ознайомлення з багатоагентними роботизованими системами та дозволяє користувачам швидко розпочати проект створення кількох роботів.
ВСТУП ДО МУЛЬТИАГЕНТНИХ АЛГОРИТМІВ
Мультиагентні алгоритми формування
Цей пакет ROS представляє типову проблему кількох агентів у спільному контролі під час формування. Цей підручник закладає основу для майбутнього розвитку цієї теми. Алгоритм керування формуванням відноситься до алгоритму, який керує декількома агентами для формування конкретного формування для виконання завдання. Співпраця означає співпрацю між декількома агентами, які використовують певний зв’язок обмежень для виконання завдання. Візьміть для прикладу механізм формування кількох роботівampНаприклад, співпраця означає, що кілька роботів разом утворюють бажану формацію. Його суть полягає в певному математичному співвідношенні, яке виконується між положеннями кожного робота. Методи формування в основному поділяються на централізоване управління формуванням і розподілене управління формуванням. Централізовані методи управління формуванням в основному включають метод віртуальної структури, метод графічної теорії та метод прогнозування моделі. Розподілені методи управління формуванням в основному включають метод лідера-послідовника, метод на основі поведінки та метод віртуальної структури.
Цей пакет ROS застосовує метод «лідер-слідувач» у розподіленому методі управління пластом для виконання руху з кількома роботами. Один робот у строю призначений лідером, а інші роботи призначені рабами, які слідують за лідером. Алгоритм використовує траєкторію руху ведучого робота, щоб задати координати, які слід відслідковувати наступними роботами з певним напрямком і швидкістю. Коригуючи відхилення позиції від координат стеження, слідкуючі зрештою зменшать відхилення між слідуючим і очікуваними координатами стеження до нуля, щоб досягти цілей приводу формування. Таким чином, алгоритм відносно менш складний.
Алгоритми обходу перешкод
Поширеним алгоритмом уникнення перешкод є метод штучного потенційного поля. Рух робота у фізичному середовищі розглядається як рух у віртуальному штучному силовому полі. Найближчу перешкоду визначає LiDAR. Перешкода створює поле сили відштовхування, щоб створювати відштовхування до робота, а цільова точка створює гравітаційне поле для створення сили тяжіння до робота. Таким чином він керує рухом робота під дією комбінованої дії відштовхування та тяжіння.
Цей пакет ROS є вдосконаленням, заснованим на методі штучного потенційного поля. По-перше, алгоритм формування розраховує лінійну та кутову швидкість веденого слідкувача. Потім він збільшує або зменшує лінійну та кутову швидкість відповідно до вимог щодо уникнення перешкод. Коли відстань між веденим слідом і перешкодою ближча, сила відштовхування перешкоди до веденого слідкує більша. При цьому зміна лінійної швидкості та зміна кутової швидкості є більшими. Коли перешкода знаходиться ближче до передньої частини Ведомого ведучого, відштовхування перешкоди від Веденого ведучого стає більшим (переднє відштовхування найбільше, а бокове відштовхування найменше). В результаті коливання лінійної швидкості та кутової швидкості є більшими. Завдяки методу штучного потенційного поля він покращує рішення, коли робот може перестати реагувати перед перешкодою. Це служить для кращого уникнення перешкод.
НАЛАШТУВАННЯ МУЛЬТИАГЕНТНОГО ЗВ'ЯЗКУ
Мультиагентне спілкування є одним із ключових кроків для завершення багатороботного формування. Якщо відносне розташування кількох роботів невідоме, роботам потрібно обмінюватися інформацією один про одного за допомогою зв’язку, щоб полегшити встановлення з’єднань. Розподілена архітектура ROS і мережеві комунікації дуже потужні. Це зручно не лише для зв’язку між процесами, але й для зв’язку між різними пристроями. Завдяки мережевому зв’язку всі вузли можуть працювати на будь-якому комп’ютері. Основні завдання, такі як обробка даних, виконуються на стороні хоста. Підлеглі машини відповідають за отримання даних про навколишнє середовище, зібраних різними датчиками. Хост тут — це менеджер, який керує головним вузлом у ROS. Поточна мультиагентна структура зв’язку здійснюється через менеджер вузлів і менеджер параметрів для обробки зв’язку між кількома роботами.
Етапи налаштування мультиагентних комунікацій
- Налаштуйте ROS Controls у тій же мережі
- Існує 2 способи налаштування головного/підлеглого керування ROS в одній мережі.
Варіант 1:
Головний хост створює локальний Wi-Fi, запускаючи менеджер головного вузла. Як правило, один із роботів, призначений головним, створює цю мережу Wi-Fi. Інші роботи або віртуальні машини приєднуються до цієї мережі Wi-Fi як підлеглі.
Варіанти 2:
Локальна мережа Wi-Fi надається маршрутизатором стороннього виробника як центр ретрансляції інформації. Усі роботи підключені до одного маршрутизатора. Маршрутизатор також можна використовувати без підключення до Інтернету. Виберіть одного з роботів як головного та запустіть менеджер головного вузла. Інші роботи призначені підлеглими та запускають головний менеджер вузла від головного.
Рішення про те, який варіант вибрати, залежить від вимог вашого проекту. Якщо кількість роботів, яким потрібно спілкуватися, невелика, рекомендується варіант 1, оскільки він економить кошти та його легко налаштувати. Якщо кількість роботів велика, рекомендується варіант 2. Обмеження обчислювальної потужності головного керування ROS і обмежена пропускна здатність бортового Wi-Fi можуть легко спричинити затримки та збої в мережі. Маршрутизатор може легко вирішити ці проблеми. Зауважте, що під час мультиагентного зв’язку, якщо віртуальна машина використовується як підпорядкована ROS, для її мережевого режиму потрібно встановити режим моста.
Налаштувати змінні середовища Master/Slave
Після того, як усі головні ROS знаходяться в одній мережі, потрібно встановити змінні середовища для багатоагентного зв’язку. Ця змінна середовища налаштована у файлі .bashrc у головному каталозі. Виконайте команду gedit ~/.bashrc, щоб запустити його. Зауважте, що файли .bashrc головного та підлеглого пристроїв у багатоагентному зв’язку потрібно налаштувати. Що потрібно змінити, так це IP-адреси в кінці файлу. Два рядки ROS_MASTER_URI і ROS_HOSTNAME, як показано на малюнку 2-1-4. ROS_MASTER_URI та ROS_HOSTNAME хоста ROS є локальними IP-адресами. ROS_MASTER_URI у підпорядкованому файлі .bashrc ROS потрібно змінити на IP-адресу хоста, тоді як ROS_HOSTNAME залишається локальною IP-адресою.
Багатомашинний зв’язок ROS не обмежений версією випуску ROS. У процесі багатомашинної комунікації слід враховувати наступне:
- Робота веденої програми ROS залежить від головної програми ROS головного пристрою ROS. Головна програма ROS має бути запущена спочатку на головному пристрої, перш ніж виконувати підлеглу програму на підлеглому пристрої.
- IP-адреси головного та підлеглого комп’ютерів у багатомашинному зв’язку мають бути в одній мережі. Це означає, що IP-адреса та маска підмережі знаходяться в одній мережі.
- ROS_HOSTNAME у файлі конфігурації середовища .bashrc не рекомендується використовувати локальний хост. Рекомендується використовувати конкретну IP-адресу.
- У випадку, якщо підлеглу IP-адресу встановлено неправильно, підлеглий пристрій все ще може отримати доступ до головного ROS, але не може вводити керуючу інформацію.
- Якщо віртуальна машина бере участь у багатоагентному зв’язку, для її мережевого режиму потрібно встановити режим моста. Для підключення до мережі не можна вибрати статичну IP-адресу.
- Багатомашинний зв'язок не може view або підписатися на теми типу даних повідомлення, які не існують локально.
- Ви можете використати демонстрацію моделювання Little Turtle, щоб перевірити, чи зв’язок між роботами є успішним:
- a. Тікати від пана
- rescore #launch ROS services
- tristum turtles turtlesim_node #launch turtles інтерфейс
- b. Біжи від раба
- повторно запустити черепахи turtle_teleop_key #запустити вузол керування клавіатурою для черепах
- a. Тікати від пана
Якщо ви можете керувати рухами черепахи з клавіатури підлеглого пристрою, це означає, що зв’язок між головним і підлеглим установлено успішно.
Автоматичне підключення Wi-Fi в ROS
Наведені нижче процедури пояснюють, як налаштувати робота на автоматичне підключення до хост-мережі або мережі маршрутизатора.
Автоматичне налаштування підключення до Wi-Fi для Jetson Nano
- Підключіть Jetson Nano через віддалений інструмент VNC або безпосередньо до екрана комп’ютера. Натисніть значок Wi-Fi у верхньому правому куті, а потім натисніть «Редагувати підключення.»
- Натисніть кнопку + у Мережевих підключеннях:
- У вікні «Виберіть тип підключення» натисніть спадне меню та натисніть кнопку «Створити…»:
- На панелі керування виберіть параметр Wifi. Введіть назву Wi-Fi для підключення в полях «Назва підключення» та SSID. Виберіть «Клієнт» у спадному меню «Режим» і виберіть «wlan0» у спадному меню «Пристрій».
- На панелі керування натисніть опцію «Загальні» та поставте прапорець «Автоматично підключатися до цієї мережі…». Встановіть пріоритет підключення до 1 у параметрі «Пріоритет підключення для автоматичної активації». Позначте опцію «Усі користувачі можуть підключатися до цієї мережі». Якщо для параметра «Пріоритет підключення для автоматичної активації» встановлено значення 0 для іншої мережі Wi-Fi, це означає, що ця мережа Wi-Fi була бажаною в минулому.
- Натисніть опцію «Безпека Wi-Fi» на панелі керування. Виберіть «WPA & WPA2 Personal» у полі «Security». Потім введіть пароль Wi-Fi у полі «Пароль».
Примітка: Якщо робот не може автоматично підключитися до мережі Wi-Fi після завантаження, коли для пріоритету Wi-Fi встановлено значення 0, це може бути спричинено проблемою слабкого сигналу Wi-Fi. Щоб уникнути цієї проблеми, ви можете видалити всі параметри Wi-Fi, які були підключені раніше. Зберігайте лише мережу Wi-Fi, створену хостом або маршрутизатором. Натисніть опцію «Налаштування IPv4» на панелі керування налаштуваннями мережі. Виберіть опцію «Вручну» в полі «Метод». Потім натисніть «Додати», заповніть IP-адресу підлеглої машини в полі «Адреса». Заповніть «24» у полі «Маска мережі». Заповніть сегмент мережі IP у «Шлюзі». Змініть останні три цифри сегмента IP-мережі на «1». Основна мета цього кроку — виправити IP-адресу. Після того, як це буде виконано вперше, IP-адреса залишиться незмінною при наступному підключенні до того самого WIFI.
Після налаштування всіх параметрів натисніть «зберегти», щоб зберегти налаштування. Після успішного збереження робот автоматично підключиться до мережі хоста або маршрутизатора, коли він увімкнений.
Примітка:
- IP-адреса, встановлена тут, має збігатися з IP-адресою, встановленою у файлі .bashrc у розділі 2.1.
- IP-адреса головного та кожного підлеглого пристрою має бути унікальною.
- Головна та підлегла IP-адреси мають бути в одному сегменті мережі.
- Ви повинні дочекатися, поки хост або маршрутизатор надішле сигнал WiFi, перш ніж підлеглий робот зможе увімкнутись і автоматично підключитися до мережі WiFi.
- Після налаштування параметрів, якщо робот не може автоматично підключитися до Wi-Fi, коли він увімкнений, підключіть і від’єднайте мережеву карту та спробуйте підключитися знову.
Автоматичне налаштування Wi-Fi-з’єднання для Raspberry Pi
Процедура для Raspberry Pi така ж, як і для Jetson Nano.
Автоматичне налаштування підключення Wifi для Jetson TX1
Налаштування в Jetson TX1 майже такі ж, як і в Jetson Nano, за одним винятком: Jetson TX1 має вибрати пристрій «wlan1» у «Пристрої» на панелі керування налаштуваннями мережі.
НАЛАШТУВАННЯ МУЛЬТИАГЕНТНОЇ СИНХРОНІЗАЦІЇ
У проекті мультиагентного формування налаштування мультиагентної синхронізації часу є вирішальним кроком. У процесі формування виникне багато проблем через асинхронний системний час кожного робота. Багатоагентна синхронізація часу поділяється на дві ситуації, а саме ситуацію, коли і головний, і підлеглий роботи підключені до мережі, і ситуацію, коли обидва роботи від’єднані від мережі.
Успішне підключення до головної/підлеглої мережі
Після налаштування мультиагентного зв’язку, якщо головний і підлеглий комп’ютери можуть успішно підключитися до мережі, вони автоматично синхронізують мережевий час. У цьому випадку для досягнення синхронізації часу не потрібні додаткові дії.
Усунення несправностей відключення мережі
Після налаштування мультиагентного зв’язку, якщо головний і підлеглий пристрої не можуть успішно підключитися до мережі, необхідно вручну синхронізувати час. Ми використаємо команду date, щоб завершити налаштування часу.
Спочатку встановіть інструмент термінатора. З інструмента термінатора скористайтеся інструментом розділення вікон, щоб розмістити керуючі термінали головного та підлеглого в одному вікні терміналу (клацніть правою кнопкою миші, щоб установити розділене вікно та увійдіть до головного та підлеглого комп’ютерів за допомогою ssh у різних вікнах) .
- sudo apt-get install terminator # Завантажте термінатор, щоб розділити вікно терміналу
Натисніть кнопку вгорі ліворуч, виберіть опцію [Транслювати всім]/[Транслювати всім] і введіть наступну команду. Потім скористайтеся інструментом термінатора, щоб встановити однаковий час для головного та підлеглого.
- sudo date -s “2022-01-30 15:15:00” # Налаштування часу вручну
МУЛЬТИАГЕНТНИЙ ПАКЕТ ROS
Ознайомлення з пакетом ROS
Налаштуйте ім'я підпорядкованого
У пакеті функцій wheeltec_multi необхідно встановити унікальне ім'я для кожного підлеглого робота, щоб уникнути помилок. наприкладample, № 1 для slave1 і № 2 для slave2 тощо. Метою встановлення різних імен є групування запущених вузлів і розрізнення їх за різними просторами імен. наприкладample, темою радара підлеглого 1 є/slave1/scan, а вузлом LiDAR підлеглого 1 є/slave1/laser.
Встановіть координати підлеглого
Пакет wheeltec_multi може реалізувати спеціальні формування. Якщо потрібні різні формування, просто змініть бажані координати підлеглих роботів. Slave_x і slave_y — це координати x і y підлеглого пристрою з головним у якості вихідної контрольної точки. Передня сторона шаблону — це позитивний напрямок координати x, а ліва сторона — позитивний напрямок координати y. Після завершення налаштування координата TF slave1 буде видана як очікувана координата slave. Якщо є один головний і два підлеглих, можна встановити таку форму:
- Горизонтальне формування: Ви можете встановити координати підлеглого пристрою зліва на slave_x:0, slave_y: 0.8, а координати підлеглого пристрою праворуч на slave_x:0, slave_y:-0.8.
- Формування стовпця: координати одного підпорядкованого пристрою можуть бути встановлені на: slave_x:-0.8, slave_y:0, а координати іншого підпорядкованого пристрою можуть бути встановлені на: slave_x:-1.8, slave_y:0.
- Трикутна формація: координати одного підпорядкованого пристрою можуть бути встановлені на: slave_x:-0.8, slave_y: 0.8, а координати іншого підпорядкованого пристрою можуть бути встановлені на: slave_x:-0.8, slave_y:-0.8.
Інші формування можна налаштувати за потреби.
Примітка:
- Рекомендована відстань між двома роботами становить 0.8 і не рекомендується бути нижчою за 0.6. Відстань між підлеглими та провідними рекомендовано встановлювати менше 2.0. Чим далі він від ведучого, тим більша лінійна швидкість веденого під час повороту ведучого. Через обмеження максимальної швидкості швидкість веденого пристрою буде відхилятися, якщо вона не відповідає вимогам. Формування роботів стане хаотичним.
Ініціалізація підлеглої позиції
- Початкова позиція підпорядкованого за замовчуванням знаходиться в очікуваних координатах. Перед запуском програми просто розташуйте підлеглого робота близько до його очікуваних координат, щоб завершити ініціалізацію. Ця функція реалізована вузлом pose_setter у файлі під назвою turn_on_wheeltec_robot.launch у пакеті wheeltec_multi, як показано на малюнку 4-1-3.
Якщо користувач бажає налаштувати початкове положення підлеглого пристрою, йому або їй потрібно лише встановити значення slave_x і slave_y, як показано на малюнку 4-1-4 у wheeltec_slave.launch. Значення slave_x і slave_y буде передано в turn_on_wheeltec_robot.launch і призначено вузлу pose_setter. Просто розташуйте робота в спеціальному положенні перед запуском програми.
Конфігурація позиції
У багатоагентній структурі першою проблемою, яку потрібно вирішити, є позиціонування головного та підлеглого. Майстер спочатку побудує 2D карту. Після створення та збереження карти запустіть пакет двовимірної навігації та скористайтеся адаптивним алгоритмом позиціонування Монте-Карло (позиціонування amcl) у пакеті двовимірної навігації, щоб налаштувати позиціонування майстра. Оскільки головний і підлеглі пристрої знаходяться в одній мережі та спільно використовують той самий менеджер вузлів, головний запустив карту з двовимірного пакета навігації, усі підлеглі можуть використовувати ту саму карту під одним менеджером вузлів. Тому підлеглому не потрібно створювати карту. У wheeltec_slave.launch запустіть позиціонування Монте-Карло (позиціонування amcl), підпорядковані пристрої можуть конфігурувати свої позиції за допомогою карти, створеної головним.
Як створити формування та підтримувати формування
У процесі руху формації рухом майстра можна керувати за допомогою Rviz, клавіатури, пульта та іншими методами. Підлеглий обчислює свою швидкість через вузол slave_tf_listener, щоб контролювати свій рух і досягати мети формування. Вузол slave_tf_listener обмежує швидкість підпорядкованого, щоб уникнути надмірної швидкості обчисленням вузла, що спричинить низку впливів. Конкретне значення можна змінити у wheeltec_slave.launch.
Відповідними параметрами алгоритму формування є:
Інформація про уникнення перешкод
У групі з кількома агентами майстер може використовувати вузол move_base для завершення уникнення перешкод. Однак ініціалізація підлеглого пристрою не використовує вузол move_base. На цьому етапі необхідно викликати вузол multi_avoidance у підпорядкованій програмі. Вузол уникнення перешкод увімкнено в пакеті за замовчуванням. Якщо необхідно, для уникнення можна встановити значення «false», щоб вимкнути вузол уникнення перешкод.
Деякі відповідні параметри вузла уникнення перешкод показано на малюнку нижче, де safe_distance — обмеження безпечної відстані до перешкоди, а danger_distance — обмеження небезпечної відстані до перешкоди. Коли перешкода знаходиться на безпечній і небезпечній відстані, підлеглий пристрій регулює своє положення, щоб уникнути перешкоди. Коли перешкода знаходиться в межах небезпеки, раб буде від'їжджати від перешкоди.
Процедура операції
Введіть команду виконання
Підготовка до початку мультиагентного формування:
- Ведучий і підлеглий підключаються до однієї мережі та правильно налаштовують мультиагентний зв’язок
- Майстер заздалегідь будує 2D карту і зберігає її
- Ведучий розміщується в початковій точці карти, а підлеглий розміщується поблизу позиції ініціалізації (положення формування підпорядкованого за замовчуванням)
- Після віддаленого входу в Jetson Nano/Raspberry Pi виконайте синхронізацію часу.
sudo date -s “2022-04-01 15:15:00”
- Крок 1: Відкрийте 2D-карту з майстра.
roslaunch turn_on_wheeltec_robot navigation.launch
- Крок 2: запустити програму формування з усіх підлеглих.
roslaunch wheeltec_multi wheeltec_slave.launch
- Крок 3: Відкрийте вузол керування клавіатурою з майстра або використовуйте джойстик для дистанційного керування основним рухом.
перезапустити wheeltec_robot_rc keyboard_teleop.launch
- Крок 4: (Необов’язково) Спостерігайте за рухами робота з Rviz.
rviz
Примітка:
- Перед виконанням програми обов’язково завершіть операцію синхронізації часу.
- При керуванні головним угрупованням із кількома агентами кутова швидкість не повинна бути надто високою. Рекомендована лінійна швидкість становить 0.2 м/с, градус кутової швидкості нижче 0.3 рад/с. Коли головний виконує поворот, чим далі ведений від головного, тим більша лінійна швидкість потрібна. Через обмеження лінійної швидкості та кутової швидкості в пакеті, коли ведений автомобіль не може досягти необхідної швидкості, утворення буде хаотичним. Загалом, надмірна лінійна швидкість може легко пошкодити робота.
- Коли кількість підлеглих пристроїв перевищує один, через обмежену пропускну здатність вбудованого Wi-Fi хоста ROS легко спричинити значні затримки та розірвання зв’язку з кількома агентами. Використання маршрутизатора може добре вирішити цю проблему.
- Дерево TF формації з декількома роботами (2 підлеглих) таке: rqt_tf_tree
- Діаграма взаємозв’язку вузлів формування з декількома роботами (2 підлеглих) має вигляд: rqt_graph
Документи / Ресурси
![]() |
МУЛЬТИАГЕНТНІ АЛГОРИТМИ ROBOWORKS Robofleet [pdfПосібник користувача Багатоагентні алгоритми Robofleet, Robofleet, мультиагентні алгоритми, агентські алгоритми, алгоритми |