Sisukord:

4WD robotiga juhitav USB -kaugjuhtimispult: 6 sammu
4WD robotiga juhitav USB -kaugjuhtimispult: 6 sammu

Video: 4WD robotiga juhitav USB -kaugjuhtimispult: 6 sammu

Video: 4WD robotiga juhitav USB -kaugjuhtimispult: 6 sammu
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Juuni
Anonim
Image
Image

Järgmise robootikaprojekti jaoks olin ettenägematute asjaolude tõttu sunnitud oma robotplatvormi projekteerima/projekteerima.

Eesmärk on, et see oleks autonoomne, kuid esiteks pidin ma proovima selle põhilisi sõiduvõimeid, nii et arvasin, et see oleks lõbus kõrvalprojekt, kui käituda ja olla juhitud justkui RC (raadio teel juhitav) sõiduk, kuid kasutage selle asemel USB -mängupulti.

Tulemused on olnud umbes nii head või paremad, kui ma ootasin.

Paljude programmeerimistega USB -mänguplaadi marsruudi eeliseks on see, et ma saan seda kohandada ja lisada juba tehtut. Mul ei ole tegelikku kogemust RC -sõiduki ehitamisel, kuid ma kujutan ette, et see on peaaegu kinni kõikidest RC -saatjatest (juhtnupud/nupud jne) ja RC -vastuvõtjaga.

Näiteks olen lisanud mõningase äratundmise, et robot on vastu seina tabanud, lihtsalt laskes tarkvaral tuvastada suured voolud ja madalad kodeerija kiiruse väärtused.

Valikuliselt võib robotile lisada mõned USB -veebikaamerad, sõltuvalt sellest, kui palju ja kuidas neid paigutada, saab robotiga sõita ümber elutoa ja teise tuppa, istudes kusagil mujal arvuti ees, millega on ühendatud USB -mängupult seda.

See juhend ei ole tõeline, üksikasjalik, kõikehõlmav, samm-sammult juhis, kuid ma püüan anda nii palju üksikasju kui võimalik.

Tarvikud

Soovitatavad osad: Suurema osa sellest hankisin Servo Cityst (Actobotics).

2 - 13,5 U -kanalid, alusraami külgedele. Mootorid on sellele paigaldatud. Ma valisin midagi lühemat ja mu mootorid on paigaldatud nurkadesse ja see raskendas nende paigaldamist.

2-12 U -kanalid alusraami esi- ja tagaküljele.

2 - 15 U -kanalid kaitseraudade jaoks ees ja taga

2–7 (või oli see 7,5”?) U -kanalid eesmiste veergude jaoks. See ei ole liiga kriitiline, pikkused võivad varieeruda. See sõltub sellest, kui kõrged on tagumised veerud ja millisele kõrgusele soovite nurga asetada U-kanal, mis ühendab neid.

2-(pikkus?) U-kanalid nurgaosa jaoks, eest-taha, ühendades püstiseid sambaid. See on kriitiline, sest Servo City / Actobotics müüb sel eesmärgil 45 -kraadiseid nurgaga paneele või sulgusid, kuid õigete pikkuste tagamiseks peate tegema matemaatika / trig.

2-(pikkus?) U-kanalid, mis toimivad kõrgema taseme küljekaitsmetena, need sõltuvad jällegi sellest, mida te baasiga teete

2-(pikkus?) U-kanalid, mis toimivad kõrgema taseme esi- ja tagapõrkerauadena, sama probleem eespool.

1 - (pikkus?) U -kanal, mis toimib ülemise osana, ulatub üle tagumiste veergude. See ei pruugi olla liiga kriitiline, kuna saate paigaldada püstkolonnide peale või ette või taha.

12 (umbes) L-kanalit või sulgu. Need on mitmel otstarbel, kuid tagavad sisuliselt alusraami ja püstkolonnide nurkade struktuurilise terviklikkuse/tugevuse.

4 (+?) 3- kuni 5-augulist lamedat kanalit. Need annavad robotile ka konstruktsioonilise tugevuse.

ServoCity müüb kahte peamist tüüpi suure pindalaga lamepaneele, mida saab kasutada alumise külgpannina või ülaosas, kuhu teie aku ja / või kontrollerid läheksid, või isegi andurite kõrgemale pinnale.

Seal on 4 (4,5?) "X 12" paneel ja ma arvan, et teine on 9 (9,5?) "X 12 paneel.

Nüüd muutuvad asjad huvitavaks ja võivad olla segased ja kallid (väikesed osad lisanduvad). Kõiki kanaleid jne saab üksteise külge kinnitada nende ühendusdetailide kaudu, mida on mitu. Siinkohal on mul kahju, et mul pole põhjalikku, üksikasjalikku ja konkreetset osade loendit.

Ja asi on selles, et te tegelikult ei tea, milliseid neid vajate või kui palju.. sest neid tükke saab kokku sobitada nii paljudel viisidel.

Võin loetleda, mida olen kasutanud:

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

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

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

Järgmised kaks on väga käepärased ja ma varu neid lihtsalt:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Järgmine on kõik kruvid (poldid). Alustasin IGA suurusega paketiga ja olen enamiku neist läbi käinud. Kasutasin pikemaid kruvisid, mille suurus ei olnud oluline, ja lühemad kruvid reserveerisin sinna, kus need olid VAJALIKUD, sest muu pikkus ei tööta.

Lõpuks peaksite saama 1 koti neid:

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

Ma ei kasutanud nii palju, kuid need (ma arvan) on kriitilised, et veenduda, et teie mootorid aja jooksul raamist lahti ei vibreeri. U-kanali tõttu töötaks mootori kohta ainult kaks

Teil on vaja vähemalt nelja neist, võite saada lisatasu, kui kahjustate seda (uskuge mind, võite mootoreid paar korda sisse / maha võtta):

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

Tavaliselt on mootorivõllid 6 mm ja teljed 1/4 tolli (0,25 tolli).

Ma võtaksin mõned mustad, väidetavalt tugevamad kruvid ja kasutaksin neid ülaltoodud klambrite jaoks ja EI kasutaks klambritega kaasas olevaid kruvisid:

(Ma arvan, et need on need):

4 - 1/4 "(0,25") läbimõõduga laagrid

1 - kott mustadest 1/4 vahekaugustest

4 - D -rummude kinnitus

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

4-D-võllid (#6340621.375 "(1-3/8"))

4–6 tolli rattad

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

Pange tähele, et mulle meeldivad need rattad, kuid neil on kõva kummist serv. Tundub, et neil läheb hästi kõvadel põrandatel, vaibal ja tõenäoliselt kõvadel betoonist jalutuskäikudel. Ei lähe hästi murul, liival jne.

KA kipuvad nad teie vaipa määrima !!!

4 - mootorid:

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

Ma läksin kiirusega 223 pööret minutis, hea siseruumide kiirus, samuti suutsin oma robotit (2 SLA 12V patareiga raske) aeglaselt liigutada üsna lihtsalt.

2 - mootorite mootori kodeerijad. (Servo City Roboclaw saab hakkama ainult kahe kodeerijaga)

1 - Roboclaw 2X45A mootorikontroller, veenduge, et saate selle, millel on rohelised klemmliistud, mitte tihvtid…. noh … igal neist on oma eelised. Tagantjärele.. ma oleks võinud nööpnõelad kätte saada.

Ma arvan, et see on Servo Cityst.

SparkFun müüb Arduino Unot (seda ma kasutasin) ja teie draivihaldurina ka Redboard Artemisi.

Soovite Raspberry Pi 3 (või 4?) Oma kõrgetasemeliseks "ajuks" ja teiega liideseks.

Teil on vaja juhtmeid, lüliteid, kaitsmeid ja väga tugevat "tagasilöögi" dioodi.

Kasutasin Duracelli 12V 14AH sügava tsükliga SLA akut, kuid võite kasutada ükskõik mida.

HOIATUS! Selle roboti disain (TALL ja WIDE, kuid LÜHI) eeldab rasket raskuskeset, näiteks SLA aku. See ei pruugi hästi toimida nende teist tüüpi uuema tehnoloogiaga akupakkidega. LiPo, Lion jne. See võib kergesti ümber kukkuda.

Pololult sain mõned tünnipistiku adapterid, et saaksin Arduino ja/või Redboardi iseseisvalt toita, kuigi need oleks USB -ga Vaarikaga ühendatud, sest ma ei tahtnud loota Vaarika võimsusele. (Eriti paigaldatavad kaamerad, andurid jne)

Vajalik on 12–5 V pingeregulaator, vähemalt 5 A (?) Vaarika jaoks. Teised saavad hakkama kõikidega vahemikus 7 kuni 15 V, seega otse SLA akuga.

See on osade kohta umbes nii.

Mida ma EI teeks - 90 -kraadine kaldkäik.

Jällegi on minu robootika youtube'i esitusloendis palju videoid, mis kirjeldavad enamikku ülaltoodust.

Samm: ehitamine

Ausalt öeldes on kõik minu ehitusetapid juba youtubes. Neid näete minu robootika esitusloendis, alustades "Wallace Robot 4". Eelmised (Wallace II, Wallace III) on samuti hea materjaliga

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

2. samm: katsetage Roboclawi, mootoreid ja kodeerijaid

Roboclawi (BasicMicro) tootjatel on Windowsi rakendus, mille abil saate veenduda, et olete mootorid ja kodeerijad Roboclawiga õigesti ühendanud. Te ühendate paralleelselt Roboclawiga sama külje mootorid. Saate valida, kas kasutada kodeerija juhtmeid ainult tagumistel või esimootoritel või võib -olla isegi paremini - DIAGONALLY.

Minu ettepaneku põhjus on seotud ummistunud roboti (hilisema) kontrollimisega. Esi- või tagarataste pööramise olek diagonaalselt võib olla parem kui ainult ees või taga.

MÄRKUS. Mida ma pole teinud, on kasutada Arduino -d ka ühendamiseks (GPIO -tihvtide kaudu) kodeerijatega - kui te seda teeksite, võiksite lasta Roboclawil käidelda 2 kodeerijat ja seejärel lasta Arduino -l käidelda ülejäänud kahte ja lihtsalt küsige Roboclawilt kahte kodeerija väärtust (ja kiirust).

MÄRKUS. Kasutasin BasicMicro rakendust Roboclawi eelseadistamiseks üles- / allapoole liikumiseks. See on hea riistvara ja elektroonika kaitsmiseks. Minu robootika esitusloendis on selle kohta video.

Ma peaaegu unustasin: ostsin ka mõned kuuliühendusjuhtmed, mis lähevad mootorikaablite vahele, ja Roboclaw. MÄRKUS. Seda tehes märkate, et kaabli kogupikkus on TÕESTI PIKK. Aga ma ei tahtnud ühtegi lõigata, kui mul seda vaja pole. Ma tegin (hilisemateks sammudeks) USB -ga suhtlemisprobleeme Raspberry ja Arduino vahel, ilmselt EMI müra tõttu.. aga ma olen tarkvaraga selle ümber töötanud.

Kui sellest saab probleem, võite juhtmed lühikeseks lõigata - saate osta ka metallist varjestust (Amazonist, 1 läbimõõduga).

Viimane asi: ma pean seda veel tegema-laske Roboclawil automaatselt konfigureerida või automaatselt häälestada (kasutades kodeerijaid) nii, et nii vasak- kui ka parempoolne mootor liiguks sama kiirusega ja robot läheks otse.

Minu oma kõverub veidi üle 12 jala, kuid mitte piisavalt, et oleksin pidanud sellega midagi ette võtma.

Samm: Arduino lisamine ja programmeerimine

Teil on vaja silindripistikut ja juhtmestikku, samuti USB -kaablit. Veenduge, et saaksite Arduino pistiku jaoks õige.

Peate alla laadima Arduino IDE.

Siin Githubis on viimane visand, mis käsitleb roboti juhtimist:

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

Ühendate Arduino oma arvutiga, kus töötab IDE, ja selle põhjal, kuidas visand on kirjutatud, kasutaksite Arduino tihvte 10 ja 11 seeriasideks (Software Serial) Roboclawiga.

Töötasin välja lihtsa sideprotokolli Raspberry Pi ja Arduino vahel.

See põhineb ASCII-tähemärkidel, mis muudab silumise ja testimise lihtsamaks, kasutades lihtsalt Arduino IDE "seeriamonitori" akent.

Käsklused algavad numbrist "0" (null) ja lähevad lihtsalt üles vastavalt vajadusele

"20" -st algavad käsud on otsesed Roboclaw-käsud ja sellest numbrist allpool olevad käsud on rangelt Arduinoga seotud käsud.

EMI müra tõttu täiustasin käsurida kontrollsumma lisamiseks.

Niisiis sisaldab iga string järgmist:

# arv sümboleid stringis, sealhulgas see

kontrollsumma

Näiteks öelge, et soovite, et Arduino vastaks oma käsumenüüga:

4 0 12 16

"4" on neli märki stringis.

"0" on käsk MENU.

"12" on juhuslik number, mille ma valisin.

"16" on summa 4 + 0 + 12.

Sama MENU käsk võib olla erinev:

4 0 20 24

Kuna valisin teistsuguse juhusliku numbri, on ka kontrollsumma erinev.

Näiteks öelge, et soovite 100 % kiirusega edasi liikuda:

5 29 0 134 100

"5" viis märki

"29" käsk FORWARD

"0" juhuslik number

"134" kontrollsumma

"100" parameeter 1 (antud juhul kiirus)

Kui Arduino ei saa seda sissetulevat stringi kontrollida, siis ta lihtsalt loobub sellest / ignoreerib seda, ei reageeri.

Kui Arduino ei saa järgmist liikumiskäsku X millisekundiga, saadab ta Roboclawile mootorid STOP.

Arduino käivitub ja hakkab saatma USB-porti automaatse oleku … kui pole öeldud, et lõpetage see.

Siinkohal peaksite olema valmis proovima Roboclaw'i juhtimist ja jälgida mootorite pöörlemist, kasutades lihtsalt IDE -s olevat jadamonitori.

Samm: Raspberry Pi (node.js) lisamine ja programmeerimine

Jällegi, kui heita pilk mu Robootika esitusloendile, siis isegi algusest peale, käisin iga sammu üle, et Vaarikas käima saada.

Üks asi, mille ma oleksin võinud üle vaadata, on see, et vajate 5 V regulaatorit ja kas selle jaoks USB -kaabli ehitamiseks, lõikamiseks/muutmiseks või muul viisil toite andmiseks.

Siin Githubis on kõik, mida vajate vaarikas, et Arduinoga USB kaudu suhelda.

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

On isegi testskripte.

Saate vaadata node.js serveri koodi ja näete, kuidas Raspberry teisendab lühikesed numbrilised juhised REST-tüüpi URL-ide stringideks. Testkäskluste saatmiseks saate kasutada funktsiooni "curl".

Näide:

teie RP3 IP -aadress: 8084/arduino/api/forward/50

mootorid pöörlevad korraks rattaid ettepoole.

Kui panete selle kesta skripti ahelasse, näeksite, et rattad pöörlevad pidevalt.

Kood node.js (server.js) sisaldab uuestiühendamise funktsiooni juhuks, kui jadakommud Arduinole kaotatakse. Saate seda testida, lihtsalt ühendades Arduino vaarikast lahti ja ühendades selle uuesti.

Veenduge, et nende kahe järjestikune edastuskiirus oleks vastavuses.

Kuna Arduino loobis halbu andmepakette ja kuna node.js tasemel ja brauseri javascripti tasemel on kõik kodeeritud paljude "drive" käskude saatmiseks, olen suutnud käivitada kuni 2 000 000 baud (2Mbps).

Kui käivitate testiskriptid ja näete rataste pöörlemist, olete järgmise sammu jaoks valmis.

5. samm: viimane etapp - veebilehe kliendi programmeerimine / kasutamine

Githubi lingile, mis sisaldab selle kõige Raspberry osa, on kliendifailid.

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

Nad käitlevad USB-mänguplaati Gamepad API (brauseripõhine) kaudu ja peaksite nägema ka erinevaid nuppe ja liugureid, mis on saadaval ka veebilehel.

JavaScripti kood küsib (küsitleb) ühe juhtkangi X- ja Y-telje väärtusi.. (sõltuvalt sellest, millised juhtnupud/mängupult teil on, peate võib-olla koodi muutma). See küsitleb väga kiiresti ja käivitab kõik need väärtused serveris node.js, kuulates 8084.

Juhtkangide tooraine X- ja Y-telje väärtused on vahemikus 0 kuni 1.

Kuid Arduinos mootorite juhtimiseks kasutatav Roboclawi mootorikontrolleri raamatukogu funktsioon eeldab väärtust vahemikus -100 kuni 0 (tagasi) või (0 kuni 100) edasi.

Soo…. selle eesmärk on lisada ka p5.min.js. See juhtub lihtsalt olema väga kena ja mugav kaardi () funktsioon, kus annate sellele toores väärtuse, see on toores (praegune) vahemik ja uus soovitud vahemik. Ja see teisendab toorväärtuse väärtuseks uuel kaardistatud vahemikul.

Veel üks punkt: 100 kiirusega võib robot olla väga keeruline. Mul jooksis pidevalt midagi otsa. Kuid isegi kui sa selles paremaks muutud, on see vasakule või paremale pöörates endiselt tundlik.

Midagi, mida saaksite lisada, oleks sarnane veebilehe praeguse maksimaalse kiiruse liuguriga. See liugur määrab, milline on kõrgeim või maksimaalne väärtus, millele juhtjooned Xs ja Ys kaardistatakse.

Näide:

Oletame, et kaardistate 0 -> 1 kuni 0 -> 100. Kui vajutate juhtkangi lõpuni, olete 100. Puudutav. Võib olla liiga kiire.

Kuid kui lükkate seda Max Speed liugurit natuke tagasi, kaardistate nüüd 0 -> 1 kuni 0 -> 80 või 70.

See tähendab, et teil on rohkem liikumisruumi juhtkangi liigutamiseks, ilma et sõlmes.js (ja Arduino) saadetud kiirus nii suurelt muutuks.

Lisaks võite eraldada X -id (pöörata vasakule või paremale) Y -dest (edasi või tagasi) nende maksimaalseteks saadaolevateks kiirusteks.

Seega võite jätta Y -d 0 kuni 100, 0 kuni -100 kiireks lineaarseks liikumiseks, kuid vähendada Xs -i maksimaalset kiirust kontrollitud pöörlemisliikumise jaoks. Mõlema maailma parim.

6. samm: valikuline: juhtige robotit hiirega lohistamise ja / või puudutussündmustega

Kui olete nii kaugele jõudnud, siis teate, et tarkvarakihid, mis algavad brauserist ja läbivad Javascripti ning liiguvad edasi Raspberry node.js serverisse, lõpuks arduino, teisendavad Gamepadi juhtkangi X- ja Y-koordinaadid " edasi "(või" tagasi "jne) käske (ja nende kiiruse väärtust).

Lisaks teate, et kuigi juhtkangi X -d ja Y -d on negatiivsed 1, null, pluss 1, tuleb need teisendada nulli ja 100 vahel. Noh, max sõltub veebilehe maksimaalse kiiruse seadistusest.

Nii et … hiire või puudutussündmuste kasutamiseks (nagu nutitelefonis) on ainus asi, mida teha, nende sündmuste jäädvustamine, X- ja Y -tähtede võtmine.

AGA ---- need X-id ja Y-d EI OLE negatiivsete 1 ja 1 vahel. Nad algavad 0-st ja suurenevad positiivselt, sest need on sisuliselt mõne HTML-elemendi (nt alglaadimispaneeli) või lõuendi pikslid või suhtelised ekraanikoordinaadid.

Nii et jällegi on P5 Js raamatukogu funktsioon "map ()" väga mugav, et kaardistada see, mida vajame.

Muutsin koodi ümber nii, et sellel oleks kaks erinevat veebilehte, üks töölaua jaoks Gamepadiga, teine mobiilseadmetega, kasutades puuteüritusi.

Samuti, kui X-id ja Y-d on uuesti kaardistatud, sisestatakse need samasse koodiahelasse jne, nagu ka mängupuldi X-id ja Y-d.

Soovitan: