Turinys:

4WD robotas, valdomas nuotoliniu USB žaidimų pultu: 6 žingsniai
4WD robotas, valdomas nuotoliniu USB žaidimų pultu: 6 žingsniai

Video: 4WD robotas, valdomas nuotoliniu USB žaidimų pultu: 6 žingsniai

Video: 4WD robotas, valdomas nuotoliniu USB žaidimų pultu: 6 žingsniai
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Birželis
Anonim
Image
Image

Kitame mano robotikos projekte dėl nenumatytų aplinkybių buvau priverstas susikurti/suprojektuoti savo robotų platformą.

Tikslas yra, kad jis būtų autonomiškas, bet pirmiausia man reikėjo išbandyti jo pagrindinius vairavimo sugebėjimus, todėl maniau, kad būtų įdomus šalutinis projektas elgtis ir būti valdomam taip, lyg tai būtų RC (radijo bangomis valdoma) transporto priemonė., bet naudokite USB žaidimų pultą.

Rezultatai buvo tokie pat geri arba geresni, nei tikėjausi.

Einant USB žaidimų pulto keliu, kuriame yra daug programavimo, privalumas yra tas, kad galiu jį pritaikyti ir pridėti prie to, ką jau padariau. Aš neturiu jokios tikros patirties kuriant RC transporto priemonę, bet aš įsivaizduoju, kad ji yra beveik įstrigusi su bet kokiu RC siųstuvu (vairasvirtėmis/mygtukais ir tt) ir RC imtuvu.

Pavyzdžiui, pridėjau tam tikrą pripažinimą, kad robotas atsitrenkė į sieną, tik leisdamas programinei įrangai aptikti dideles sroves ir mažas kodavimo greičio vertes.

Pasirinktinai, prie roboto galima pridėti keletą USB kamerų, priklausomai nuo to, kiek jų yra ir kur jas galima pastatyti, galima vairuoti robotą po svetainę ir į kitą kambarį, sėdint kažkur kitur priešais kompiuterį, prie kurio prijungta USB žaidimų klaviatūra. tai.

Ši „Instructable“nebus tikra, išsami, visa apimanti, žingsnis po žingsnio instrukcija, bet aš stengsiuosi pateikti kuo daugiau detalių.

Prekės

Siūlomos dalys: Didžiąją dalį to gavau iš „Servo City“(„Actobotics“).

2 - 13,5 U -kanalai, pagrindo rėmo šonams. Varikliai yra sumontuoti ant to. Aš nuėjau su kažkuo trumpesniu, o mano varikliai yra sumontuoti pačiuose kampuose, todėl buvo sunku juos sumontuoti.

2–12 colių U formos kanalai pagrindo rėmo priekyje ir gale.

2 - 15 colių U kanalai buferiams, priekyje ir gale

2–7 (ar 7,5 colio?) U formos kanalai priekiniams stulpeliams. Tai nėra per daug svarbu, ilgiai gali skirtis. Tai priklauso nuo to, kokio aukščio yra galinės kolonos ir kokiame aukštyje pasirinksite kampinį kampą U-kanalas, jungiantis tarp jų.

2-(ilgis?) U-kanalai kampiniam elementui iš priekio į galą, jungiantys vertikalius stulpelius. Tai labai svarbu, nes „Servo City“/ „Actobotics“šiam tikslui parduoda 45 laipsnių kampines plokštes ar skliaustus, tačiau turėsite atlikti tam tikrus matematinius veiksmus, kad įsitikintumėte, jog gaunate reikiamą ilgį.

2-(ilgis?) U kanalai, naudojami kaip aukštesnio lygio šoniniai buferiai, vėlgi tai priklauso nuo to, ką darote su pagrindu

2-(ilgis?) U kanalai tarnauja kaip aukštesnio lygio priekiniai ir galiniai buferiai, kaip ir aukščiau.

1 - (ilgis?) U -kanalas, kuris tarnauja kaip aukščiausias elementas, apima galinius stulpelius. Tai gali būti ne per daug kritiška, nes galite montuoti ant vertikalių kolonų arba priešais / už jų.

12 (apytiksliai) L kanalų arba skliaustų. Jie naudojami įvairiems tikslams, tačiau iš esmės suteikia pagrindo rėmo ir vertikalių kolonų konstrukcijų vientisumą/stiprumą.

4 (+?) Plokščių kanalų nuo 3 iki 5 skylių. Jie taip pat suteikia robotui tvirtumo.

„ServoCity“parduoda dvi pagrindines didelio ploto plokščių plokščių rūšis, naudingas naudoti kaip apatinė slankiojanti plokštė arba viršuje, kur eina jūsų baterija ir (arba) valdikliai, arba net aukštesniam jutiklių paviršiui.

Yra 4 (4,5?) "X 12" skydelis, o manau, kad kitas yra 9 (9,5?) "X 12 skydelis.

Dabar čia viskas tampa įdomu ir gali būti painu ir brangu (sudedamos mažos dalys). Visi kanalai ir tt gali būti prijungti vienas prie kito per šiuos jungiamuosius elementus, kurių yra KELIŲ. Apgailestauju, kad neturiu išsamaus, išsamaus ir konkretaus dalių sąrašo.

Ir dalykas yra tas, kad jūs tikrai nežinote, kurių jums gali prireikti, ar kiek.. nes yra tiek daug būdų, kaip suderinti šiuos kūrinius.

Galiu išvardyti, ką naudojau:

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

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

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

Šie du yra labai patogūs, ir aš tiesiog kaupsiu juos:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Kitas yra visi varžtai (varžtai). Pradėjau nuo KIEKVIENO dydžio paketo ir perėjau daugumą jų. Naudojau ilgesnius varžtus, kurių dydis nesvarbus, o trumpesnius pasilikau ten, kur REIKIA, nes joks kitas ilgis neveiks.

Galiausiai turėtumėte gauti 1 maišelį šių:

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

Aš jų nenaudojau, tačiau jie (manau) yra labai svarbūs norint užtikrinti, kad jūsų varikliai laikui bėgant nevirpėtų nuo rėmo. Dėl U kanalo vienam varikliui veiktų tik du

Jums reikės mažiausiai keturių iš jų, galite gauti papildomą, jei sugadinsite vieną (patikėkite manimi, galbūt kelis kartus užsidėsite / nuimsite variklius):

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

Paprastai variklių velenai yra 6 mm, o ašys - 1/4 colio (0,25 colio).

Aš gaučiau juodus varžtus, tariamai stipresnius, ir naudoju juos aukščiau nurodytiems spaustukams, o Nenaudoju varžtų, kurie pateikiami kartu su spaustukais:

(Manau, kad tai tie):

4 - 1/4 "(0,25") skersmens guoliai

1 - maišas juodų 1/4 colių tarpiklių

4 - D -stebulės

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

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

4-6 colių ratai

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

Atkreipkite dėmesį, kad man patinka šie ratai, tačiau jie turi kietą guminį kraštą. Atrodo, kad jiems gerai sekasi ant kietų grindų, kilimų ir tikriausiai kietų betoninių pasivaikščiojimų. Netiks ant žolės, smėlio ir pan.

TAIP PAT, jie bus linkę sutepti jūsų kilimą !!!

4 - varikliai:

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

Važiavau su 223 aps./min., Geras maksimalus greitis patalpose, taip pat galėjau gana lengvai judinti savo robotą (sunkų su 2 SLA 12V baterijomis) lėtai.

2 - variklių kodavimo kodai. („Servo City Roboclaw“valdo tik 2 koduotuvus)

1 - „Roboclaw 2X45A“variklio valdiklis, įsitikinkite, kad gaunate tą, kuriame yra žali gnybtų blokai, o ne kaiščiai…. gerai … kiekvienas turi savo privalumų. Atsiliepimas.. Galbūt aš gavau smeigtukus.

Manau, kad tai iš „Servo City“.

„SparkFun“parduoda „Arduino Uno“(tai aš naudojau), taip pat „Redboard Artemis“kaip jūsų disko tvarkyklė.

Jūs norėsite „Raspberry Pi 3“(ar 4?) Kaip aukšto lygio „smegenis“ir sąsają su jumis.

Jums reikės laidų, jungiklių, saugiklių ir labai tvirto „atgalinio“diodo.

Aš naudojau Duracell 12V 14AH gilaus ciklo SLA bateriją, bet galite naudoti bet ką.

ĮSPĖJIMAS! Šio roboto dizainas (TALL ir WIDE, bet TRUMPAS) prisiima tam tikrą sunkų svorio centrą, pvz., SLA bateriją. Tai gali būti blogai su kitų tipų naujesnių technologijų akumuliatoriais. LiPo, Lion ir tt Jis gali lengvai apvirsti.

Iš „Pololu“gavau kelis statinės kištuko adapterius, kad galėčiau savarankiškai maitinti „Arduino“ir (arba) „Redboard“, nors jie būtų prijungti prie „Raspberry“per USB, nes nenorėjau pasikliauti „Aviečių“galia. (Ypač montuojamos kameros, jutikliai ir kt.)

Jums reikės nuo 12 iki 5 V įtampos reguliatoriaus, mažiausiai 5A (?) „Raspberry“. Kiti gali valdyti viską nuo 7 iki 15 V, taigi tiesiai į SLA bateriją.

Apie tai dalimis.

Ko aš nedaryčiau - 90 laipsnių nuožulnios pavaros.

Vėlgi, mano „Robotics“„YouTube“grojaraštyje yra daug vaizdo įrašų, kuriuose išsamiai aprašyta aukščiau pateikta informacija.

1 žingsnis: Statyba

Atvirai kalbant, visi mano statybos žingsniai jau yra „YouTube“. Juos galite pamatyti mano „Robotics“grojaraštyje, pradedant „Wallace Robot 4“. Ankstesni (Wallace II, Wallace III) taip pat turi gerą medžiagą

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

2 veiksmas: išbandykite „Roboclaw“, variklius ir kodavimo įrenginius

„Roboclaw“(„BasicMicro“) kūrėjai turi „Windows“programą, kuria galite įsitikinti, ar teisingai prijungėte variklius ir kodavimo įrenginius prie „Roboclaw“. Lygiagrečiai su „Roboclaw“prijungsite tos pačios pusės variklius. Galite pasirinkti naudoti kodavimo laidus tik galiniuose arba priekiniuose varikliuose, o gal net geriau - DIAGONALIAI.

Mano pasiūlymo priežastis yra susijusi su (vėliau) įstrigusio roboto patikrinimu. Turėti būseną įstrižai, ar priekiniai/galiniai ratai nesisuka, gali būti geriau nei tik priekyje arba tik gale.

PASTABA: ko aš nedariau, tai naudoti „Arduino“, kad taip pat prisijungčiau (per GPIO kaiščius) prie kodavimo įrenginių - jei tai padarytumėte, galėtumėte turėti „Roboclaw“rankenėlę 2 koduotuvus, o po to „Arduino“tvarkyti kitus du ir tiesiog paklauskite „Roboclaw“dviejų kodavimo verčių (ir greičių).

PASTABA: Aš naudoju „BasicMicro“programą iš anksto sukonfigūruoti „Roboclaw“, kad būtų galima pakelti / nuleisti. Tai gerai apsaugo aparatūrą ir elektroniką. „Robotics“grojaraštyje yra vaizdo įrašas apie tai.

Aš beveik pamiršau: aš taip pat nusipirkau keletą kulkų jungčių kabelių, einančių tarp variklio kabelių ir „Roboclaw“. PASTABA: jei tai padarysite, pastebėsite, kad bendras kabelio ilgis yra TIKRAI ILGAS. Bet aš nenorėjau, kad nereikėtų nieko kirpti, jei man to nereikėtų. Aš (vėlesniems veiksmams) susidūriau su komunikacijos problemomis su USB tarp „Raspberry“ir „Arduino“, tikriausiai dėl EMI triukšmo.

Jei tai tampa problema, galite trumpai nutraukti laidus - taip pat galite nusipirkti metalinį ekraną (iš „Amazon“, 1 colio skersmens).

Paskutinis dalykas: tai aš dar turiu padaryti-turėkite „Roboclaw“automatinę konfigūraciją arba automatinį derinimą (naudodami kodavimo įrenginius), kad kairės ir dešinės pusės varikliai judėtų vienodu greičiu, o robotas-tiesiai.

Manoji labai nežymiai sukasi apie 12 pėdų, bet nepakankamai, kad maniau, jog reikia ką nors daryti.

3 žingsnis: pridėkite ir užprogramuokite „Arduino“

Jums reikės statinės kištuko ir kai kurių laidų, taip pat USB kabelio. Įsitikinkite, kad pasirinkote tinkamą „Arduino“jungtį.

Turite atsisiųsti „Arduino IDE“.

Čia, „Github“, yra naujausias eskizas, skirtas valdyti robotą:

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

Prijungsite „Arduino“prie kompiuterio, kuriame veikia IDE, ir, remdamiesi eskizo rašymo būdu, „Arduino“10 ir 11 kaiščius naudosite nuosekliam ryšiui (programinės įrangos serijai) su „Roboclaw“.

Aš sukūriau paprastą ryšio protokolą tarp „Raspberry Pi“ir „Arduino“.

Jis pagrįstas ASCII simboliais, todėl lengviau derinti ir išbandyti tiesiog naudojant „Arduino IDE“„serijinio monitoriaus“langą.

Komandos prasideda skaičiumi „0“(nulis) ir tiesiog pakyla, kai reikia

Komandos, prasidedančios „20“, yra tiesioginės „Roboclaw“komandos, o žemiau šio skaičiaus esančios yra griežtai su „Arduino“susijusios komandos.

Dėl EMI triukšmo patobulinau komandų eilutę, kad būtų įtraukta kontrolinė suma.

Taigi, bet kurioje eilutėje bus:

# žetonų skaičius eilutėje, įskaitant šį

kontrolinė suma

Pavyzdžiui, sakykite, kad norite, kad „Arduino“atsakytų naudodami komandų meniu:

4 0 12 16

„4“yra keturi žetonai eilutėje.

„0“yra komanda MENU.

„12“yra atsitiktinis mano pasirinktas skaičius.

„16“yra 4 + 0 + 12 suma.

Ta pati MENU komanda gali būti kitokia:

4 0 20 24

Kadangi pasirinkau kitą atsitiktinį skaičių, kontrolinė suma taip pat skiriasi.

Pavyzdžiui, pasakykite, kad norite judėti į priekį 100 % greičiu:

5 29 0 134 100

„5“penki žetonai

„29“komanda FORWARD

„0“atsitiktinis skaičius

„134“kontrolinė suma

„100“- 1 parametras (šiuo atveju greitis)

Jei „Arduino“negali patikrinti tos gaunamos eilutės, ji tiesiog ją numeta / ignoruoja, jokio atsakymo.

Jei „Arduino“negauna kitos judesio komandos su X milisekundėmis, ji siunčia STOP variklius į „Roboclaw“.

„Arduino“paleidžiamas ir pradeda siųsti automatinę būseną į USB prievadą … nebent liepta nustoti tai daryti.

Šiuo metu turėtumėte būti pasirengę pabandyti valdyti „Roboclaw“ir stebėti, kaip sukasi varikliai, tiesiog naudodami IDE „Serial Monitor“.

4 žingsnis: Raspberry Pi (node.js) pridėjimas ir programavimas

Vėlgi, jei pažvelgsite į mano „Robotics“grojaraštį, net nuo pat pradžių, aš ėmiausi visų žingsnių, kad „Raspberry“pradėtų veikti.

Vienintelis dalykas, kurį galėjau paminėti, yra tas, kad jums reikės 5 V reguliatoriaus ir kažkaip sukonstruoti, perpjauti/modifikuoti jam skirtą USB kabelį arba maitinti „Raspberry“kitu būdu.

Čia „Github“yra viskas, ko reikia „Raspberry“, kad galėtumėte bendrauti su „Arduino“per USB.

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

Yra net bandomieji scenarijai.

Galite pažvelgti į node.js serverio kodą ir pamatysite, kaip „Raspberry“paverčia glaustas skaitines instrukcijas į REST tipo URL eilutes. Norėdami siųsti bandymo komandas, galite naudoti „curl“.

Pavyzdys:

jūsų RP3 IP adresas: 8084/arduino/api/forward/50

varikliai trumpam pasuks ratus į priekį.

Jei įdėtumėte tai į apvalkalo scenarijaus kilpą, pamatytumėte, kaip ratai nuolat sukasi.

„Node.js“kodas (server.js) apima pakartotinio prisijungimo funkciją, jei „Arduino“prarastų serijinius pranešimus. Tai galite patikrinti tiesiog atjungę „Arduino“nuo aviečių ir vėl prijungę.

Įsitikinkite, kad tarp jų yra nuoseklusis duomenų perdavimo greitis.

Dėl to, kad „Arduino“išmeta blogus duomenų paketus ir dėl to, kad node.js lygiu ir naršyklės „JavaScript“lygiu viskas yra užkoduota, kad būtų siunčiama daug „disko“komandų, aš galėjau paleisti net 2 000 000 baudų (2 Mbps).

Jei paleidžiate testavimo scenarijus ir matote ratų sukimąsi, esate pasiruošę kitam žingsniui.

5 veiksmas: paskutinis žingsnis - programavimas / tinklalapio kliento naudojimas

Į „Github“nuorodą, įtrauktą į viso to „Raspberry“dalį, yra kliento failai.

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

Jie tvarko USB žaidimų planšetę per „Gamepad“API (naršyklės pagrindu), o jūs turėtumėte pamatyti įvairius mygtukus ir slankiklius, kuriuos taip pat galima rasti tinklalapyje.

„JavaScript“kodas užklausia (apklausia) vienos ir vairasvirtės X ir Y ašių reikšmes.. (priklausomai nuo to, kokias vairasvirtes/žaidimų pultą turite, gali tekti pataisyti kodą). Jis apklausia labai greitai ir visas šias vertes išjungia į „node.js“serverį, klausydamasis 8084.

Neapdorotos vairasvirtės X ir Y ašių vertės yra nuo 0 iki 1.

Tačiau „Roboclaw“variklio valdiklio bibliotekos funkcija, naudojama „Arduino“varikliams valdyti, tikisi vertės nuo -100 iki 0 (atgal) arba (nuo 0 iki 100) į priekį.

Taigi…. tai tikslas įtraukti p5.min.js. Tiesiog atsitinka, kad turite šią labai gražią, patogią žemėlapio () funkciją, kurioje nurodote neapdorotą vertę, neapdorotą (dabartinį) diapazoną ir naują norimą diapazoną. Ir ji neapdorotą vertę paverčia verte naujame, susietame diapazone.

Kitas dalykas: 100 greičiu robotas gali būti labai sudėtingas. Nuolat su kažkuo susidurdavau. Bet net ir tobulėjant, sukant į kairę arba į dešinę, jis vis tiek yra jautrus.

Kažkas, ką galėtumėte pridėti, būtų panašus į dabartinį „Max Speed“slankiklį tinklalapyje. Šis slankiklis nustato, kokia yra didžiausia ar didžiausia vertė, prie kurios kartosite Xs ir Ys žemėlapius.

Pavyzdys:

Tarkime, kad kartografuojate nuo 0 -> 1 iki 0 -> 100. Kai paspausite vairasvirtę iki galo, būsite 100. Jautrus. Gali būti per greitai.

Bet jei šiek tiek pastumiate tą spartų slankiklį atgal, dabar susiejate nuo 0 -> 1 iki 0 -> 80 arba 70.

Tai reiškia, kad jūs turite daugiau laisvės perkelti vairasvirtę, nesikeičiant tokiu greičiu į „node.js“(ir „Arduino“).

Be to, galite atskirti X (pasukti į kairę arba į dešinę) nuo Y (į priekį arba atgal) į maksimalų galimą greitį.

Taigi, jei norite greito linijinio judesio, Ys galite palikti nuo 0 iki 100, nuo 0 iki -100, tačiau sumažinkite maksimalų Xs greitį, kad judėjimas būtų labiau kontroliuojamas. Geriausias iš abiejų pasaulių.

6 veiksmas: pasirinktinai: vairuokite robotą naudodami pelės vilkimo ir (arba) lietimo įvykius

Jei pasiekėte taip toli, žinote, kad programinės įrangos sluoksniai, pradedant naršykle ir baigiant „Javascript“, ir baigiant „Raspberry node.js“serveriu, galiausiai- arduino, „Gamepad“vairasvirtės X ir Y koordinates paverčia „ komandos į priekį “(arba„ atgal “ir kt.) (ir jų greičio reikšmė).

Be to, jūs žinote, kad nors vairasvirtės X ir Y yra neigiami nuo 1 iki nulio iki plius 1, jie turi būti konvertuojami tarp nulio ir 100. Na, maksimumas priklauso nuo maksimalaus greičio nustatymo tinklalapyje.

Taigi, vienintelis dalykas, kurį reikia padaryti naudojant pelę arba paliesti įvykius (kaip išmaniajame telefone), yra užfiksuoti tuos įvykius, patraukti X ir Y.

BET ---- tie X ir Y nėra tarp neigiamų 1 ir 1. Jie prasideda nuo 0 ir padidėja teigiamai, nes iš esmės jie yra tam tikro HTML elemento (pvz., Įkrovos skydelio) arba drobės pikseliai arba santykinės ekrano koordinatės.

Taigi vėlgi, „P5“Js bibliotekos „map ()“funkcija yra labai patogi, norint susieti tai, ko mums reikia.

Iš naujo sukūriau kodą, kad būtų du skirtingi tinklalapiai, vienas skirtas darbalaukiui naudojant „Gamepad“, kitas - mobiliesiems, naudojant jutiklinius įvykius.

Be to, kai X ir Y yra iš naujo susieti, jie įtraukiami į tą pačią kodų grandinę ir tt, kaip ir X ir Y iš „Gamepad“.

Rekomenduojamas: