ROBOWORKS Robofleet МУЛТИ-АГЕНТСКИ АЛГОРИТМИ
Спецификации
- Име на производ: ROBOWORKS
- Верзија: 20240501
- Подготвиле: Вејн Лиу и Џенет Лин
- Датум: 1 мај 2024 година
Информации за производот
ROBOWORKS е мулти-агентен систем кој овозможува имплементација на различни алгоритми за координација и комуникација на роботите.
Најчесто поставувани прашања
П: Што треба да направам ако роботот не може автоматски да се поврзе на WiFi?
О: Ако роботот не успее да се поврзе автоматски, обидете се да ја исклучите и повторно да ја вклучите мрежната картичка и обидете се повторно да се поврзете.
РЕЗИМЕ
Овој документ главно ја објаснува употребата на функционалниот пакет за формирање на повеќе роботи наречен wheeltec_multi.
Овој документ е поделен на четири дела:
- Првиот дел главно се однесува на воведувањето на методот на формирање на повеќе роботи;
- вториот дел главно ги опишува поставките за комуникација со повеќе машини на ROS, вклучувајќи ја и комуникацијата со повеќе машини за изградба на ROS и проблемите што може да се сретнат во процесот на комуникација со ROS;
- третиот дел главно ги опишува оперативните чекори на повеќе-машинската временска синхронизација;
- четвртиот дел ја објаснува специфичната употреба на пакетот функции за формирање повеќе машини.
Целта на овој документ е вовед во мулти-агентски роботски системи и им овозможува на корисниците брзо да го започнат проектот за формирање на повеќе роботи.
ВОВЕД ВО МУЛТИ-АГЕНТСКИТЕ АЛГОРИТМИ
Алгоритми за формирање на повеќе агенси
Овој ROS пакет претставува типичен проблем на мулти-агенти во колаборативната контрола за време на формирањето на погон. Овој туторијал поставува основа за иден развој на оваа тема. Алгоритмот за контрола на формирање се однесува на алгоритам кој контролира повеќе агенти за да формира специфична формација за извршување на задача. Соработката се однесува на соработка помеѓу повеќе агенти кои користат одредена врска со ограничувања за да се заврши задачата. Земете го погонот за формирање повеќе роботи како ексampЛе, соработката значи дека повеќе роботи заедно формираат посакувана формација. Неговата суштина е одредена математичка врска што е задоволена помеѓу позициите на секој робот. Методите на формирање главно се поделени на централизирана контрола на формацијата и дистрибуирана контрола на формацијата. Методите за контрола на централизираните формации главно вклучуваат метод на виртуелна структура, метод на графичка теорија и метод на предвидување на модели. Методите за контрола на дистрибуирани формации главно вклучуваат метод лидер-следбеник, метод заснован на однесување и метод на виртуелна структура.
Овој ROS пакет го применува методот лидер-следбеник во методот за контрола на дистрибуирани формации за да се изврши погонот за формирање повеќе роботи. Еден робот во формацијата е назначен како водач, а другите роботи се назначени како робови кои ќе го следат лидерот. Алгоритмот ја користи траекторијата на движење на водечкиот робот за да ги постави координатите што треба да ги следат следните роботи со одредена насока и брзина. Со коригирање на отстапувањата на позицијата од координатите за следење, следбениците на крајот ќе го намалат отстапувањето помеѓу следбеникот и очекуваните координати за следење на нула за да ги постигнат целите на формацискиот погон. На овој начин, алгоритмот е релативно помалку комплициран.
Алгоритми за избегнување пречки
Вообичаен алгоритам за избегнување пречки е методот на вештачко потенцијално поле. Движењето на роботот во физичка средина се смета за движење во виртуелно вештачко поле на сила. Најблиската пречка е идентификувана од LiDAR. Пречката обезбедува поле на одбивна сила за генерирање одбивност на роботот, а целната точка обезбедува гравитациско поле за генерирање на гравитациона сила на роботот. На овој начин го контролира движењето на роботот под комбинирано дејство на одбивност и привлечност.
Овој ROS пакет е подобрување базирано на методот на вештачко потенцијално поле. Прво, алгоритмот за формирање ја пресметува линеарната и аголната брзина на следбеникот на Slave. Потоа ја зголемува или намалува линеарната и аголната брзина според барањата за избегнување пречки. Кога растојанието помеѓу следбеникот Slave и пречката е поблиску, одбивната сила на пречката до следбеникот Slave е поголема. Во меѓувреме, промената на линеарната брзина и варијациите на аголната брзина се поголеми. Кога пречката е поблиску до предниот дел на следбеникот Slave, одбивноста на пречката до следбеникот Slave станува поголема (предното одбивање е најголемо, а страничното е најмало). Како резултат на тоа, варијациите на линеарната брзина и аголната брзина се поголеми. Преку методот на вештачко потенцијално поле, го подобрува решението кога робот може да престане да реагира пред пречка. Ова служи за подобро избегнување препреки.
ПОСТАВУВАЊЕ НА ПОВЕЌЕ АГЕНТСКА КОМУНИКАЦИЈА
Комуникацијата со повеќе агенти е еден од клучните чекори за завршување на формирањето на повеќе роботи. Кога релативните позиции на повеќе роботи се непознати, роботите треба да ги споделуваат информациите меѓусебно преку комуникација за да го олеснат воспоставувањето врски. Архитектурата дистрибуирана од ROS и мрежните комуникации се многу моќни. Тоа не е само погодно за меѓупроцесна комуникација, туку и за комуникација помеѓу различни уреди. Преку мрежна комуникација, сите јазли можат да работат на кој било компјутер. Главните задачи како што е обработката на податоците се завршени на страната на домаќинот. Slave машините се одговорни за примање податоци за животната средина собрани од различни сензори. Домаќинот овде е менаџерот што го води Master јазолот во ROS. Тековната рамка за комуникација со повеќе агенти е преку менаџер на јазли и менаџер на параметри за справување со комуникациите помеѓу повеќе роботи.
Чекорите за поставување мулти-агентски комуникации
- Поставете ги контролите на ROS во истата мрежа
- Постојат 2 начини за поставување на Master/Slave ROS контроли под истата мрежа.
Опција 1:
Главниот домаќин создава локална Wi-Fi со вклучување на управувачот со главниот јазол. Општо земено, еден од роботите што е назначен за господар ја создава оваа Wi-Fi мрежа. Други роботи или виртуелни машини се приклучуваат на оваа wifi мрежа како робови.
Опции 2:
Локалната wifi мрежа е обезбедена од рутер од трета страна како информативен центар за реле. Сите роботи се поврзани на истиот рутер. Рутерот може да се користи и без интернет конекција. Изберете еден од роботите како главен и стартувајте го Управувачот со главниот јазол. Останатите роботи се означени како робови и управуваат со главниот менаџер на јазли од господарот.
Одлуката за тоа која опција да се избере зависи од вашите барања на проектот. Ако бројот на роботи што треба да комуницираат не е голем, се препорачува опција 1 бидејќи заштедува цена и лесно се поставува. Кога бројот на роботи е во голема количина, се препорачува опција 2. Ограничувањето на компјутерската моќ на главната контрола на ROS и ограничениот пропусен опсег на Wi-Fi на одборот може лесно да предизвикаат одложувања и прекини на мрежата. Рутерот може лесно да ги реши овие проблеми. Ве молиме имајте предвид дека кога вршите комуникација со повеќе агенти, ако виртуелната машина се користи како роб на ROS, нејзиниот мрежен режим треба да се постави на режим на мост.
Конфигурирајте ги променливите на околината Master/Slave
Откако сите ROS господари се сите во иста мрежа, треба да се постават променливите на околината за комуникација со повеќе агенти. Оваа променлива на околината е конфигурирана во датотеката .bashrc во главниот директориум. Извршете ја командата gedit ~/.bashrc за да ја стартувате. Ве молиме имајте предвид дека и .bashrc-датотеките на господарот и slave во комуникацијата со повеќе агенти треба да се конфигурираат. Она што треба да се промени се IP адресите на крајот од датотеката. Двете линии на се ROS_MASTER_URI и ROS_HOSTNAME, како што е прикажано на Слика 2-1-4. ROS_MASTER_URI и ROS_HOSTNAME на ROS-домаќинот се и локални IP-адреси. ROS_MASTER_URI во датотеката ROS slave .bashrc треба да се смени во IP адресата на домаќинот додека ROS_HOSTNAME останува како локална IP адреса.
ROS-мулти-машинската комуникација не е ограничена од верзијата за издавање на ROS. Во процесот на комуникација со повеќе машини, треба да се има предвид следново:
- Работата на ROS slave програмата зависи од главната програма ROS на главниот уред ROS. Главна програма ROS мора прво да се стартува на главниот уред пред да се изврши slave програмата на slave уредот.
- IP-адресите на главните и slave машините во комуникацијата со повеќе машини треба да бидат во иста мрежа. Ова значи дека IP адресата и маската на подмрежата се под иста мрежа.
- ROS_HOSTNAME во датотеката за конфигурација на околината .bashrc не се препорачува да се користи локалниот хост. Се препорачува да се користи специфична IP адреса.
- Во случај slave IP-адресата да не е правилно поставена, slave-уредот сè уште може да пристапи до главниот ROS, но не може да внесе информации за контрола.
- Ако виртуелната машина учествува во комуникацијата со повеќе агенти, нејзиниот мрежен режим треба да се постави во режим на мост. Статичката IP адреса не може да се избере за мрежната врска.
- Повеќе-машинската комуникација не може view или претплатете се на теми од типот на податоци за пораки кои не постојат локално.
- Можете да го користите демото за симулација на малата желка за да потврдите дали комуникацијата помеѓу роботите е успешна:
- a. Бегај од господарот
- rescore # стартува ROS услуги
- говорница желки turtlesim_node #launch turtles интерфејс
- b. Бегај од робот
- повторување желки turtle_teleop_key #стартирајте контролен јазол на тастатура за желки
- a. Бегај од господарот
Ако можете да манипулирате со движењата на желката од тастатурата на робот, тоа значи дека комуникацијата господар/роб е успешно воспоставена.
Автоматско поврзување со Wi-Fi во ROS
Процедурите подолу објаснуваат како да го конфигурирате роботот за автоматско поврзување на мрежата домаќин или мрежата на рутерот.
Автоматско поставување Wi-Fi конекција за Jetson Nano
- Поврзете го Jetson Nano преку далечинската алатка VNC или директно на екранот на компјутерот. Кликнете на иконата wifi во горниот десен агол, а потоа кликнете на „Уреди врски.“
- Кликнете на копчето + во Мрежни врски:
- Под прозорецот „Изберете тип на врска“, кликнете на опаѓачкото мени и кликнете на копчето „Креирај…“:
- Во контролниот панел, кликнете на опцијата Wi. Внесете го името на Wifi за поврзување во полињата „Име на конекција“ и SSID. Изберете „Клиент“ во паѓачкото мени „Режим“ и изберете „wlan0“ во паѓачкото мени „Уред“.
- Во контролниот панел, кликнете на опцијата „Општо“ и проверете „Автоматско поврзување со оваа мрежа…“. Поставете го приоритетот за поврзување на 1 во опцијата „Приоритет на поврзување за автоматско активирање“. Проверете ја опцијата „Сите корисници можат да се поврзат на оваа мрежа“. Кога опцијата е поставена на 0 во „Приоритет на конекција за автоматско активирање“ за друга WiFi, тоа значи дека ова е претпочитаната wifi мрежа во минатото.
- Кликнете на опцијата „Wi-Fi Security“ во Контролниот панел. Изберете „WPA & WPA2 Personal“ во полето „Безбедност“. Потоа внесете ја лозинката за Wifi во полето „Лозинка“.
Забелешка: Ако роботот не може автоматски да се поврзе со Wi-Fi мрежата по подигнувањето кога приоритетот на wifi е поставен на 0, тоа може да биде предизвикано од проблем со слаб wifi сигнал. За да го избегнете овој проблем, можете да изберете да ги избришете сите опции за wifi што биле поврзани во минатото. Чувајте ја само Wi-Fi мрежата создадена од домаќинот или рутерот. Кликнете на опцијата „IPv4 Settings“ во контролната табла за мрежните поставки. Изберете ја опцијата „Рачно“ во полето „Метод“. Потоа кликнете „Додај“, пополнете ја IP адресата на slave машината во полето „Address“. Пополнете „24“ во полето „Netmask“. Пополнете го сегментот на IP мрежата во „Gateway“. Променете ги последните три цифри од сегментот на IP мрежата во „1“. Главната цел на овој чекор е да се поправи IP адресата. Откако ова ќе се заврши за прв пат, IP адресата ќе остане непроменета кога последователно ќе се поврзете на истиот WIFI.
Откако ќе се конфигурираат сите поставки, кликнете „зачувај“ за да ги зачувате поставките. Откако зачувувањето е успешно, роботот автоматски ќе се поврзе со мрежата на домаќинот или рутерот кога ќе се вклучи.
Забелешка:
- IP адресата поставена овде треба да биде иста со IP адресата поставена во датотеката .bashrc во Дел 2.1.
- IP адресата на господарот и секој slave мора да биде единствена.
- Главните и slave IP-адресите треба да бидат во истиот мрежен сегмент.
- Мора да почекате домаќинот или рутерот да испратат сигнал за WiFi пред да може да се вклучи робот-робот и автоматски да се поврзе на мрежата WiFi.
- Откако ќе се конфигурира поставката, ако роботот не може автоматски да се поврзе со WiFi кога е вклучен, приклучете ја и исклучете ја мрежната картичка и обидете се повторно да се поврзете.
Автоматско поставување Wi-Fi конекција за Raspberry Pi
Постапката за Raspberry Pi е иста како и Jetson Nano.
Автоматско поставување Wi-Fi конекција за Jetson TX1
Поставувањето во Jetson TX1 е речиси исто како кај Jetson Nano со еден исклучок Jetson TX1 треба да го избере уредот „wlan1“ во „Уред“ во контролната табла за мрежните поставки.
ПОСТАВУВАЊЕ НА ПОВЕЌЕ АГЕНТСКА СИНХРОНИЗАЦИЈА
Во проектот за формирање на повеќе агенти, поставката за синхронизација на време со повеќе агенти е клучен чекор. Во процесот на формирање ќе бидат предизвикани многу проблеми поради асинхроното системско време на секој робот. Синхронизацијата на времето со повеќе агенти е поделена на две ситуации, имено, ситуација во која и главниот и робот робот се поврзани на мрежата и ситуацијата во која и двата се исклучени од мрежата.
Успешна мрежна конекција на господар/слеј
Откако ќе се конфигурира комуникацијата со повеќе агенти, ако главните и slave машините можат успешно да се поврзат на мрежата, тие автоматски ќе го синхронизираат мрежното време. Во овој случај, не се потребни дополнителни активности за да се постигне временска синхронизација.
Решавање проблеми со мрежните исклучувања
Откако ќе се конфигурира комуникацијата со повеќе агенти, ако главниот и slave уредите не можат успешно да се поврзат на мрежата, потребно е рачно да се синхронизира времето. Ќе ја користиме командата датум за да го завршиме поставувањето на времето.
Прво, инсталирајте ја алатката терминатор. Од алатката терминатор, користете ја алатката за разделување на прозорци за да ги поставите контролните терминали на главниот и slave во истиот терминален прозорец (кликнете со десното копче за да поставите поделен прозорец и најавете се на главните и slave машините со ssh во различни прозорци) .
- sudo apt-get install terminator # Преземете го терминаторот за да го разделите терминалниот прозорец
Кликнете на копчето горе лево, изберете ја опцијата [Емитува на сите]/[Емитува сè] и внесете ја следнава команда. Потоа користете ја алатката терминатор за да поставите исто време за господарот и робот.
- sudo date -s „2022-01-30 15:15:00“ # Рачно поставување на времето
МУЛТИ-АГЕНТСКИ РОС ПАКЕТ
Вовед во пакет ROS
Поставете име на роб
Во пакетот на функции wheeltec_multi, неопходно е да се постави единствено име за секој робот-роб за да се избегнат грешки. За прample, No. За прample, радарската тема на slave 1 е/slave1/scan, а LiDAR јазолот на slave 1 е/slave1/laser.
Поставете робови координати
Пакетот wheeltec_multi може да имплементира сопствени формации. Кога се потребни различни формации, само изменете ги саканите координати на роботите-робови. Slave_x и slave_y се x и y координатите на slave со master како оригинална референтна точка. Предниот дел на главниот е позитивната насока на координатата x, а левата страна е позитивната насока на координатата y. Откако ќе се заврши поставувањето, ќе се издаде TF координатен slave1 како очекувана координата на slave. Ако има еден господар и два робови, може да се постави следната формација:
- Хоризонтална формација: можете да ги поставите координатите на slave лево на slave_x:0, slave_y: 0.8, а координатите на slave од десната страна на slave_x:0, slave_y:-0.8.
- Формирање колона: Координатите на еден slave може да се постават на: slave_x:-0.8, slave_y:0, а координатите на другиот slave може да се постават на: slave_x:-1.8, slave_y:0.
- Формирање на триаголник: Координатите на едниот роб може да се постават на: slave_x:-0.8, slave_y: 0.8, а координатите на другиот slave може да се постават на: slave_x:-0.8, slave_y:-0.8.
Други формации може да се прилагодат по потреба.
Забелешка:
- Препорачаното растојание помеѓу двата роботи е поставено на 0.8, а се препорачува да не биде пониско од 0.6. Растојанието помеѓу робовите и господарот се препорачува да се постави под 2.0. Колку е подалеку од господарот, толку е поголема линеарната брзина на slave кога господарот се врти. Поради ограничувањето на максималната брзина, брзината на slave ќе отстапи доколку не ги исполнува барањата. Формацијата на роботот ќе стане хаотична.
Иницијализирање на позицијата роб
- Почетната позиција на робот е стандардно на очекуваните координати. Пред да ја стартувате програмата, само поставете го роботот блиску до очекуваните координати за да ја завршите иницијализацијата. Оваа функција е имплементирана од јазолот pose_setter во датотеката со име turn_on_wheeltec_robot.launch во пакетот wheeltec_multi, како што е прикажано на Слика 4-1-3.
Ако корисникот сака да ја приспособи почетната позиција на slave, тој или таа треба само да ги постави вредностите slave_x и slave_y како што е прикажано на Слика 4-1-4 во wheeltec_slave.launch. Вредностите slave_x и slave_y ќе бидат предадени на turn_on_wheeltec_robot.launch и доделени на јазолот pose_setter. Само поставете го роботот во сопствена положба пред да ја стартувате програмата.
Конфигурација на позиција
Во формацијата со повеќе агенти, првиот проблем што треба да се реши е позиционирањето на господарот и робот. Мајсторот прво ќе конструира 2Д мапа. Откако ќе ја креирате и зачувате мапата, стартувајте го пакетот за 2D навигација и користете го приспособливиот алгоритам за позиционирање на Монте Карло (позиционирање amcl) во пакетот за навигација 2D за да го конфигурирате позиционирањето на главниот. Бидејќи господарот и робовите се во иста мрежа и го делат истиот менаџер на јазли, господарот ја лансираше мапата од пакетот за навигација 2D, сите робови можат да ја користат истата карта под истиот менаџер на јазли. Затоа, робот нема потреба да креира карта. Во wheeltec_slave.launch, извршете го позиционирањето во Монте Карло (позиционирање amcl), робовите можат да ги конфигурираат своите позиции користејќи ја мапата создадена од господарот.
Како да се создаде формација и да се одржи формацијата
Во процесот на формирање движење, главното движење може да се контролира со Rviz, тастатура, далечински управувач и други методи. Slave ја пресметува својата брзина преку јазолот slave_tf_listener со цел да го контролира неговото движење и да ја постигне целта на формацијата. Јазолот slave_tf_listener ја ограничува slave брзината за да избегне прекумерна брзина со пресметување на јазолот, што ќе предизвика низа влијанија. Специфичната вредност може да се измени во wheeltec_slave.launch.
Релевантните параметри на алгоритмот за формирање се како што следува:
Информации за избегнување пречки
Во формација со повеќе агенти, господарот може да го користи јазолот move_base за да го комплетира избегнувањето на пречките. Сепак, иницијализацијата на робот не го користи јазолот move_base. Во овој момент, јазолот multi_avoidance треба да се повика во slave програмата. Јазолот за избегнување пречки е стандардно овозможен во пакетот. Доколку е потребно, избегнувањето може да се постави на „неточно“ за да се оневозможи јазолот за избегнување пречки.
Некои релевантни параметри на јазолот за избегнување препреки се прикажани на сликата подолу, каде што safe_distance е граница на безбедно растојание на препреката, а danger_distance е ограничување на опасното растојание на препреката. Кога пречката е на безбедно растојание и растојание на опасност, робот ја прилагодува својата позиција за да ја избегне пречката. Кога пречката е во опасност, робот ќе се оддалечи од пречката.
Процедура за работа
Внесете команда за извршување
Подготовки пред да се започне со формирање на повеќе агенси:
- Master и slave се поврзуваат на истата мрежа и правилно ја поставуваат комуникацијата со повеќе агенти
- Мајсторот однапред создава 2Д мапа и ја зачувува
- Господарот е поставен на почетната точка на картата, а робот е поставен во близина на позицијата за иницијализација (стандардна позиција за формирање роб)
- Откако ќе се најавите на 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.лансирање
- Чекор 3: Отворете го контролниот јазол на тастатурата од главниот или користете го џојстикот за далечинско управување со главното движење.
повторно стартувај wheeltec_robot_rc keyboard_teleop.launch
- Чекор 4: (Изборно) Набљудувајте ги движењата на роботот од Rviz.
rviz
Забелешка:
- Погрижете се да ја завршите операцијата за синхронизација на времето пред да ја извршите програмата.
- Кога се контролира господарот на формација со повеќе агенси, аголната брзина не треба да биде пребрза. Препорачаната линеарна брзина е 0.2 m/s, аголна брзина под 0.3 rad/s. Кога господарот прави вртење, колку подалеку е робот од господарот, толку е потребна поголема линеарна брзина. Поради ограничувањето на линеарната брзина и аголната брзина во пакетот, кога робот автомобил не може да ја достигне потребната брзина, формацијата ќе биде хаотична. Генерално, прекумерната линеарна брзина лесно може да го оштети роботот.
- Кога бројот на slaves е повеќе од еден, поради ограничениот пропусен опсег на ROS-домаќинот на одборот, лесно е да се предизвикаат значителни одложувања и исклучување на комуникацијата со повеќе агенти. Користењето на рутер може добро да го реши овој проблем.
- TF дрвото на формацијата со повеќе роботи (2 роботи) е: rqt_tf_tree
- Дијаграмот за врска со јазлите на формацијата со повеќе роботи (2 роботи) е: rqt_graph
Документи / ресурси
![]() |
ROBOWORKS Robofleet МУЛТИ-АГЕНТСКИ АЛГОРИТМИ [pdf] Упатство за користење Robofleet повеќе агенти алгоритми, Robofleet, алгоритми повеќе агенти, алгоритми за агенти, алгоритми |