Satura rādītājs:

Localino izseko Roomba IRobot, kartē vidi un ļauj kontrolēt .: 4 soļi
Localino izseko Roomba IRobot, kartē vidi un ļauj kontrolēt .: 4 soļi

Video: Localino izseko Roomba IRobot, kartē vidi un ļauj kontrolēt .: 4 soļi

Video: Localino izseko Roomba IRobot, kartē vidi un ļauj kontrolēt .: 4 soļi
Video: Mario + Rabbids Kingdom Battle - Easy Allies Review 2024, Novembris
Anonim
Image
Image

Lai izveidotu WiFi-UART tiltu, varat pārbaudīt šo github repo:

Sākumam tam ir jauks pamats. Noteikti izlasiet vadlīnijas, jo Roomba VCC uzlādes laikā palielinās līdz 20 voltiem! Ja pievienosit ESP8266 bez atbilstoša buck-converter, kas darbojas pat līdz 20 V un pārvērš līdz 3.3 V, jūs sabojāsit savu ESP.

Noteikti izmantojiet arī līmeņa pārslēdzēju (piemēram, izmantojot sprieguma dalītāju), lai pārvietotu 5V UART loģikas līmeņus no Roomba uz 3.3V, ko izmanto ESP.

Vēl viena svarīga detaļa ir tāda, ka buks pārveidotājam vajadzētu būt 300 mA, bet daudz mazāk vai daudz vairāk (atkarībā no paša buks pārveidotāja). Ir daži, kas var radīt daudz lielāku strāvu, bet var izraisīt Roomba avāriju, jo tie iedarbina pārāk daudz strāvas palaišanas laikā. Mēs noskaidrojām, ka Pololu 3.3V, 300mA pazemināmā sprieguma regulators (D24V3F3) darbojas vienkārši perfekti. Alternatīvās versijas ar 500mA / 600mA izraisīja Roomba UART saskarnes avāriju. Būtībā Roomba reaģēja uz pogas nospiešanu, bet ne uz komandām, izmantojot UART saskarni. Kad tas notika, mums bija jāizņem Roomba akumulators un auksti jārestartē Roomba ar pievienotu WiFi-UART tiltu. Tomēr tikai D24V3F3 strādāja labi.

Papildus šai tehniskajai detaļai kodam jāpievieno papildu komandas, kuras varat atrast Roomba atvērtās saskarnes specifikācijās. Jums būs jāpievieno visas komandas, uz kurām vēlaties, lai jūsu roomba reaģētu (piemēram, atpakaļ, uz priekšu, ātrumu utt.).

piemēri 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}; Sērijas nospiedums (c); }

void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Sērijas nospiedums (c); }

ja rakstāt lua valodā, tas izskatās nedaudz savādāk, pagrieziens pa kreisi varētu izskatīties šādi:

ja (_GET.pin == "LEFT"), tad izdrukā ('\ 137'); -VOR

tmr.delay (100);

drukāt ('\ 00'); -Ātrums = 200 = 0x00C8 -> 0 un 200

tmr.delay (100);

drukāt ('\ 200'); - Ātrums

tmr.delay (100);

drukāt ('\ 254'); - rādiuss = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay (100);

drukāt ('\ 12'); - Pagriezieties

beigas

Pārliecinieties, vai Roomba atvērtā interfeisa apraksts ir jālabo. Ir pieejamas vismaz divas atvērtās saskarnes specifikācijas.

Roomba 5xx sērijai:

Roomba 6xx sērijai:

Kad esat izveidojis savu WiFi-UART tiltu un pārbaudījis komandas, ko veicāt, soli tālāk. Šis video parāda, ka lietojumprogramma un pieeja darbojas. Mēs bijām nedaudz slinki, tīmekļa saskarnē trūkst visu pārējo vadības komandu, piemēram, uz priekšu, atpakaļ, ātruma, pa labi, pa kreisi un tā tālāk, bet jūs varat izdot komandas, izmantojot http. Jebkurā gadījumā tas ir tikai pierādījums tam, ka Roomba tālvadības pults darbojas ar vienkāršu aparatūru un programmatūru, izmantojot ESP8266.

Tagad, kad jūs varat attālināti vadīt savu Roomba no datora lietojumprogrammas, trūkst tikai iekštelpu lokalizācijas. Tas ir nepieciešams, lai aizvērtu atgriezenisko saiti, jo mūsu mērķis bija virzīt robotu noteiktā virzienā. Darām to.

3. darbība: iestatiet iekštelpu lokalizācijas sistēmu

Lai aizvērtu atgriezenisko saiti, mēs izmantojam iekštelpu lokalizācijas sistēmu. Šim nolūkam mēs izmantojam Localino. Localino sistēma sastāv no "enkuriem" un "tagiem". Enkuri ir novietoti fiksētās vietās telpas iekšpusē un atrod kustīgās birkas (kas novietota uz Roomba) pozīciju. Atrašanās vietas apstrāde tiek veikta datora lietojumprogrammā. Tam ir liela priekšrocība, jo jūs varat arī kontrolēt Roomba no tā paša datora! Vietnē Localino ir pieejams bezmaksas avota kods, tas ir rakstīts python, un ir pieejama arī reāllaika straume, kas piedāvā taga XYZ koordinātas. Datu plūsma ir pieejama, izmantojot UDP tīklu, taču varat pievienot arī MQTT vai citas izdomātas lietas, kas jums patīk. Ja jūs zināt Python, jums ir daudz bibliotēku, kas jums palīdz.

Šajā video ir parādīta Roomba lokalizācija. Tāpēc mums telpā ir uzstādīti 4 enkuri fiksētās vietās, kas ļauj Roomba 3D pozicionēt. Kopumā mums būtu nepieciešami tikai 3 enkuri, jo Roomba, iespējams, nepārvietosies Z asī, tāpēc pietiek ar 2D. Bet, tā kā enkuri atrodas maiņstrāvas galveno kontaktdakšu augstumā (kas ir aptuveni 30 cm virs zemes), 2D iestatīšana radītu mazas atrašanās vietas novērtēšanas kļūdas. Tāpēc mēs nolēmām iegūt 4 enkurus un lokalizēties 3D formātā.

Tagad, kad mums ir Roomba pozīcija, mūsu nākamais solis ir kontrolēt Roomba no tās pašas lietojumprogrammas. Ideja ir izmantot patiesību un novērtēt robota perfektu tīrīšanas ceļu. Izmantojot Localino, mēs varam aizvērt atgriezenisko saiti un vadīt robotu no datora lietojumprogrammas.

Iestatīšanas piezīmes

Novietojiet Localino enkurus telpā dažādās x, y pozīcijās un trīs no tiem vienā un tajā pašā z pozīcijā. Novietojiet vienu no četriem enkuriem citā augstumā z katrā istabā. Pārliecinieties, vai ir labs pārklājums no Localino taga, kas tiks pārvietots kopā ar Roomba.

Visiem enkuriem ir unikāls enkura ID, kas tiek parādīts Localino svītrkodā un ko var nolasīt, izmantojot rīku “localino configuration”.

Ievērojiet pozīcijas X, Y, Z un enkura ID. Tas ir nepieciešams Localino procesora programmatūrai, un tas ir jāpielāgo mapē “LocalinoProcessor” esošajā failā “localino.ini”.

Enkuriem jābūt vērstiem uz augšu vai uz leju Z (ja XY zona ir pārklāta), bet ne segtās zonas virzienā. Arī enkurus nedrīkst pārklāt ar metālu vai citiem bezvadu signālu traucējošiem materiāliem. Ja tas nav iespējams, starp jebkuru materiālu un enkuru jābūt arī noteiktai gaisa spraugai.

… Gaidāms vēl.

4. darbība: pielāgojiet Python programmatūru

sekojiet līdzi. vēl būs.

Ieteicams: