Sadržaj:

Robot sa 4 pogona koji se pokreće putem udaljenog USB gamepada: 6 koraka
Robot sa 4 pogona koji se pokreće putem udaljenog USB gamepada: 6 koraka

Video: Robot sa 4 pogona koji se pokreće putem udaljenog USB gamepada: 6 koraka

Video: Robot sa 4 pogona koji se pokreće putem udaljenog USB gamepada: 6 koraka
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Studeni
Anonim
Image
Image

Za moj sljedeći projekt robotike, bio sam prisiljen arhitektonski osmisliti/dizajnirati vlastitu robotsku platformu zbog nepredviđenih okolnosti.

Cilj je učiniti ga autonomnim, ali prvo sam morao testirati njegove osnovne vozačke sposobnosti, pa sam pomislio da bi bio zabavan sporedni projekt ponašati se i biti kontroliran kao da je to RC (radio-upravljano) vozilo, nego umjesto toga upotrijebite USB gamepad.

Rezultati su bili otprilike dobri ili bolji nego što sam očekivao.

Prednost kretanja putem USB gamepada s mnogo programiranja je to što ga mogu prilagoditi i dodati onome što sam već učinio. Nemam nikakvog iskustva u izgradnji RC vozila, ali zamišljam da je prilično zaglavljeno bez obzira na to što dolazi s daljinskim upravljačem (upravljačke palice/tipke itd.) I RC prijamnikom.

Na primjer, dodao sam da je robot udario u zid, samo tako što je softver otkrio velike struje i niske vrijednosti brzine davača.

Po želji, robotu se može dodati nekoliko USB web kamera, ovisno o broju i njihovom položaju, robota se može voziti po dnevnom boravku i u drugu sobu, dok sjedi negdje drugdje ispred računala na koje je priključen USB gamepad to.

Ovaj Instructable neće biti istinit, detaljan, all inclusive, korak-po-korak upute, ali pokušat ću dati što više detalja.

Pribor

Predloženi dijelovi: Većinu toga nabavio sam u Servo Cityju (Actobotics).

2 - 13,5 U -kanala, za stranice osnovnog okvira. Motori su montirani na ovo. Ja sam otišao s nečim kraćim, a moji su motori montirani na samim uglovima, što je otežavalo njihovo postavljanje.

2 - 12 U -kanala za prednju i stražnju stranu okvira baze.

2 - 15 U -kanali za odbojnike, sprijeda i straga

2 - 7 (ili je to bilo 7,5 ?) U -kanala za prednje stupove. To nije previše važno, duljine se mogu razlikovati. Ovisi koliko su visoki stražnji stupovi i na koju visinu odlučite postaviti kutne stupove U-kanal koji se povezuje između njih.

2-(duljina?) U-kanali za kutni element, sprijeda prema natrag, koji povezuju uspravne stupove. Ovo je kritično, jer Servo City / Actobotics u tu svrhu prodaje ploče ili zagrade pod kutom od 45 stupnjeva, ali morat ćete provesti matematiku / trigovanje kako biste bili sigurni da dobivate ispravne duljine.

2-(duljina?) U-kanala koji služe kao bočni odbojnici više razine, opet ovise o tome što radite s bazom

2-(duljina?) U-kanali koji služe kao prednji i stražnji odbojnici više razine, isto kao gore navedeno.

1 - (duljina?) U -kanal koji služi kao najviši član, proteže se preko stražnjih stupova. Ovo možda nije previše kritično jer se možete montirati na vrh ili ispred / iza uspravnih stupova.

12 (približno) L-kanala ili zagrada. Oni služe za više namjena, ali u osnovi pružaju strukturni integritet/čvrstoću uglovima osnovnog okvira I uspravnim stupovima.

4 (+?) Ravnih kanala s 3 rupe do 5 rupa. Oni također robotu pružaju strukturnu čvrstoću.

ServoCity prodaje dvije glavne vrste ravnih panela velikih površina, korisnih za upotrebu kao donje proklizavanje ili gornje mjesto kamo bi vaša baterija i / ili kontroleri išli, ili čak za više površine za senzore.

Postoji ploča od 4 (4,5?) "X 12", a mislim da je druga ploča od 9 (9,5?) "X 12.

Ovdje stvari postaju zanimljive, a mogu biti i zbunjujuće i skupe (mali dijelovi se zbrajaju). Svi kanali itd. Mogu se međusobno spojiti putem ovih spojnih dijelova, kojih ima nekoliko. Ovdje mi je žao što nemam sveobuhvatan, detaljan i specifičan popis dijelova.

A stvar je u tome.. zapravo ne znate koji bi vam mogli zatrebati, ili koliko.. jer postoji toliko mnogo načina na koje možete spojiti ove komade.

Mogu navesti ono što sam koristio:

www.servocity.com/90-quad-hub-mount-c

www.servocity.com/side-tapped-pattern-moun…

www.servocity.com/90-quad-hub-mount-d

Sljedeća dva su jako zgodna, a ja bih se samo opskrbio ovim:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Slijede svi vijci (vijci). Počeo sam s paketom SVAKE veličine, a većinu sam prošao. Koristio sam duže vijke gdje veličina nije bila važna, a kraće sam rezervirao za mjesta gdje su ZAHTJEVNI jer nijedna druga duljina ne bi uspjela.

Na kraju, trebali biste dobiti 1 vrećicu ovih:

www.servocity.com/6-32-nylock-nuts-pack

Nisam ih toliko koristio, ali oni su (mislim) kritični kako bi bili sigurni da vam motori s vremena na vrijeme neće vibrirati s okvira. Samo bi dva radila po motoru, zbog U-kanala

Trebat će vam najmanje 4 od ovih, možda ćete dobiti još jedan ili dva u slučaju da nanesete štetu jednom (vjerujte mi, možda ćete nekoliko puta stavljati / skidati motore):

www.servocity.com/heavy-duty-clamping-shaf…

Obično su osovine motora 6 mm, a osovine 1/4 (0,25 inča).

Uzeo bih neke crne vijke, navodno jače, i upotrijebio bih ih za gornje stezaljke, a NE koristio vijke koji dolaze sa stezaljkama:

(Mislim da su to oni):

Ležajevi promjera 4 - 1/4 "(0,25")

1 - vrećica crnih odstojnika od 1/4"

4 - Stezne D -glavčine

www.servocity.com/0-770-clamping-d-hubs

4-D-osovine (#6340621.375 "(1-3/8")

4 - 6 kotači za velika opterećenja

www.servocity.com/6-heavy-duty-wheel

Imajte na umu da volim ove kotače, ali oni imaju tvrdu gumenu oštricu. Čini se da se dobro snalaze na tvrdim podovima, tepisima i vjerojatno tvrdim betonskim šetnjama. Neće biti dobro na travi, pijesku itd.

TAKOĐER, oni će vam razmazati tepih !!!

4 - motori:

www.servocity.com/motors-actuators/gear-mo…

Otišao sam s 223 o / min, dobrom najvećom brzinom u zatvorenom prostoru, a mogao sam i kretati svog robota (teškog s 2 SLA 12V baterije) prilično usporeno.

2 - koderi motora za motore. (Roboclaw Servo City -a rukuje samo s 2 kodera)

1 - Upravljač motorom Roboclaw 2X45A, pazite da nabavite onaj sa zelenim priključnim blokovima, a ne pinove…. pa … svaka ima svoje prednosti. Gledano unatrag.. Možda sam dobio pribadače.

Mislim da je to to iz Servo Cityja.

SparkFun prodaje Arduino Uno (to sam i ja koristio), a također i Redboard Artemis kao vašeg upravitelja pogona.

Poželjet ćete Raspberry Pi 3 (ili 4?) Kao svoj "mozak" i sučelje na visokoj razini.

Trebat će vam ožičenje, prekidači, osigurači i vrlo robusna "flyback" dioda.

Koristio sam Duracell 12V 14AH duboki ciklus SLA baterije, ali možete koristiti što god.

UPOZORENJE! Dizajn ovog robota (TALL, and WIDE, ali SHORT) pretpostavlja neku vrstu teškog težišta, poput SLA baterije. Možda neće uspjeti s drugim vrstama baterija novije tehnologije. LiPo, Lion itd. Lako bi se mogao prevrnuti.

Od Pololua sam dobio nekoliko adaptera za bačvaste utičnice, tako da sam mogao samostalno napajati Arduino i/ili Redboard, iako bi bili povezani s Raspberryjem putem USB -a, jer se nisam želio oslanjati na Raspberryjevu snagu. (Posebno montažne kamere, senzori itd.)

Trebat će vam regulator napona od 12 do 5V, minimalno 5A (?) Za Malinu. Ostali mogu rukovati bilo čime između 7 do 15 V tako izravno na SLA bateriju.

To je otprilike to za dijelove.

Ono što NE bih učinio - kosi prijenosnik pod kutom od 90 stupnjeva.

Opet, na mojoj YouTube playlisti Robotics postoji mnogo videozapisa koji detaljno opisuju većinu gore navedenih.

Korak 1: Izgradnja

Iskreno, svi moji koraci u izgradnji već su u obliku youtuba. Možete ih vidjeti na mojoj playlisti Robotics, počevši od "Wallace Robot 4". Prethodni (Wallace II, Wallace III) također imaju dobar materijal

www.youtube.com/playlist?list=PLNKa8O7lX-w…

Korak 2: Testirajte Roboclaw, Motore i Enkodere

Proizvođači Roboclaw -a (BasicMicro) imaju Windows aplikaciju koju možete koristiti kako biste bili sigurni da ste ispravno spojili motore i kodere na Roboclaw. Paralelno s Roboclawom spajate motore na istoj strani. Možete odabrati korištenje žica kodera, samo na stražnjim motorima ili prednjim motorima, ili možda čak i bolje - DIJAGONALNO.

Razlog mog prijedloga odnosi se na (kasnije) provjeru ima li zaglavljenog robota. Imati dijagonalno stanje ako se prednji/stražnji kotači ne okreću može biti bolje od samo prednjih ili samo stražnjih.

NAPOMENA: ono što NISAM učinio je da koristim Arduino za povezivanje (preko GPIO pinova) s koderima - ako ste to učinili, mogli biste Roboclaw rukovati s dva kodera, a zatim Arduino upravljati s druga dva, i samo upitajte Roboclaw za njegove dvije vrijednosti kodera (i brzine).

NAPOMENA: Koristio sam aplikaciju BasicMicro za predkonfiguriranje Roboclawa za Ramping Up / Ramping Down. Ovo je dobro za zaštitu hardvera i elektronike. Video zapis o tome postoji na mojoj playlisti Robotics.

Skoro sam zaboravio: kupio sam i neke kablove za povezivanje metaka koji se nalaze između kabela motora i Roboclawa. NAPOMENA: ako to učinite, primijetit ćete da je ukupna duljina kabela ZAISTA DUGA. Ali nisam želio rezati ništa ako ne moram. Ja sam (za kasnije korake) naišao na komunikacijske probleme s USB -om između Raspberryja i Arduina, vjerojatno zbog EMI šuma.. ali sam to zaobišao sa softverom.

Ako to postane problem, možete skratiti žice - možete kupiti i metalnu zaštitu (od Amazona, promjera 1 ).

Zadnja stvar: Ovo tek moram učiniti --- imati Roboclaw automatsko konfiguriranje ili automatsko podešavanje (pomoću kodera) tako da se i lijevi i desni bočni motor kreću istom brzinom, a robot ide ravno.

Moj se zakrivljuje vrlo malo preko 12 stopa, ali nedovoljno da sam osjetio potrebu učiniti bilo što po tom pitanju.

Korak 3: Dodavanje i programiranje Arduina

Trebat će vam utikač cijevi i malo ožičenja, također i USB kabel. Provjerite jeste li dobili ispravnu za Arduino konektor.

Morat ćete preuzeti Arduino IDE.

Ovdje na Githubu je najnovija skica koja upravlja rukovanjem robotom:

github.com/elicorrales/wallace.robot.ardui…

Spojit ćete Arduino na svoje računalo na kojem radi IDE, a na temelju načina na koji je skica napisana, koristili biste pinove 10 i 11 na Arduinu za serijsku komunikaciju (softverski serijski) s Roboclawom.

Razvio sam jednostavan komunikacijski protokol između Raspberry Pi i Arduina.

Temelji se na ASCII znakovima, što olakšava ispravljanje pogrešaka i testiranje samo pomoću prozora "serijskog monitora" Arduino IDE-a.

Naredbe započinju s brojem "0" (nula) i samo se povećavaju prema potrebi

Naredbe koje počinju u "20" s izravne su naredbe Roboclawa, a one ispod tog broja su isključivo naredbe povezane s Arduinom.

Zbog EMI šuma, poboljšao sam naredbeni niz tako da uključuje kontrolni zbroj.

Dakle, bilo koji niz će uključivati:

# broj žetona u nizu uključujući i ovaj

kontrolni zbroj

Na primjer, recimo da želite da Arduino odgovori svojim izbornikom naredbi:

4 0 12 16

"4" je četiri žetona u nizu.

"0" je naredba MENU.

"12" je slučajni broj koji sam odabrao.

"16" je zbroj 4 + 0 + 12.

Ista naredba MENU može biti drugačija:

4 0 20 24

Budući da sam odabrao drugačiji slučajni broj, kontrolni zbroj je također drugačiji.

Na primjer, recimo da želite ići naprijed 100 % brzinom:

5 29 0 134 100

"5" pet žetona

"29" naredba FORWARD

"0" slučajni broj

"134" kontrolni zbroj

"100" parametar 1 (u ovom slučaju brzina)

Ako Arduino ne može provjeriti taj dolazni niz, jednostavno ga ispušta / zanemaruje, nema odgovora.

Ako Arduino ne primi naredbu sljedećeg kretanja s X milisekundi, šalje motor STOP u Roboclaw.

Arduino se pokreće i počinje slati automatski status na USB priključak … osim ako mu se kaže da to prestane raditi.

U ovom trenutku trebali biste biti spremni pokušati kontrolirati Roboclaw i gledati kako se motori okreću, samo pomoću "Serijskog monitora" na IDE -u.

Korak 4: Dodavanje i programiranje Raspberry Pi (node.js)

Opet, ako pogledate moju listu za reprodukciju Robotics, čak i od samog početka, prešao sam svaki korak kako bih Raspberry pokrenuo.

Jedino što sam možda mogao zanemariti je da će vam trebati regulator od 5 V, ili ćete nekako izgraditi, izrezati/izmijeniti USB kabel za njega ili napajati malinu na drugi način.

Ovdje u Githubu je sve što vam je potrebno u malini za komunikaciju s Arduinom putem USB -a.

github.com/elicorrales/wallace.robot.raspb…

Postoje čak i testne skripte.

Možete pogledati kôd poslužitelja node.js i vidjet ćete kako Raspberry pretvara kratke numeričke upute u url nizove tipa REST. Možete koristiti "curl" za slanje testnih naredbi.

Primjer:

vaša RP3 IP adresa: 8084/arduino/api/forward/50

uzrokovat će da motori trenutno zakrenu kotače prema naprijed.

Ako to stavite u ljusku skripte skripte, vidjeli biste da se kotači stalno okreću.

Kod node.js (server.js) uključuje značajku ponovnog povezivanja u slučaju da se serijske komunikacije izgube na Arduinu. To možete testirati tako da samo isključite Arduino iz Raspberryja i ponovno ga uključite.

Provjerite podudara li se serijska brzina prijenosa između njih.

Zbog toga što je Arduino ispuštao loše pakete podataka i zato što je na razini node.js i na razini preglednika preglednika sve kodirano za slanje mnogih naredbi "pogona", uspio sam pokrenuti čak 2 000 000 bauda (2Mbps).

Ako pokrenete testne skripte i vidite kako se kotači okreću, spremni ste za sljedeći korak.

Korak 5: Posljednji korak - Programiranje / korištenje klijenta web stranice

Klijentske datoteke uključene su u vezu Github do dijela Maline u svemu tome.

index.html. index.js. p5.min.js.

Oni upravljaju USB Gamepad-om putem Gamepad API-ja (temeljen na pregledniku) i trebali biste vidjeti različite gumbe i klizače koji su također dostupni na web stranici.

Javascript kôd traži (ispituje) vrijednosti osi X i Y za jedan od joysticka.. (ovisno o tome koje joysticke/gamepad imate, možda ćete morati prilagoditi kôd). Anketira se vrlo brzo i odašilje sve te vrijednosti poslužitelju node.js koji sluša na 8084.

Sirove vrijednosti osi X i Y za joysticke su između 0 i 1.

No, funkcija knjižnice upravljačkog sklopa motora Roboclaw koja se koristi u Arduinu za pogon motora, očekuje vrijednost između -100 do 0 (unatrag) ili (0 do 100) naprijed.

Soo…. to je svrha uključivanja p5.min.js. Dogodi se da imate ovu vrlo lijepu, prikladnu funkciju map () u kojoj mu dajete neobrađenu vrijednost, sirovi (trenutni) raspon i novi, željeni raspon. I pretvara sirovu vrijednost u vrijednost u novom, mapiranom rasponu.

Još jedna stvar: pri 100 brzina robot može biti vrlo lukav. Stalno sam naletio na nešto. No, čak i kad u tome postanete bolji, i dalje je osjetljiv pri rotiranju ulijevo ili udesno.

Nešto što biste dodali bilo bi slično trenutnom klizaču Max Speed na web stranici. Taj klizač određuje najveću ili najveću vrijednost na koju ćete preslikati upravljačke palice Xs i Ys.

Primjer:

Recimo da preslikavate 0 -> 1 do 0 -> 100. Kad pritisnete navigacijsku tipku do kraja, nalazite se na 100. Dodirljivo. Možda je prebrzo.

No, ako pomaknete taj klizač za maksimalnu brzinu unatrag, sada preslikavate 0 -> 1 do 0 -> 80 ili 70.

To znači da imate više prostora za pomicanje upravljačke palice bez tako velike promjene brzine koja se šalje na node.js (i na Arduino).

Osim toga, možete odvojiti X -ove (rotirati ulijevo ili udesno) od Y -a (naprijed ili natrag) u njihove maksimalne dostupne brzine.

Dakle, mogli biste ostaviti Ys na 0 do 100, 0 do -100 za brzo linearno kretanje, ali smanjiti najveću brzinu Xs za kontrolirano rotacijsko kretanje. Najbolje od oba svijeta.

Korak 6: Izborno: Vozite robota mišem Povucite i / ili dodirnite događaje

Ako ste stigli dovde, znate da softverski slojevi koji počinju od preglednika i prolaze kroz Javascript pa na poslužitelj Raspberry node.js, konačno na arduino, pretvaraju X- i Y-koordinate Gamepada u "" koordinate naredbe "(ili" unatrag "itd.) (i njihova brzina).

Nadalje, znate da, dok su X i Y na upravljačkim palicama negativni 1, kroz nulu, u plus 1, oni se moraju pretvoriti između nule i 100. Pa, max ovisi o postavci maksimalne brzine na web stranici.

Tako da … jedino što trebate učiniti je koristiti miš ili dodirne događaje (kao na pametnom telefonu), snimiti te događaje, zgrabiti X i Y.

ALI ---- ti X i Y nisu između negativnih 1 i 1. Počinju 0 i povećavaju se pozitivno, jer su u biti pikseli ili relativne koordinate zaslona nekog HTML elementa (poput bootstrap ploče) ili platna.

Dakle, opet, funkcija "map ()" Js knjižnice P5 je vrlo zgodna za ponovno mapiranje na ono što nam treba.

Promijenio sam kôd tako da ima dvije različite web stranice, jednu za radnu površinu pomoću Gamepada, drugu za mobitele, koristeći događaje dodira.

Također, nakon što se X-ovi i Y-ovi ponovno mapiraju, oni se unose u isti lanac koda itd., Kao i X-ovi i Y-ovi s Gamepada.

Preporučeni: