Satura rādītājs:

Ar 4WD robotu darbināms, izmantojot attālo USB spēļu tastatūru: 6 soļi
Ar 4WD robotu darbināms, izmantojot attālo USB spēļu tastatūru: 6 soļi

Video: Ar 4WD robotu darbināms, izmantojot attālo USB spēļu tastatūru: 6 soļi

Video: Ar 4WD robotu darbināms, izmantojot attālo USB spēļu tastatūru: 6 soļi
Video: НЕ ВЗДУМАЙ снимать аккумулятор с машины. Делай это ПРАВИЛЬНО ! 2024, Jūnijs
Anonim
Image
Image

Nākamajā robotikas projektā neparedzētu apstākļu dēļ es biju spiests veidot/projektēt savu robotu platformu.

Mērķis ir panākt, lai tas būtu autonoms, taču, pirmkārt, man bija jāpārbauda tā braukšanas pamatprasmes, tāpēc es domāju, ka būtu jautrs blakusprojekts izturēties un tikt kontrolētam tā, it kā tas būtu RC (radio vadāms) transportlīdzeklis., bet tā vietā izmantojiet USB Gamepad.

Rezultāti ir bijuši apmēram tikpat labi vai labāki, kā es gaidīju.

USB Gamepad maršruta priekšrocība ar daudzām programmām ir tā, ka es varu to pielāgot un pievienot jau paveiktajam. Man nav nekādas faktiskas pieredzes RC transportlīdzekļa veidošanā, bet es iedomājos, ka tas ir diezgan iestrēdzis neatkarīgi no tā, kāds ir RC raidītājs (kursorsviras/pogas utt.) Un RC uztvērējs.

Piemēram, esmu pievienojis zināmu atzīšanu, ka robots ir trāpījis pret sienu, tikai ļaujot programmatūrai noteikt lielas strāvas un zemas kodētāja ātruma vērtības.

Pēc izvēles robotam var pievienot dažas USB tīmekļa kameras, atkarībā no to daudzuma un to izvietojuma, var vadīt robotu pa dzīvojamo zonu un citā telpā, sēžot kaut kur citur pie datora, kuram ir pievienots USB Gamepad to.

Šī pamācība nebūs patiesa, detalizēta, visaptveroša, soli pa solim, bet es centīšos sniegt pēc iespējas vairāk informācijas.

Piegādes

Ieteiktās daļas: Lielāko daļu no tā es ieguvu no Servo City (Actobotics).

2 - 13,5 U -kanāli, pamatnes rāmja sāniem. Motori ir uzmontēti uz šī. Es izvēlējos kaut ko īsāku, un mani motori ir uzstādīti pašos stūros, un tas apgrūtināja to uzstādīšanu.

2 - 12 collu U kanāli pamatrāmja priekšpusei un aizmugurei.

2 - 15 U kanāli buferiem, priekšā un aizmugurē

2 - 7 (vai tas bija 7,5 collas?) U kanāli priekšējām kolonnām. Tas nav pārāk kritiski, to garumi var atšķirties. Tas ir atkarīgs no tā, cik garas ir aizmugurējās kolonnas un kādā augstumā izvēlaties novietot leņķisko U-kanāls, kas savieno starp tiem.

2-(garums?) U-kanāli leņķiskajam elementam, no priekšpuses uz aizmuguri, kas savieno vertikālās kolonnas. Tas ir kritiski, jo Servo City / Actobotics šim nolūkam pārdod 45 grādu leņķveida paneļus vai kronšteinus, taču jums būs jāveic dažas matemātikas / trig, lai pārliecinātos, ka iegūstat pareizo garumu.

2-(garums?) U-kanāli, kas kalpo kā augstāka līmeņa sānu buferi, tie atkal ir atkarīgi no tā, ko jūs darāt ar pamatni

2-(garums?) U-kanāli, kas kalpo kā augstāka līmeņa priekšējie un aizmugurējie buferi, tāpat kā iepriekš.

1 - (garums?) U -kanāls, kas kalpo kā augšējais elements, aptver aizmugurējās kolonnas. Šis var nebūt pārāk kritisks, jo jūs varat to uzstādīt uz augšu vai priekšā vai aiz vertikālajām kolonnām.

12 (aptuveni) L kanāli vai kronšteini. Tie kalpo vairākiem mērķiem, bet būtībā nodrošina pamatnes rāmja un vertikālo kolonnu stūru strukturālo integritāti/izturību.

4 (+?) 3 bedrīšu līdz 5 caurumu plakanie kanāli. Tie nodrošina arī robota strukturālo izturību.

ServoCity pārdod divus galvenos plakano plakano paneļu veidus, kas ir noderīgi, lai tos izmantotu kā apakšējo slīdošo pannu vai augšpusi, kur novietotu akumulatoru un / vai kontrolierus, vai pat augstāku virsmu sensoriem.

Ir 4 (4,5?) "X 12" panelis, un es domāju, ka otrs ir 9 (9,5?) "X 12 panelis.

Tagad šeit lietas kļūst interesantas un var būt mulsinošas un dārgas (tiek pievienotas mazas detaļas). Visus kanālus utt. Var savienot viens ar otru, izmantojot šos savienojošos elementus, no kuriem ir vairāki. Šeit es atvainojos, ka man nav visaptveroša, detalizēta, specifiska detaļu saraksta.

Un lieta tāda.. tu īsti nezini, kuras tev varētu būt vajadzīgas vai cik daudz.. jo ir tik daudz veidu, kā šos gabalus salikt kopā.

Es varu uzskaitīt, ko esmu izmantojis:

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

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

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

Tālāk minētie divi ir ļoti ērti, un es vienkārši uzkrātu šos:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Tālāk ir visas skrūves (skrūves). Es sāku ar KATRU izmēru paketi, un esmu izgājusi cauri lielākajai daļai. Es izmantoju garākas skrūves, kur izmēram nebija nozīmes, un īsākās skrūves rezervēju tur, kur tās bija OBLIGĀTAS, jo neviens cits garums nedarbosies.

Visbeidzot, jums vajadzētu saņemt 1 maisiņu no šiem:

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

Es neizmantoju tik daudz, bet tie (es domāju) ir ļoti svarīgi, lai pārliecinātos, ka jūsu motori laika gaitā nevibrē no rāmja. U-kanāla dēļ uz vienu motoru darbotos tikai divi

Jums būs nepieciešami vismaz četri no tiem, iespējams, iegūsit papildus vienu, ja kādam nodarīsit bojājumus (ticiet man, iespējams, jūs vairākas reizes ieslēdzat / noņemat motorus):

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

Parasti motora vārpstas ir 6 mm, un asis ir 1/4 collas (0,25 collas).

Es saņemtu dažas melnas skrūves, domājams, stiprākas, un izmantotu tās iepriekšminētajām skavām, un neizmantoju skavas, kas nāk kopā ar skavām:

(Es domāju, ka šie ir tie):

4 - 1/4 "(0,25") diametra gultņi

1 - soma ar melniem 1/4 collu starplikām

4 - D -rumbu nostiprināšana

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

4-D-vārpstas (#6340621.375 "(1-3/8"))

4-6 collu lieljaudas riteņi

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

Ņemiet vērā, ka man patīk šie riteņi, bet tiem ir cieta gumijas mala. Šķiet, ka tie labi darbojas uz cietām grīdām, paklājiem un, iespējams, cietām betona pastaigām. Neveiksies uz zāles, smiltīm utt.

ARĪ viņiem būs tendence notraipīt jūsu paklāju !!!

4 - motori:

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

Es gāju ar 223 apgr./min, labu iekštelpu ātrumu, kā arī varēju lēni kustināt savu robotu (smagu ar 2 SLA 12V baterijām).

2 - motoru kodētāji motoriem. (Servo City Roboclaw apstrādā tikai 2 kodētājus)

1 - Roboclaw 2X45A motora kontrolieris, pārliecinieties, ka esat saņēmis to, uz kura ir zaļie spaiļu bloki, nevis tapas…. labi … katram ir savas priekšrocības. Atceroties.. es, iespējams, būtu dabūjis tapas.

Es domāju, ka tas ir no Servo City.

SparkFun pārdod Arduino Uno (to es izmantoju), kā arī Redboard Artemis kā jūsu diska pārvaldnieku.

Jūs vēlaties Raspberry Pi 3 (vai 4?) Kā savu augsta līmeņa "smadzenes" un saskarni ar jums.

Jums būs nepieciešama elektroinstalācija, slēdži, drošinātāji un ļoti izturīga "atpakaļgaitas" diode.

Es izmantoju Duracell 12V 14AH dziļā cikla SLA akumulatoru, bet jūs varat izmantot jebko.

BRĪDINĀJUMS! Šī robota dizainā (TALL un WIDE, bet SHORT) tiek pieņemts sava veida smags smaguma centrs, piemēram, SLA akumulators. Tas var nedarboties ar šiem cita veida jaunāku tehnoloģiju akumulatoriem. LiPo, Lion uc Tas varētu viegli apgāzties.

No Pololu es saņēmu dažus mucas kontaktdakšu adapterus, lai es varētu patstāvīgi barot Arduino un/vai Redboard, lai gan tie būtu savienoti ar Raspberry, izmantojot USB, jo es negribēju paļauties uz aveņu jaudu.. (Jo īpaši montāžas kameras, sensori utt.)

Jums būs nepieciešams sprieguma regulators no 12 līdz 5 V, vismaz 5A (?) Priekš aveņu. Pārējie var apstrādāt jebko no 7 līdz 15 V, tieši ar SLA akumulatoru.

Tas ir par daļām.

Ko es NEDARĪTU - 90 grādu slīps pārnesums.

Atkal manā Robotics youtube atskaņošanas sarakstā ir daudz videoklipu, kuros sīki aprakstīta lielākā daļa iepriekš minēto.

1. solis: būvniecība

Atklāti sakot, visi mani būvniecības soļi jau ir youtubes formā. Tos varat redzēt manā Robotics atskaņošanas sarakstā, sākot ar "Wallace Robot 4". Arī iepriekšējiem (Wallace II, Wallace III) ir labs materiāls

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

2. darbība: pārbaudiet Roboclaw, motorus un kodētājus

Roboclaw (BasicMicro) veidotājiem ir Windows lietojumprogramma, kuru varat izmantot, lai pārliecinātos, ka pareizi pievienojāt motorus un kodētājus Roboclaw. Jūs paralēli Roboclaw pievienosiet vienas puses motorus. Jūs varat izvēlēties izmantot kodētāja vadus tikai aizmugurējiem vai priekšējiem motoriem, vai varbūt pat labāk - DIAGONĀLI.

Mana ieteikuma iemesls ir saistīts ar (vēlāk) iestrēguša robota pārbaudi. Stāvoklis pa diagonāli, ja priekšējie/aizmugurējie riteņi negriežas, var būt labāks nekā tikai priekšējais vai tikai aizmugurējais.

PIEZĪME: ko es neesmu darījis, ir izmantot Arduino, lai arī (izmantojot GPIO tapas) izveidotu savienojumu ar kodētājiem - ja jūs to izdarītu, jums varētu būt Roboclaw rokturis ar 2 kodētājiem un pēc tam ar Arduino rīkoties ar pārējiem diviem, un vienkārši vaicājiet Roboclaw par divām kodētāja vērtībām (un ātrumiem).

PIEZĪME. Es izmantoju BasicMicro lietojumprogrammu, lai iepriekš konfigurētu Roboclaw, lai to palielinātu / samazinātu. Tas ir labi, lai aizsargātu aparatūru un elektroniku. Manā Robotics atskaņošanas sarakstā ir video par to.

Es gandrīz aizmirsu: es arī nopirku dažus ložu savienotāja kabeļus, kas iet starp motora kabeļiem un Roboclaw. PIEZĪME. To darot, pamanīsit, ka kopējais kabeļa garums ir PATIEŠI GARS. Bet es negribēju, lai man būtu jāgriež, ja man tas nav vajadzīgs. Es (vēlākām darbībām) saskāros ar komunikācijas problēmām ar USB starp Raspberry un Arduino, iespējams, EMI trokšņa dēļ.

Ja tas kļūst par problēmu, varat sagriezt vadus īsus - varat iegādāties arī metāla ekranējumu (no Amazon, 1 diametrs).

Pēdējā lieta: tas man vēl ir jāizdara-lai Roboclaw automātiski konfigurētu vai automātiski noregulētu (izmantojot kodētājus), lai gan kreisās, gan labās puses motori kustētos ar tādu pašu ātrumu un robots iet taisni.

Manējais ļoti nedaudz izliekas apmēram 12 pēdu garumā, bet nepietiekami, lai es uzskatītu, ka ir jādara kaut kas.

3. solis: Arduino pievienošana un programmēšana

Jums būs nepieciešams mucas kontaktdakša un daži vadi, kā arī USB kabelis. Pārliecinieties, vai esat izvēlējies pareizo Arduino savienotājam.

Jums būs jālejupielādē Arduino IDE.

Šeit Github ir jaunākā skice, kas ļauj vadīt robotu:

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

Jūs savienosit Arduino ar datoru, kurā darbojas IDE, un, pamatojoties uz skices rakstīšanu, jūs izmantosit Arduino 10. un 11. tapu sērijveida komunikācijai (programmatūras sērija) ar Roboclaw.

Es izstrādāju vienkāršu sakaru protokolu starp Raspberry Pi un Arduino.

Tas ir balstīts uz ASCII rakstzīmēm, kas atvieglo atkļūdošanu un testēšanu, tikai izmantojot Arduino IDE "seriālā monitora" logu.

Komandas sākas ar skaitli "0" (nulle) un pēc vajadzības iet uz augšu

Komandas, kas sākas ar "20", ir tiešas Roboclaw komandas, un zem šī skaitļa ir tikai ar Arduino saistītas komandas.

EMI trokšņa dēļ es uzlaboju komandu virkni, iekļaujot kontrolsummu.

Tātad jebkura virkne ietvers:

# žetonu skaits virknē, ieskaitot šo

kontrolsumma

Piemēram, sakiet, ka vēlaties, lai Arduino atbildētu ar komandu izvēlni:

4 0 12 16

"4" ir četri žetoni virknē.

"0" ir komanda MENU.

"12" ir nejaušs skaitlis, kuru es izvēlējos.

"16" ir 4 + 0 + 12 summa.

Tā pati MENU komanda varētu būt atšķirīga:

4 0 20 24

Tā kā es izvēlējos citu nejaušu skaitli, arī kontrolsumma ir atšķirīga.

Piemēram, pieņemsim, ka vēlaties virzīties uz priekšu ar 100 % ātrumu:

5 29 0 134 100

"5" pieci žetoni

"29" komanda FORWARD

"0" nejaušs skaitlis

"134" kontrolsumma

"100" parametrs 1 (ātrums šajā gadījumā)

Ja Arduino nevar pārbaudīt ienākošo virkni, tā to vienkārši nomet / ignorē, bez atbildes.

Ja Arduino nesaņem nākamo kustības komandu ar X milisekundēm, tas nosūta STOP motorus uz Roboklavu.

Arduino sāk darboties un sāk sūtīt automātisko statusu uz USB portu … ja vien nav teikts pārtraukt to darīt.

Šajā brīdī jums vajadzētu būt gatavam mēģināt kontrolēt Roboclaw un vērot dzinēju griešanos, vienkārši izmantojot IDE "Sērijas monitoru".

4. darbība. Raspberry Pi (node.js) pievienošana un programmēšana

Atkal, ja paskatās uz manu Robotics atskaņošanas sarakstu, pat no paša sākuma, es gāju pāri katram solim, lai Raspberry sāktu darboties.

Viena lieta, ko es varētu pamanīt, ir tāda, ka jums būs nepieciešams 5V regulators un vai nu kaut kā tam izveidot, pārgriezt/pārveidot USB kabeli, vai arī barot Raspberry citā veidā.

Šeit Github ir viss, kas nepieciešams avenēs, lai sazinātos ar Arduino, izmantojot USB.

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

Ir pat pārbaudes skripti.

Varat apskatīt servera kodu node.js, un jūs redzēsit, kā Raspberry pārvērš īso skaitlisko instrukciju REST tipa URL virknēs. Jūs varat izmantot "curl", lai nosūtītu testa komandas.

Piemērs:

jūsu RP3 IP adrese: 8084/arduino/api/forward/50

liks motoriem īslaicīgi pagriezt riteņus uz priekšu.

Ja jūs to ievietojat čaulas skripta cilpā, jūs redzētu, ka riteņi turpina griezties.

Kods node.js (server.js) ietver atkārtota savienojuma funkciju gadījumam, ja sērijveida komēdijas tiek pazaudētas Arduino. To var pārbaudīt, vienkārši atvienojot Arduino no aveņu un atkārtoti pievienojot to.

Pārliecinieties, ka abu sērijas pārraides ātrums ir vienāds.

Tā kā Arduino nolaiž sliktas datu paketes un tāpēc, ka node.js līmenī un pārlūkprogrammas javascript līmenī viss ir kodēts, lai nosūtītu daudzas "drive" komandas, man ir izdevies palaist pat 2 000 000 bodu (2 Mb / s).

Ja testa skripti tiek palaisti un redzat riteņu griešanos, esat gatavs nākamajam solim.

5. solis: pēdējais solis - Web lapas klienta programmēšana / izmantošana

Github saitē uz visu šo aveņu daļu ir iekļauti klienta faili.

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

Viņi apstrādā USB Gamepad, izmantojot Gamepad API (uz pārlūkprogrammu), un jums vajadzētu redzēt dažādas pogas un slīdņus, kas pieejami arī tīmekļa lapā.

JavaScript kods vaicā (aptaujās) X un Y ass vērtības kādai no kursorsvirām.. (atkarībā no tā, kādas kursorsviras/spēļu pults jums ir, iespējams, būs jāpielāgo kods). Tas aptaujās ļoti ātri, un visas šīs vērtības tiek aktivizētas serverī node.js, klausoties 8084.

Neapstrādātās kursorsviras X un Y ass vērtības ir no 0 līdz 1.

Bet Roboclaw motora kontrollera bibliotēkas funkcija, kas tiek izmantota Arduino dzinēju darbināšanai, sagaida vērtību no -100 līdz 0 (atpakaļ) vai (0 līdz 100) uz priekšu.

Soo…. tas ir mērķis iekļaut p5.min.js. Vienkārši gadās, ka ir šī ļoti jauka, ērta kartes () funkcija, kurā jūs piešķirat tai neapstrādātu vērtību, neapstrādātu (pašreizējo) diapazonu un jaunu, vēlamo diapazonu. Un tā neapstrādāto vērtību pārvērš par vērtību jaunā, kartētā diapazonā.

Vēl viens punkts: ar 100 ātrumu robots var būt ļoti viltīgs. Es nepārtraukti saskāros ar kaut ko. Bet, pat uzlabojoties, tas joprojām ir jutīgs, pagriežot pa kreisi vai pa labi.

Kaut kas, ko jūs varētu pievienot, būtu līdzīgs pašreizējam tīmekļa lapas maksimālajam slīdnim. Šis slīdnis nosaka augstāko vai maksimālo vērtību, uz kuru kartēs kursorsviras X un Y.

Piemērs:

Pieņemsim, ka kartējat 0 -> 1 līdz 0 -> 100. Nospiežot kursorsviru līdz galam, jūs esat 100. Pieskāriens. Varētu būt pārāk ātri.

Bet, ja jūs slīdat šo maksimālā ātruma slīdni atpakaļ, tagad jūs kartējat 0 -> 1 līdz 0 -> 80 vai 70.

Tas nozīmē, ka jums ir lielāka rīcības brīvība, lai pārvietotu kursorsviru bez tik lielām izmaiņām ātrumā, kas tiek nosūtīts uz node.js (un uz Arduino).

Turklāt jūs varētu atdalīt X (pagriezt pa kreisi vai pa labi) no Y (uz priekšu vai atpakaļ) savos maksimālajos pieejamos ātrumos.

Tādējādi jūs varētu atstāt Y pie 0 līdz 100, no 0 līdz -100 ātrai lineārai kustībai, bet samazināt Xs maksimālo ātrumu, lai nodrošinātu kontrolētāku rotācijas kustību. Labākais no abām pasaulēm.

6. darbība: pēc izvēles: vadiet robotu ar peles vilkšanas un / vai pieskāriena notikumiem

Ja esat nonācis tik tālu, jūs zināt, ka programmatūras slāņi, sākot no pārlūkprogrammas un beidzot ar Javascript un beidzot ar Raspberry node.js serveri, beidzot arduino, pārveido Gamepad kursorsviru X un Y koordinātas par " komandas uz priekšu (vai "atpakaļ" utt.) (un to ātruma vērtību).

Turklāt jūs zināt, ka, lai gan kursorsviru Xs un Ys ir negatīvi no 1 līdz nullei līdz plus 1, tie ir jāpārvērš no nulles līdz 100. Nu, maksimums ir atkarīgs no maksimālā ātruma iestatījuma tīmekļa lapā.

Soo … vienīgā lieta, kas jādara, lai izmantotu vai nu peli, vai pieskārienu notikumiem (kā viedtālrunī), ir iemūžināt šos notikumus, satvert X un Y.

BET ---- šie X un Y nav starp negatīviem 1 un 1. Tie sākas ar 0 un palielinās pozitīvi, jo tie būtībā ir kāda HTML elementa (piemēram, sāknēšanas paneļa) vai audekla pikseļi vai relatīvās ekrāna koordinātas.

Tātad atkal P5 Js bibliotēkas funkcija "map ()" ir ļoti ērta, lai atkārtoti kartētu to, kas mums nepieciešams.

Es pārveidoju kodu tā, lai tajā būtu divas dažādas tīmekļa lapas - viena darbvirsmai, izmantojot Gamepad, otra - mobilajām ierīcēm, izmantojot pieskāriena notikumus.

Turklāt, kad X un Y ir atkārtoti kartēti, tie tiek ievadīti vienā koda ķēdē utt., Tāpat kā Xs un Ys no Gamepad.

Ieteicams: