Hrvatsko društvo za robotiku - Uvod u robotiku - vježbe

Nevolje

Cilj

Cilj ove stranice je uštedjeti vrijeme i živce, izbjegavajući najčešće greške i koristeći jednostavna rješenja.

Ne dirajte nepoznato

Najveći problem koji vreba u ovom tečaju je komplicirani kod, dio koji ne mijenjate. Nehotična promjena će biti uzrokom potencijalno vrlo teško, za početnika, rješivih problema.

Posljedica je prvi savjet: ne dirajte nikakav kod van ovih uputa dok ne naučite dovoljno.

Postepeno

Razvijajte kod polako. Upišite 10 linija koda, ili i manje, pa kompajlirajte, da budete sigurni.

Izbjegavajte duge skokove. Ako napišete puno koda, pogotovo na više mjesta, postoji prilična vjerojatnost da poruka greške neće biti dovoljno slikovita za pronalaženje uzroka.

Poništi

×
Jedna od najkorisnijih kratica koju je moguće zapamtiti, bilo da se radi o programiranju, unosu teksta u tekst procesor, ili neki drugi program, jest "undo" - poništi. Može se birati iz menija: "Edit" - "Undo" ili se koristi opisana kratica: "Ctrl-Z" (drži se pritisnut "Ctrl" i pritisne se "Z").

Tok zbivanja bi bio kako slijedi.
  1. Programirate.
  2. Kompajlirate i Arduino IDE javi grešku.
  3. Pritisnete "Ctrl-Z", jednom ili više puta.
  4. Kompajlirate. Ako više nema greške, gotovi ste.
  5. Ako je greška i dalje prisutna, vratite se na korak 3.
Ova će Vas procedura vratiti na zadnju verziju ispravnog koda. Sljedeća promjena je bila greška. Možete ju dobiti korištenjem "Ctrl" - "Y", naredbom "redo", suprotnom od "undo".

Pazite, izlaskom iz Arduino IDE okoline se onemogućava povratak - "undo" više neće raditi kad ga opet pokrenete. Zato, prije nego što zatvorite Arduino IDE, budite sigurni da je program bez greške.
×
Jedna od najkorisnijih kratica koju je moguće zapamtiti, bilo da se radi o programiranju, unosu teksta u tekst procesor, ili neki drugi program, jest "undo" - poništi. Može se birati iz menija: "Edit" - "Undo" ili se koristi opisana kratica: "Ctrl-Z" (drži se pritisnut "Ctrl" i pritisne se "Z").

Tok zbivanja bi bio kako slijedi.
  1. Programirate.
  2. Kompajlirate i VS Code javi grešku.
  3. Pritisnete "Ctrl-Z", jednom ili više puta.
  4. Kompajlirate. Ako više nema greške, gotovi ste.
  5. Ako je greška i dalje prisutna, vratite se na korak 3.
Ova će Vas procedura vratiti na zadnju verziju ispravnog koda. Sljedeća promjena je bila greška. Možete ju dobiti korištenjem "Ctrl" - "Y", naredbom "redo", suprotnom od "undo".

Pazite, izlaskom iz VS Code okoline se onemogućava povratak - "undo" više neće raditi kad ga opet pokrenete. Zato, prije nego što zatvorite VS Code, budite sigurni da je program bez greške.

Poništavanje radi i u Arduino IDE okolini.

Backup

Otvorite direktorij na Vašem disku u koji ćete spremati ispravne backup kopije svakih nekoliko dana.

Ne pomogne li ništa drugo, vratite ("restore") posljednju ispravnu verziju. Izgubit ćete nekoliko dana rada, ali ne nekoliko mjeseci ili i više.

Nemojte čuvati samo posljednju verziju, nego sve. Postoji mogućnost da grešku otkrijete tek nakon više ciklusa spremanja. U tom času je posljednja kopija beskorisna.

Napon

Pratite napon baterije.

Preniski napon uzrokuje čudne probleme. Može Vam uzeti dosta vremena proučavanje istih jer program odjednom počne raditi čudno i teško je dokučiti zašto, dok ne pogledate voltmetar.

LiPo baterija od 3 članka ima napon od 11.1 V. Više od toga, kad je potpuno puna. Kad napon padne ispod 10 V, morate napuniti bateriju.

Ako pustite napon da se spusti jako nisko, npr. na 3 - 4 V, dobra je vjerojatnost da će nakon punjenja raditi samo 2 od 3 ćelije. Bateriju ćete moći odložiti u reciklažno dvorište.

Sunce

Sunce nije Vaš prijatelj.

Vidljivi spektar nije toliki problem, ali infracrveni jest.

Čak i jako indirektno svjetlo može nadjačati LE diode reflektivnih senzora. Rezultat je teško praćenje linije.

Slično kao i slučaju napona, robot koji je radio dobro, se odjednom počne čudno ponašati.

Provjerite nije li došao sunčaniji dio dana. Ako jest, spustite rolete.

Git (samo VS Code)

×
Još puno bolje rješenje od prethodnog je Git, program i web, koji omogućavaju spremanje svih promjena i lak povratak u bilo koju prethodnu verziju. Možete ga smatrati super-Ctrl-Y rješenjem.

Nećemo ulaziti u detalje, ali vrlo je preporučljivo proučiti kako radi.

Način na koji VS Code koristi Git je, za razliku od niza drugih programa, jednostavan i odličan.

Git ne postoji u Arduino IDE okolini.

Test otpornosti

Naučit ćete uskoro kako izdavati naredbe robotu. Naredba "all" će izvršiti dugotrajni test svih dijelova robota. Ispisivat će se postotak napretka na ekranu računala i na 8x8 displeju robota. Ako test zapne, isključite jedan ili više uređaja s CAN Bus-a (povezuje sve jedinice putem 4-žilnog kabla). Testirajte opet. Ponavljajte dok ne locirate kabel ili uređaj koji stvara probleme.

Unicode

Dosta je česta razvojna okolina prijavi grešku koja izgleda kao "...stray '\173' in program...". "173" može biti neki neki drugi broj.

Riječ je o Unicode kodu znaka koji kompajler nije mogao prevesti.

Obično su 2 izvora neželjenih znakova:
  • slučajno ste otipkali par znakova, često ne znajući da je otvoren prozor radne okoline,
  • postoji skriveni znak, obično na početku datoteke, ali može biti i bilo gdje u datoteci.
Probajte prvo Ctrl-Z. Ako su slučajno otipkani znakovi posljednje što ste učinili, i niste zatvorili radnu okolinu, riješit ćete problem.

U protivnom, nađite red u kojem je greška i obrišite suvišne znakove.

Najteži je problem kad se znakovi ne vide. Radna okolina javlja grešku u redu koji izgleda potpuno točno napisan.

Obrišite cijeli red i natipkajte ga opet. Nemojte ga kopirati, nego baš tipkajte.

Želite li vidjeti skrivene znakove, otvorite datoteku u editoru koji ih može prikazati, npr. Notepad++, i zadajte mu da ispiše sve skrivene znakove.

USB

USB je krhka veza.

Relativno su česti problemi s Windowsima, ali broj 1 krivac je kabel ili konektori.

Kad ne vidite robota na popisu USB jedinica, neumorno mijenjajte kablove. Čak ako Vam je sve radilo s jednim kablom, ne znači da će se to opet dogoditi.

Kad neđete kabel koji funkcionira, ne mijenjate ga.

Problem je što postoji puno vrsta kablove s lošim konektorim.

CAN Bus

CAN Bus je sistem koji žicama povezuje razne pločice u robotu. Svaka pločica ima bar jednu CAN Bus adresu. Displej po uključivanju robota ispiše broj jedinica.

Bitno je da adrese jedinica idu po redu, od nule naviše. Ako to nije slučaj, robot neće naći neke jedinice i neće raditi ispravno. Pogledajte na terminalu (npr. Arduino Monitor) ispisuje li se greška "CAN gap". Ako je to slučaj, adrese imaju rupu.

Kako biste ispisali adrese jedinica, koristite naredbu "can". Ako postoji rupa, uočit ćete ju.

Rupu ispravljate naredbom "idc". Mijenjajte adrese, sve dok rupa ne nestane.

CAN Bus automatski daje adrese novim jedinicama, tako da svaka dobije svoju jedinstvenu. Kad se adrese rasporede, dobro je izvršiti naredbu, "pof" (PnP off). Nakon toga je plug and play isključen i adrese se više neće mijenjati. Želite li vratiti plug and play funkcionalnost, upotrijebite naredbu "pon" (PnP on). Za mogućnost promjene morati imati noviji firmware.

Crna linija

Praćenje linije je lakše kad linija odbija što manje svjetlosti i kad je široka.

Štampane linije, u arenama koje se isporučuju u okviru ovih vježbi, su relativno uske i odbijaju više svjetlosti pa su zahtjevnije.

Pazite, bitno je koliko odbijaju infracrvene svjetlosti, ne vidljivog spektra, jer senzor gleda samo taj dio spektra. Crta, koja je naoko crna, ne mora uopće biti takva u infracrvenom dijelu spektra.

Smanjite brzine što više u slučaju problema.

Dobro je olakšanje nalijepiti crnu izolir-traku preko štampane crne linije.

Možete nagnuti senzor linije jer osjetljivost pada otklonom od 90°.

Možete tražiti dobavljača hardvera da promijeni otpornike koji ograničavaju struju LE dioda. Što su otpornici veći, struja će biti manja i LEDovi će davati manje svjetla, onemogućavajući zasićenje fototranzistora.

Kalibracija

Neki senzori zahtijevaju kalibraciju. Testirajte senzor. Ako ne daje očekivane rezultate, pokušajte ga kalibrirati.

Senzori podložni kalibraciji slijede.
  • Reflektivni senzor podloge s više tranzistora. Probajte naredbu "dgr" dok je senzor iznad crne linije na bijeloj podlozi. Ako jedinice ne označavaju jednoznačno liniju, pokrenite "cal". Testirajte opet putem "dig".
  • Lidar 2m. Pokrenite naredbu "lic", upišite "2" (za 2m) i potom CAN Bus adresu lidara. Adrese dobijete naredbom "can".
  • Lidar 4m. U principu ga ne treba kalibrirati, ako je inicijalno kalibriran, stanje kakvo je nakon proizvodnje. Ako slučajno pokrenete novu kalibraciju u uvjetima koji nisu idealni, senzor će izgubiti postavke i neće više točno mjeriti. Postavite sivu podlogu na 140 mm od senzora, pokrenite "lic", upišite "4" (za 4m), potom broj lidara. Slično kao za kalibraciju 2m lidara. Adrese možete dobiti naredbom "can".

Primjedbe



Projekt "Uvod u robotiku" sufinanciran je iz Europskog socijalnog fonda, poziv "Jačanje kapaciteta organizacija civilnoga društva za popularizaciju STEM-a". Relevantne stranice: Sadržaj vježbe za virtualne radionice isključiva je odgovornost Hrvatskog društva za robotiku.