Obsah:

Robot 4WD poháňaný diaľkovým gamepadom USB: 6 krokov
Robot 4WD poháňaný diaľkovým gamepadom USB: 6 krokov

Video: Robot 4WD poháňaný diaľkovým gamepadom USB: 6 krokov

Video: Robot 4WD poháňaný diaľkovým gamepadom USB: 6 krokov
Video: remote control heavy load tracked robot chassis platform undercarriage 2024, Jún
Anonim
Image
Image

Pre môj ďalší robotický projekt som bol kvôli nepredvídaným okolnostiam nútený navrhnúť/navrhnúť vlastnú robotickú platformu.

Cieľom je, aby bol autonómny, ale najskôr som potreboval otestovať jeho základné jazdné vlastnosti, a tak som si povedal, že by bolo zábavným vedľajším projektom správať sa a ovládať tak, ako keby išlo o RC (rádiom ovládané) vozidlo., ale namiesto toho použite USB gamepad.

Výsledky boli asi také dobré alebo lepšie, ako som očakával.

Výhodou cesty USB Gamepad s množstvom programovania je, že si ju môžem prispôsobiť a pridať k tomu, čo som už urobil. Nemám žiadne skutočné skúsenosti s výstavbou RC vozidla, ale domnievam sa, že by sa dalo prilepiť na čokoľvek, čo obsahuje RC vysielač (joysticky/tlačidlá, atď.) A RC prijímač.

Napríklad som pridal určité uznanie, že robot narazil do steny, len tým, že softvér detekoval vysoké prúdy a nízke hodnoty rýchlosti snímača.

Voliteľne je možné do robota pridať niekoľko webových kamier USB, v závislosti od počtu a umiestnenia je možné s robotom jazdiť po obývačke a do inej miestnosti, pričom sedí niekde inde pred počítačom, ku ktorému je pripojený USB gamepad to.

Tento návod nebude pravdivým, podrobným a komplexným návodom krok za krokom, ale pokúsim sa poskytnúť čo najviac podrobností.

Zásoby

Navrhované diely: Väčšinu z toho som získal od Servo City (Actobotics).

2 - 13,5 U -kanály, po stranách základného rámu. Na to sú namontované motory. Išiel som s niečím kratším a moje motory sú namontované v úplných rohoch, a preto bolo ťažké ich namontovať.

2 - 12 U -kanály pre prednú a zadnú časť základného rámu.

2 - 15 U -kanály pre nárazníky, predné a zadné

2 - 7 (alebo to bolo 7,5 ?) U -kanálov pre predné stĺpiky. To nie je príliš dôležité, dĺžky sa môžu líšiť. Záleží na tom, aké vysoké sú zadné stĺpiky a v akej výške sa rozhodnete dať šikmé. U-kanál, ktorý sa medzi nimi spája.

2-(dĺžka?) U-kanály pre šikmý prvok, spredu dozadu, spájajúce zvislé stĺpiky. Toto je kritické, pretože Servo City / Actobotics na tento účel predáva panely alebo konzoly pod uhlom 45 stupňov, ale budete musieť urobiť niekoľko matematických / trigových skúšok, aby ste sa uistili, že získate správne dĺžky.

2-(dĺžka?) U-kanály, ktoré majú slúžiť ako bočné nárazníky vyššej úrovne, tieto opäť závisia od toho, čo robíte so základňou

2-(dĺžka?) U-kanály, ktoré majú slúžiť ako predný a zadný nárazník vyššej úrovne, vyššie uvedené.

1 - (dĺžka?) U -kanál, ktorý bude slúžiť ako horný prvok, bude sa rozprestierať cez zadné stĺpiky. Toto nemusí byť príliš kritické, pretože ho môžete namontovať na vrch alebo pred / za zvislé stĺpiky.

12 (približne) kanálov L alebo zátvoriek. Slúžia na viacero účelov, ale v zásade poskytujú štrukturálnu integritu/pevnosť v rohoch základného rámu A zvislých stĺpoch.

4 (+?) 3-dierové až 5-dierové ploché kanály. Poskytujú tiež konštrukčnú pevnosť robota.

ServoCity predáva dva hlavné druhy veľkoplošných plochých panelov, ktoré sú vhodné na použitie ako spodný sklz alebo ako vrch, kam by išla batéria alebo ovládače, alebo dokonca pre vyššie povrchy pre senzory.

Existuje panel 4 (4,5?) "X 12" a myslím, že druhý je panel 9 (9,5?) "X 12.

Teraz je to miesto, kde veci začínajú byť zaujímavé a môžu byť mätúce a drahé (malé časti sa sčítajú). Všetky kanály atď. Je možné k sebe pripojiť pomocou týchto spojovacích prvkov, ktorých je niekoľko. Tu je mi ľúto, že nemám komplexný, podrobný a konkrétny zoznam dielov.

A ide o to, že vlastne neviete, ktoré z nich by ste mohli potrebovať alebo koľko.. pretože existuje toľko spôsobov, ako môžete tieto kúsky skĺbiť.

Môžem uviesť, čo som použil:

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

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

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

Nasledujúce dva sú veľmi užitočné a ja by som sa zásobil týmito:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Ďalej sú uvedené všetky skrutky (skrutky). Začal som balíkom KAŽDEJ veľkosti a prešiel som väčšinou z nich. Použil som dlhšie skrutky, kde na veľkosti nezáležalo, a kratšie som vyhradil tam, kde boli POVINNÉ, pretože žiadna iná dĺžka nebude fungovať.

Nakoniec by ste mali dostať 1 vrecko z týchto:

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

Nepoužil som ich toľko, ale (myslím si) sú nevyhnutné na to, aby vaše motory v priebehu času nevibrovali z rámu. Na kanál U fungovali iba dva

Budete potrebovať najmenej 4 z nich, v prípade poškodenia jedného môžete získať ešte jeden alebo iný (verte mi, párkrát možno budete zapínať / vypínať motory):

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

Hriadele motora sú spravidla 6 mm a nápravy sú 1/4 palca (0,25 palca).

Získal by som nejaké čierne skrutky, údajne silnejšie, a použil by som ich na vyššie uvedené svorky a NEPOUŽÍVAL by som skrutky, ktoré sú súčasťou svoriek:

(Myslím, že toto sú títo):

Ložiská s priemerom 4 - 1/4 "(0,25")

1 - vrecko s čiernymi rozperami 1/4"

4 - Upínanie D -nábojov

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

4-D-hriadele (#6340621,375 "(1-3/8")

4 - 6 ťažké kolesá

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

Všimnite si toho, že tieto kolesá milujem, ale majú tvrdú gumovú hranu. Zdá sa, že sa im darí na tvrdých podlahách, kobercoch a pravdepodobne aj na tvrdom betóne. Nerobí dobre na tráve, piesku atď.

TIEŽ budú mať tendenciu rozmazávať váš koberec !!!

4 - motory:

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

Išiel som s 223 otáčkami za minútu, dobrou najvyššou vnútornou rýchlosťou, a tiež som mohol celkom ľahko pohybovať svojim robotom (ťažkým s 2 batériami SLA 12V) v spomalenom zábere.

2 - enkodéry motora pre motory. (Roboclaw Servo City zvláda iba 2 kodéry)

1 - Ovládač motora Roboclaw 2X45A, uistite sa, že dostanete ten, na ktorom sú zelené svorkovnice, nie kolíky…. no … každý má svoje výhody. Spätný pohľad.. Možno som dostal kolíky.

Myslím, že to je všetko zo Servo City.

SparkFun predáva Arduino Uno (to som použil) a tiež Redboard Artemis ako správcu diskov.

Budete chcieť Raspberry Pi 3 (alebo 4?) Ako vysoký mozog a rozhranie pre vás.

Budete potrebovať vedenie, spínače, poistky a veľmi robustnú diódu „flyback“.

Použil som batériu SLA Duracell 12V 14AH s hlbokým cyklom, ale môžete použiť čokoľvek.

VÝSTRAHA! Konštrukcia tohto robota (TALL a WIDE, ale SHORT) predpokladá akési ťažké ťažisko, aké by poskytovala batéria SLA. Nemusí to fungovať dobre s týmito inými typmi batérií z novšej technológie. LiPo, Lion atď. Mohlo by sa ľahko prevrhnúť.

Od Pololu som dostal niekoľko adaptérov so sudovou zástrčkou, aby som mohol nezávisle napájať Arduino a/alebo Redboard, aj keď budú k Raspberry pripojené cez USB, pretože som sa nechcel spoliehať na napájanie Raspberry.. (Najmä montáž kamier, senzorov atď.)

Na Raspberry budete potrebovať krokový regulátor napätia 12 až 5 V, minimálne 5 A (?). Ostatní zvládnu čokoľvek medzi 7 až 15 V, takže priamo na batériu SLA.

To je na diely asi všetko.

Čo by som NEROBIL - 90 stupňové skosené prevody.

V mojom zozname skladieb na serveri Robotics na youtube je opäť mnoho videí, ktoré podrobne popisujú väčšinu z vyššie uvedených.

Krok 1: Konštrukcia

Úprimne povedané, všetky moje stavebné kroky sú už vo forme youtubov. Môžete ich vidieť v mojom zozname skladieb Robotics, začínajúc „Wallace Robot 4“. Predošlé (Wallace II, Wallace III) majú tiež dobrý materiál

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

Krok 2: Otestujte roboclaw, motory a kodéry

Výrobcovia Roboclaw (BasicMicro) majú aplikáciu pre Windows, pomocou ktorej sa môžete presvedčiť, či ste motory a kodéry správne zapojili do Roboclaw. Paralelne k Roboclawu budete pripájať motory na rovnakej strane. Môžete sa rozhodnúť použiť vodiče snímača iba na zadných motoroch alebo na predných motoroch, alebo možno ešte lepšie - DIAGONÁLNE.

Dôvod môjho návrhu súvisí s (neskôr) kontrolou uviaznutého robota. Mať diagonálny stav, ak sa predné/zadné kolesá netočia/môžu netočiť, môže byť lepšie ako len predné alebo iba zadné.

POZNÁMKA: Čo som NEROBIL, je použiť Arduino na pripojenie (prostredníctvom pinov GPIO) k kodérom - ak ste to urobili, môžete nechať Roboclaw zvládnuť 2 kodéry a potom nechať Arduino zvládnuť ďalšie dva a stačí spýtajte sa Roboclawa na dve hodnoty (a rýchlosti) kodéra.

POZNÁMKA: Aplikáciu BasicMicro som použil na predkonfiguráciu roboclawa na rampovanie alebo rozbiehanie. To je dobré na ochranu hardvéru a elektroniky. V mojom zozname skladieb Robotics je o tom video.

Skoro som zabudol: Kúpil som si tiež niekoľko káblov s koncovkou, ktoré idú medzi motorové káble a Roboclaw. POZNÁMKA: Ak to urobíte, všimnete si, že celková dĺžka kábla je SKUTOČNE DLHÁ. Ale nechcel som žiadne rezať, ak som to nepotreboval. Stretol som sa (pre ďalšie kroky) s komunikačnými problémami s USB medzi Raspberry a Arduino, pravdepodobne kvôli hluku EMI.. ale so softvérom som to vyriešil.

Ak sa stane problémom, môžete skrátiť vodiče - môžete si tiež kúpiť kovové tienenie (od Amazonu, priemer 1 ).

Posledná vec: Toto musím ešte urobiť --- Nechajte Roboclaw automaticky nakonfigurovať alebo automaticky vyladiť (pomocou kodérov) tak, aby sa motory na ľavej aj pravej strane pohybovali rovnakou rýchlosťou a robot išiel rovno.

Ten môj sa veľmi mierne kriví asi na 12 stôp, ale nie natoľko, aby som cítil, že je potrebné s tým niečo urobiť.

Krok 3: Pridanie a programovanie Arduina

Budete potrebovať valcovú zástrčku a nejaké vedenie, tiež kábel USB. Uistite sa, že pre konektor Arduino dostanete ten správny.

Budete si musieť stiahnuť Arduino IDE.

Tu na Githube je najnovšia skica, ktorá sa zaoberá riadením robota:

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

Pripojíte Arduino k počítaču s IDE a podľa toho, ako je náčrt napísaný, budete používať piny 10 a 11 na Arduine na sériovú komunikáciu (softvérovú sériovú) s robotom.

Vyvinul som jednoduchý komunikačný protokol medzi Raspberry Pi a Arduino.

Je založený na znakoch ASCII, čo uľahčuje ladenie a testovanie iba pomocou okna „sériového monitora“Arduino IDE.

Príkazy začínajú na čísle „0“(nula) a podľa potreby sa zvyšujú

Príkazy začínajúce na „20“sú priame príkazy Roboclaw a príkazy pod týmto číslom sú výlučne príkazy súvisiace s Arduinom.

Vzhľadom na šum EMI som vylepšil príkazový reťazec tak, aby obsahoval kontrolný súčet.

Akýkoľvek reťazec bude teda zahŕňať:

# počet tokenov v reťazci vrátane tohto

kontrolný súčet

Povedzme napríklad, že chcete, aby Arduino reagovalo ponukou príkazov:

4 0 12 16

„4“sú štyri žetóny v reťazci.

„0“je príkaz MENU.

„12“je náhodné číslo, ktoré som vybral.

„16“je súčet 4 + 0 + 12.

Ten istý príkaz MENU sa môže líšiť:

4 0 20 24

Pretože som vybral iné náhodné číslo, kontrolný súčet je tiež odlišný.

Povedzme napríklad, že sa chcete pohnúť dopredu 100 % rýchlosťou:

5 29 0 134 100

„5“päť žetónov

„29“príkaz VPRED

„0“náhodné číslo

„134“kontrolný súčet

„100“parameter 1 (rýchlosť v tomto prípade)

Ak Arduino nemôže overiť prichádzajúci reťazec, jednoducho ho upustí / ignoruje, žiadna odpoveď.

Ak Arduino nedostane príkaz na ďalší pohyb s X milisekundami, pošle do Roboclawa motory STOP.

Arduino sa spustí a začne odosielať automatický stav na port USB … pokiaľ mu nebude povedané, aby s tým prestal.

V tomto mieste by ste mali byť pripravení skúsiť ovládať Roboclaw a sledovať otáčanie motorov, a to iba pomocou „sériového monitora“v IDE.

Krok 4: Pridanie a programovanie Raspberry Pi (node.js)

Opäť, ak sa pozriete na môj zoznam skladieb Robotics, dokonca od začiatku som prešiel každý krok, aby som Raspberry spustil.

Jednu vec by som mohol prehliadnuť je, že budete potrebovať 5V regulátor a buď ho nejako skonštruujete, prerežete/upravíte, alebo napájate Raspberry iným spôsobom.

Tu na Github je všetko, čo potrebujete v Raspberry na komunikáciu s Arduino cez USB.

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

Existujú dokonca aj testovacie skripty.

Môžete sa pozrieť na kód servera node.js a uvidíte, ako Raspberry prevádza stručné číselné pokyny na reťazce URL typu REST. Na odoslanie testovacích príkazov môžete použiť „curl“.

Príklad:

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

spôsobí, že motory na chvíľu otočia kolesá dopredu.

Ak to vložíte do slučky skriptu shell, uvidíte, ako sa kolesá otáčajú.

Kód node.js (server.js) obsahuje funkciu opätovného pripojenia v prípade, že sa do Arduina stratia sériové komunikácie. Môžete to vyskúšať jednoduchým odpojením Arduina od Raspberry a jeho opätovným zapojením.

Uistite sa, že medzi týmito dvoma zhodujete sériovú prenosovú rýchlosť.

Pretože Arduino zhadzovalo zlé pakety údajov a pretože na úrovni node.js a na úrovni javascriptu prehliadača je všetko kódované na odosielanie mnohých príkazov „drive“, dokázal som bežať až 2 000 000 baudov. (2 Mb / s).

Ak spustíte testovacie skripty a vidíte, ako sa otáčajú kolesá, ste pripravení na ďalší krok.

Krok 5: Posledný krok - programovanie / používanie klienta webovej stránky

Súčasťou odkazu na server Github na časť tohto malinového sú súbory klienta.

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

Ovládajú USB Gamepad prostredníctvom rozhrania Gamepad API (na báze prehliadača) a mali by ste vidieť rôzne tlačidlá a posúvače dostupné aj na webovej stránke.

Kód JavaScriptu požaduje (dotazuje) hodnoty osi X a Y pre jeden z joystickov.. (v závislosti od toho, aké joysticky/gamepad máte, bude možno potrebné kód vyladiť). Hlasuje veľmi rýchlo a vypúšťa všetky tieto hodnoty na server node.js, ktorý počúva na 8084.

Surové hodnoty osí X a Y joystickov sú medzi 0 a 1.

Ale funkcia knižnice radiča motora Roboclaw, ktorá sa používa v Arduine na pohon motorov, očakáva hodnotu od -100 do 0 (dozadu) alebo (0 až 100) vpred.

Tak…. to je účel zahrnutia súboru p5.min.js. Jednoducho má túto veľmi peknú a praktickú funkciu map (), kde jej zadáte surovú hodnotu, je to surový (aktuálny) rozsah a nový požadovaný rozsah. A prevádza nespracovanú hodnotu na hodnotu v novom mapovanom rozsahu.

Ďalší bod: Pri rýchlosti 100 môže byť robot veľmi náročný. Neustále som na niečo narážal. Ale aj keď sa v tom zlepšujete, pri otáčaní doľava alebo doprava je to stále citlivé.

Niečo, čo by ste chceli pridať, by bolo podobné súčasnému posuvníku maximálnej rýchlosti na webovej stránke. Tento posúvač určuje, aká je najvyššia alebo maximálna hodnota, na ktorú budete mapovať joysticky Xs a Ys.

Príklad:

Povedzme, že mapujete 0 -> 1 až 0 -> 100. Po úplnom stlačení joysticku sa dostanete na 100. Touchy. Možno príliš rýchlo.

Ak však posuniete posúvač Max Speed trochu dozadu, teraz mapujete 0 -> 1 až 0 -> 80 alebo 70.

To znamená, že máte viac priestoru na pohyb joystickom bez toho, aby sa taká veľká zmena rýchlosti posielala do node.js (a do Arduina).

A navyše by ste mohli urobiť oddelenie X (otáčanie doľava alebo doprava) od Y (dopredu alebo dozadu) na ich vlastné maximálne dostupné rýchlosti.

Ys by ste teda mohli nechať na 0 až 100, 0 až –100 pre rýchly lineárny pohyb, ale znížiť maximálnu rýchlosť Xs pre lepšie kontrolovaný rotačný pohyb. Najlepšie z oboch svetov.

Krok 6: Voliteľné: Riaďte robota udalosťami potiahnutím myšou alebo dotykom

Ak ste sa dostali až sem, viete, že softvérové vrstvy počínajúc prehliadačom a vŕtaním sa cez Javascript až po server Raspberry node.js, nakoniec na arduino, prevádzajú súradnice X a Y joysticku Gamepadu na „ dopredu “(alebo„ dozadu “atď.) (a ich rýchlosť).

Ďalej potom viete, že zatiaľ čo Xs a Y joystickov sú záporné 1, od nuly do plus 1, tie je potrebné previesť medzi nulou a 100. No, maximum závisí od nastavenia maximálnej rýchlosti na webovej stránke.

Takže … jediná vec, ktorú musíte urobiť pri použití myši alebo dotykových udalostí (ako na smartfóne), je zachytiť tieto udalosti a chytiť X a Y.

ALE-tieto X a Y NIE sú medzi zápornými 1 a 1. Začínajú 0 a kladne sa zvyšujú, pretože sú to v podstate pixely alebo relatívne súradnice obrazovky nejakého prvku HTML (napríklad panelu bootstrapu) alebo plátna.

Takže opäť tam, funkcia „map ()“knižnice Ps v knižnici Js je veľmi užitočná na premapovanie na to, čo potrebujeme.

Upravil som kód tak, aby mal dve rôzne webové stránky, jednu pre stolné počítače pomocou zariadenia Gamepad a druhú pre mobilné zariadenia, pomocou udalostí dotyku.

Akonáhle sú X a Y premapované, sú zaradené do rovnakého reťazca kódu atď., Rovnako ako X a Y z Gamepadu.

Odporúča: