Sisukord:
- Tarvikud
- Samm: ehitamine
- 2. samm: katsetage Roboclawi, mootoreid ja kodeerijaid
- Samm: Arduino lisamine ja programmeerimine
- Samm: Raspberry Pi (node.js) lisamine ja programmeerimine
- 5. samm: viimane etapp - veebilehe kliendi programmeerimine / kasutamine
- 6. samm: valikuline: juhtige robotit hiirega lohistamise ja / või puudutussündmustega
Video: 4WD robotiga juhitav USB -kaugjuhtimispult: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:47
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:
Tutvuge Twinky kõige armsama Arduino robotiga: 7 sammu (piltidega)
Tutvuge Twinky kõige armsama Arduino robotiga: Tere, selles juhendatavas õpetan teile, kuidas ma tegin oma " Jibo " aga nimega "Twinky" Ma tahan selle selgeks teha … SEE EI OLE KOOPIA! MA EHITASIN TWINKY ja siis ma mõistsin, et midagi sellist nagu see on juba olemas: see on
Gesture Control Skeleton Bot - 4WD Hercules mobiilne robotplatvorm - Arduino IDE: 4 sammu (koos piltidega)
Liigutusjuhtimise skeleti robot - 4WD Hercules mobiilne robotplatvorm - Arduino IDE: Seeedstudio Skeleton Boti valmistatud žestikontrolli sõiduk - 4WD Hercules mobiilne robotplatvorm. Kodus koronaarviiruse epideemia juhtimise perioodil on väga lõbus. Minu sõber kinkis mulle uue 4WD Hercules'i mobiilse robotplatvormi
Otto DIY robotiga kõndimine - kiire ja hõlpsasti teostatav õpetus: 7 sammu
Otto DIY robotiga kõndimine - kiire ja hõlpsasti teostatav õpetus: Selles õpetuses õpime, kuidas hõlpsalt Otto DIY robotit kõndima programmeerida. Vaata näidisvideot
Robotiga juhitavad aknakatted: 5 sammu
Robotiga juhitavad aknakatted: see juhend on loodud Lõuna -Florida ülikooli Makecourse'i projektinõude täitmiseks (www.makecourse.com). See projekt on automatiseeritud aknakardinatega, mida saab juhtida telefonist Bluetoothi kaudu. S
Arduino 4WD Rover Bluetooth Juhitav Android -telefoni/tahvelarvuti abil: 5 sammu
Arduino 4WD Rover Bluetooth Juhitav Android -telefoni/tahvelarvuti abil: Arduino 4WD Bluetooth -juhitav rover Selle rakendusega saate kiirust juhtida (kasutades Arduino pwm -i), käivitage see koos