Съдържание:

Localino Tracks Roomba IRobot, Картира околната среда и позволява контрол: 4 стъпки
Localino Tracks Roomba IRobot, Картира околната среда и позволява контрол: 4 стъпки

Видео: Localino Tracks Roomba IRobot, Картира околната среда и позволява контрол: 4 стъпки

Видео: Localino Tracks Roomba IRobot, Картира околната среда и позволява контрол: 4 стъпки
Видео: Our Most Advanced Robot Vacuum Yet | Roomba® s series| iRobot® 2024, Юли
Anonim
Image
Image

За да изградите WiFi-UART моста, можете да проверите това github репо:

Има добра основа за начало. Уверете се, че сте прочели добре ръководството, защото Roomba VCC по време на зареждане увеличава до 20 волта! Ако добавите ESP8266 без подходящ доларов конвертор, който работи дори до 20V и понижава преобразуването до 3.3V, ще повредите вашия ESP.

Също така не забравяйте да използвате превключвател на нивата (например с помощта на делител на напрежение), за да изместите 5V UART логическите нива от Roomba на 3.3V, които се използват от ESP.

Друг важен детайл е, че доларовият преобразувател трябва да има 300mA, но много по -малко или много повече (в зависимост от самия конвертор). Има някои, които могат да направят много повече ток, но причиняват срив на Roomba, защото те черпят твърде много ток по време на стартиране. Разбрахме, че регулаторът на понижаващо напрежение Pololu 3.3V, 300mA (D24V3F3) работи просто перфектно. Алтернативните версии, които имат 500mA / 600mA, доведоха до срив на интерфейса на Roomba UART. По принцип Roomba реагира на натискане на бутон, но не и на команди чрез интерфейса UART. След като това се случи, трябваше да извадим батерията на Roomba и да рестартираме Roomba на студено с монтиран WiFi-UART мост. Само D24V3F3 обаче работи добре.

Освен тези технически подробности, трябва да добавите допълнителни команди към кода, които можете да намерите в спецификациите на отворения интерфейс на Roomba. Ще трябва да добавите всички команди, на които искате вашата roomba да реагира (например назад, напред, скорост и т.н.).

примери в arduino IDE:

void goForward () {char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print (c); }

void goBackward () {char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print (c); }

void spinLeft () {char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print (c); }

void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print (c); }

ако пишете на lua, изглежда малко по -различно, пример за ляв завой ще изглежда така:

ако (_GET.pin == "НАЛЯВО") след това отпечатайте ('\ 137'); -ВОР

tmr.delay (100);

print ('\ 00'); -Скорост = 200 = 0x00C8 -> 0 и 200

tmr.delay (100);

print ('\ 200'); - Скорост

tmr.delay (100);

print ('\ 254'); - Радиус = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay (100);

print ('\ 12'); - Обърни се

край

Уверете се, че трябва да коригирате отвореното описание на интерфейса за вашата Roomba. Налични са поне две спецификации на отворен интерфейс.

за серия Roomba 5xx:

за серия Roomba 6xx:

След като изградите своя WiFi-UART мост и тествате командите, направихте голяма крачка напред. Това видео показва, че приложението и подходът работят. Бяхме малко мързеливи, на уеб интерфейса липсват всички други команди за управление, като напред, назад, скорост, надясно, наляво и така нататък, но можете да издавате командите чрез http. Както и да е, това е само демонстрация, че дистанционното управление на Roomba работи с лесен хардуер и софтуер, използвайки ESP8266.

Тъй като можете да контролирате Roomba дистанционно от компютърно приложение, единственото нещо, което липсва, е локализацията на закрито. Нуждаем се от това, за да затворим цикъла за обратна връзка, защото нашата цел беше да насочим робота в определена посока. Да го направим.

Стъпка 3: Настройте вашата система за локализиране на закрито

За да затворим веригата за обратна връзка, използваме вътрешна локализационна система. Използваме Localino за това. Системата Localino се състои от „котви“и „тагове“. Котвите са разположени на фиксирани места в помещението и локализират позицията на подвижния етикет (който се поставя върху Roomba). Обработката на местоположението се извършва в компютърно приложение. Това е от голямо предимство, защото можете също да управлявате Roomba от същия компютър! Наличен е безплатен изходен код от уебсайта Localino, той е написан на python, а има и поток в реално време, който предлага XYZ координатите на маркера. Потокът от данни е достъпен чрез UDP мрежа, но можете също да добавите MQTT или други фантастични неща, които харесвате. Ако познавате Python, има куп библиотеки, които ви помагат.

В това видео е показано локализирането на Roomba. Следователно имаме 4 котви в стаята на фиксирани места, които позволяват 3D позициониране на Roomba. Като цяло бихме искали само 3 котви, тъй като Roomba вероятно няма да се движи по оста Z, следователно 2D би било достатъчно. Но тъй като анкерите са разположени на височината на главния щепсел на променлив ток (което е приблизително 30 см над земята), 2D настройката би причинила малки грешки при оценката на позицията. Затова решихме да имаме 4 котви и да ги локализираме в 3D.

След като имаме позицията на Roomba, следващата ни стъпка е да контролираме Roomba от същото приложение. Идеята е да се използва земната истина и да се изчисли перфектният път за почистване на робота. С помощта на Localino можем да затворим цикъла за обратна връзка и да управляваме робота от компютърното приложение.

Забележки за настройката

Поставете котвите Localino в стаята в различни позиции x, y и три от тях в една и съща позиция z. Поставете една от четирите котви на различна височина z на стая. Уверете се, че има добро покритие от маркера Localino, който ще се движи с Roomba.

Всички котви имат уникален идентификатор на котва, който се показва на баркода на Localino и може да бъде прочетен с инструмента „localino configuration“.

Забележете позициите в X, Y, Z и идентификационните номера на котвата. Това е необходимо за софтуера за локален процесор и трябва да се адаптира във файла „localino.ini“в папката „LocalinoProcessor“

Котвите трябва да сочат нагоре или надолу в Z (когато зоната XY е покрита), но не и в посоката на покритата зона. Котвите също не трябва да бъдат покрити с метал или друг материал, нарушаващ безжичния сигнал. Ако това не е възможно, трябва да има и известна въздушна междина между всеки материал и котвата.

…има още.

Стъпка 4: Адаптирайте софтуера Python

следете. има още.

Препоръчано: