Sisällysluettelo:

4WD -robotti, jota ohjataan USB -etäohjaimen kautta: 6 vaihetta
4WD -robotti, jota ohjataan USB -etäohjaimen kautta: 6 vaihetta

Video: 4WD -robotti, jota ohjataan USB -etäohjaimen kautta: 6 vaihetta

Video: 4WD -robotti, jota ohjataan USB -etäohjaimen kautta: 6 vaihetta
Video: 😩 Totaalinen pettymys vai syy iloon? Yksityiskohtainen opas Audi A6 C6:een. 2024, Marraskuu
Anonim
Image
Image

Seuraavaa robotiikkaprojektiani varten minun oli pakko suunnitella/suunnitella oma robottialustani odottamattomien olosuhteiden vuoksi.

Tavoitteena on, että se on itsenäinen, mutta ensin minun piti testata sen peruskyky ajokykyyn, joten ajattelin, että olisi hauska sivuprojekti käyttäytyä ja olla hallittu ikään kuin se olisi RC (radio-ohjattu) ajoneuvo mutta käytä sen sijaan USB -peliohjainta.

Tulokset ovat olleet suunnilleen yhtä hyviä tai parempia kuin odotin.

Etuna USB -peliohjaimen reitillä, jossa on paljon ohjelmointia, on, että voin muokata sitä ja lisätä siihen, mitä olen jo tehnyt. Minulla ei ole todellista kokemusta RC -ajoneuvon rakentamisesta, mutta kuvittelen, että yksi on melko jumissa kaikesta RC -lähettimestä (ohjaussauvat/painikkeet jne.) Ja RC -vastaanottimesta.

Olen esimerkiksi lisännyt jonkin verran tunnistusta siitä, että robotti on osunut seinään vain antamalla ohjelmiston havaita suuret virrat ja pienet anturin nopeusarvot.

Vaihtoehtoisesti robottiin voidaan lisätä joitakin USB -verkkokameroita, riippuen niiden määrästä ja sijainnista, robotti voidaan ajaa olohuoneen ympäri ja toiseen huoneeseen istuen muualla tietokoneen edessä, johon USB -peliohjain on liitetty se.

Tämä ohje ei ole todellinen, yksityiskohtainen, kattava, vaiheittainen ohje, mutta yritän antaa niin paljon yksityiskohtia kuin voin.

Tarvikkeet

Ehdotetut osat: Suurin osa tästä hankittiin Servo Citystä (Actobotics).

2 - 13,5 U -kanavat, rungon sivuille. Moottorit on asennettu tähän. Valitsin jotain lyhyempää ja moottorini on asennettu aivan kulmiin, mikä vaikeutti niiden asentamista.

2-12 tuuman U -kanavat rungon etu- ja takaosaan.

2 - 15 U -kanavat puskureihin, edessä ja takana

2 - 7 (vai oliko se 7,5 tuumaa?) U -kanavat etupylväille. Tämä ei ole liian kriittistä, pituudet voivat vaihdella. Se riippuu siitä, kuinka korkeat takapylväät ovat ja mihin korkeuteen valitset U-kanava, joka yhdistää niiden välille.

2-(pituus?) U-kanavat kulmakappaleelle, edestä taakse, yhdistävät pystypylväät. Tämä on kriittistä, koska Servo City / Actobotics myy tähän tarkoitukseen 45 asteen kulmapaneeleja tai kiinnikkeitä, mutta sinun on tehtävä matematiikkaa / triggeriä varmistaaksesi, että saat oikeat pituudet.

2-(pituus?) U-kanavat, jotka toimivat korkeamman tason sivupuskureina, taas nämä riippuvat siitä, mitä teet alustalla

2-(pituus?) U-kanavat, jotka toimivat ylemmän tason etu- ja takapuskureina, sama ongelma edellä.

1 - (pituus?) U -kanava, joka toimii ylimpänä osana, ulottuu takapylväiden poikki. Tämä ei välttämättä ole liian kriittinen, koska voit asentaa pystypylväiden päälle tai eteen tai taakse.

12 (noin) L-kanavaa tai kiinnitystä. Näillä on useita tarkoituksia, mutta ne tarjoavat olennaisesti rakenteellista eheyttä/lujuutta rungon ja pystysuorien pylväiden kulmille.

4 (+?) 3-reikäinen 5-reikäinen litteä kanava. Ne myös antavat robotille rakenteellista lujuutta.

ServoCity myy kahta päätyyppiä suurikokoisia litteitä paneeleja, joita voidaan käyttää pohjalaatikkona tai yläpuolella, johon akku ja / tai ohjaimet menevät, tai jopa korkeammalle pinnalle antureille.

Siellä on 4 (4,5?) "X 12" -paneeli, ja mielestäni toinen on 9 (9,5?) "X 12 -paneeli.

Nyt tämä on paikka, jossa asiat muuttuvat mielenkiintoisiksi ja voivat olla hämmentäviä ja kalliita (pienet osat tulevat yhteen). Kaikki kanavat jne. Voidaan liittää toisiinsa näiden liitäntäkappaleiden kautta, joita on useita. Pahoittelen, että minulla ei ole kattavaa, yksityiskohtaista ja erityistä osaluetteloa.

Ja asia on.. et todellakaan tiedä, mitä tarvitset tai kuinka monta.. koska voit yhdistää nämä osat yhteen niin monella tavalla.

Voin luetella mitä olen käyttänyt:

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

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

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

Seuraavat kaksi ovat erittäin käteviä, ja varastoisin vain nämä:

www.servocity.com/single-screw-plate

www.servocity.com/dual-screw-plate

Seuraavaksi on kaikki ruuvit (pultit). Aloitin KOKO -kokoisella paketilla ja olen käynyt läpi suurimman osan niistä. Käytin pidempiä ruuveja, joiden koolla ei ollut väliä, ja varasin lyhyemmät ruuvit siihen, missä ne olivat VAATIVIA, koska mikään muu pituus ei toimisi.

Lopuksi sinun pitäisi saada 1 pussi näitä:

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

En käyttänyt niin paljon, mutta ne (mielestäni) ovat kriittisiä sen varmistamiseksi, että moottorisi eivät värise irti kehyksestä ajan mittaan. Vain kaksi toimisi moottoria kohti U-kanavan vuoksi

Tarvitset vähintään neljä näistä, saatat hankkia ylimääräisen, jos vahingoitat jotakin (luota minuun, saatat laittaa moottorin päälle / ottaa pois muutaman kerran):

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

Tyypillisesti moottorin akselit ovat 6 mm ja akselit 1/4 tuumaa (0,25 tuumaa).

Hankin mustia ruuveja, oletettavasti vahvempia, ja käytän niitä yllä oleviin kiinnikkeisiin, enkä käytä kiinnikkeiden mukana tulevia ruuveja:

(Mielestäni nämä ovat niitä):

Halkaisijaltaan 4 - 1/4 "(0,25") laakerit

1 - pussi mustia 1/4 välikappaleita

4 - D -napojen kiinnitys

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

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

4-6 tuuman raskaat pyörät

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

Huomaa, että rakastan näitä pyöriä, mutta niissä on kova kumireuna. Ne näyttävät toimivan hyvin kovilla lattioilla, matoilla ja luultavasti kovilla betonikävelyillä. Ei pärjää ruoholla, hiekalla jne.

Myös niillä on taipumus tahrata mattoasi !!!

4 - moottorit:

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

Menin 223 RPM: n kanssa, hyvä huippunopeus sisätiloissa, ja pystyin myös siirtämään robottiani (raskasta 2 SLA 12V -akkua) melko helposti hidastettuna.

2 - moottoreiden moottorianturit. (Servo Cityn Roboclaw käsittelee vain 2 anturia)

1 - Roboclaw 2X45A -moottorisäädin, varmista, että saat sen, jossa on vihreät riviliittimet, ei nastoja…. no … jokaisella on omat etunsa. Jälkeenpäin ajateltuna.. Olen ehkä saanut nastat.

Luulen, että se on Servo Citystä.

SparkFun myy Arduino Unoa (sitä käytin) ja myös Redboard Artemistä asemanhallintasi.

Haluat Raspberry Pi 3: n (tai 4?) Korkean tason "aivoiksi" ja käyttöliittymäksi sinulle.

Tarvitset johdot, kytkimet, sulakkeet ja erittäin kestävän "flyback" -diodin.

Käytin Duracell 12V 14AH syväkierros-SLA-akkua, mutta voit käyttää mitä tahansa.

VAROITUS! Tämän robotin suunnittelussa (TALL ja WIDE, mutta SHORT) oletetaan eräänlainen raskas painopiste, kuten SLA -akku. Se ei välttämättä toimi hyvin muuntyyppisten uudempien tekniikoiden akkujen kanssa. LiPo, Lion jne. Se voi helposti kaatua.

Pololulta sain muutamia tynnyripistokesovittimia, jotta voisin itsenäisesti syöttää virtaa Arduinolle ja/tai Redboardille, vaikka ne olisi kytketty Vadelmiin USB -liitännän kautta, koska en halunnut luottaa Vadelman tehoon. (Erityisesti kamerat, anturit jne.)

Tarvitset 12-5 V: n askeljännitteen säätimen, vähintään 5A (?) Vadelmalle. Muut voivat käsitellä mitä tahansa 7–15 V: n väliltä, joten suoraan SLA -akkuun.

Siitä osittain.

Mitä en tekisi - 90 asteen viistetty vaihteisto.

Jälleen Robotics -youtube -soittolistallani on monia videoita, joissa kerrotaan yksityiskohtaisesti suurin osa yllä olevista.

Vaihe 1: Rakentaminen

Rehellisesti sanottuna kaikki rakentamisvaiheeni ovat jo youtuben muodossa. Näet ne Robotics -soittolistastani alkaen "Wallace Robot 4". Edellisissä (Wallace II, Wallace III) on myös hyvää materiaalia

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

Vaihe 2: Testaa Roboclaw, moottorit ja enkooderit

Roboclawin (BasicMicro) valmistajilla on Windows -sovellus, jonka avulla voit varmistaa, että olet kytkenyt moottorit ja enkooderit oikein Roboclawiin. Kytket samanpuoleisia moottoreita rinnakkain Roboclawin kanssa. Voit käyttää anturijohtoja vain takamoottoreissa tai etumoottoreissa tai ehkä jopa paremmin - DIAGONALLY.

Ehdotukseni syy on juuttuneen robotin tarkistaminen (myöhemmin). Etu-/takapyörien kääntyminen vinosti voi olla parempi kuin vain etu- tai takapyörä.

HUOMAUTUS: mitä en ole tehnyt, olen käyttänyt Arduinoa myös yhteyden muodostamiseen (GPIO -nastojen kautta) enkoodereihin - jos teit niin, sinulla voi olla Roboclaw -kahva 2 anturia ja sitten Arduino hoitaa kaksi muuta ja vain kysy Roboclawilta sen kaksi anturiarvoa (ja nopeutta).

HUOMAUTUS: Käytin BasicMicron sovellusta Roboclawin esiasetuksiin Ramping Up / Ramping Down. Tämä on hyvä suojaamaan laitteistoa ja elektroniikkaa. Siitä on video Robotics -soittolistallani.

Melkein unohdin: ostin myös joitain luodinkytkentäkaapeleita, jotka menevät moottorikaapelien ja Roboclawin väliin. HUOMAUTUS: jos teet tämän, huomaat, että kaapelin kokonaispituus on TODELLA PITKÄ. Mutta en halunnut leikata mitään, jos minun ei tarvinnut. Tein (myöhempiä vaiheita varten) tiedonsiirto -ongelmia USB: n kanssa Raspberryn ja Arduinon välillä, luultavasti EMI -kohinan takia.. mutta olen kiertänyt sen ohjelmiston kanssa.

Jos siitä tulee ongelma, voit katkaista johdot lyhyiksi - voit myös ostaa metallisuojauksen (Amazonilta, halkaisija 1 ).

Viimeinen asia: Tämä on vielä tekemättä-anna Roboclawin automaattinen konfigurointi tai automaattinen viritys (käyttämällä antureita) niin, että sekä vasen että oikea moottori liikkuvat samalla nopeudella ja robotti menee suoraan.

Omani kaartuu hyvin hieman yli 12 jalkaa, mutta ei tarpeeksi, että tunsin tarvetta tehdä asialle mitään.

Vaihe 3: Arduinon lisääminen ja ohjelmointi

Tarvitset tynnyripistokkeen ja johdotuksen sekä USB -kaapelin. Varmista, että saat oikean liitännän Arduino -liittimeen.

Sinun on ladattava Arduino IDE.

Tässä Githubissa on uusin luonnos, joka käsittelee robotin ajamista:

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

Yhdistät Arduinon tietokoneeseesi, jossa on IDE, ja luonnoksen kirjoitustavan perusteella käytät Arduinon nastoja 10 ja 11 sarjaliikenteessä (Software Serial) Roboclaw'n kanssa.

Kehitin yksinkertaisen viestintäprotokollan Raspberry Pi: n ja Arduinon välillä.

Se perustuu ASCII-merkkiin, mikä helpottaa virheenkorjausta ja testausta vain Arduino IDE: n "sarjamonitori" -ikkunan avulla.

Komennot alkavat numerosta "0" (nolla) ja kasvavat tarpeen mukaan

"20": stä alkavat komennot ovat suoria Roboclaw-komentoja, ja tämän numeron alapuolella olevat komennot ovat ehdottomasti Arduinoon liittyviä komentoja.

EMI -kohinan vuoksi paransin komentoriviä sisältämään tarkistussumman.

Joten mikä tahansa merkkijono sisältää:

# merkkijono merkkijono mukaan lukien tämä

tarkistussumma

Oletetaan esimerkiksi, että haluat Arduinon vastaavan komentovalikollaan:

4 0 12 16

"4" on neljä merkkijonoa merkkijonossa.

"0" on MENU -komento.

"12" on satunnainen numero, jonka valitsin.

"16" on 4 + 0 + 12 summa.

Sama MENU -komento voi olla erilainen:

4 0 20 24

Koska valitsin eri satunnaisluvun, myös tarkistussumma on erilainen.

Oletetaan esimerkiksi, että haluat siirtyä eteenpäin 100 %: n nopeudella:

5 29 0 134 100

"5" viisi merkkiä

"29" FORWARD -komento

"0" satunnaisluku

"134" tarkistussumma

"100" parametri 1 (nopeus tässä tapauksessa)

Jos Arduino ei voi vahvistaa saapuvaa merkkijonoa, se vain pudottaa sen / jättää sen huomiotta, ei vastausta.

Jos Arduino ei saa seuraavaa X -millisekunnin liikekomentoa, se lähettää STOP -moottorit Roboclawille.

Arduino käynnistyy ja alkaa lähettää automaattista tilaa USB-porttiin … ellei kehoteta lopettamaan sitä.

Tässä vaiheessa sinun pitäisi olla valmis kokeilemaan Roboclaw'n ohjaamista ja moottorien pyörimistä vain käyttämällä IDE: n "Sarjamonitoria".

Vaihe 4: Raspberry Pi: n (node.js) lisääminen ja ohjelmointi

Jälleen kerran, jos katsot Robotics -soittolistani, jopa alusta lähtien, kävin läpi jokaisen vaiheen saadakseni Vadelma käyttöön.

Ainoa asia, jonka olen saattanut kiistää, on se, että tarvitset 5 V: n säätimen ja joko rakentaa, leikata/muokata USB -kaapelia tai virrata Raspberrya toisella tavalla.

Täällä Githubissa on kaikki mitä tarvitset vadelmassa kommunikoidaksesi Arduinon kanssa USB: n kautta.

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

On jopa testikomentoja.

Voit katsoa node.js-palvelinkoodia ja nähdä, kuinka Raspberry muuntaa lyhyet numeeriset ohjeet REST-tyypin URL-merkkijonoiksi. Voit käyttää "curl" -toimintoa testikomentojen lähettämiseen.

Esimerkki:

RP3 -IP -osoitteesi: 8084/arduino/api/forward/50

saa moottorit hetkellisesti pyörimään eteenpäin.

Jos laitat sen komentosarjasilmukkaan, näet pyörien jatkuvan pyörimässä.

Node.js-koodi (server.js) sisältää uudelleenyhteysominaisuuden, jos sarjakommentit menetetään Arduinolle. Voit testata tämän irrottamalla Arduinon vadelmasta ja kytkemällä sen uudelleen.

Varmista, että sarjaliikenteen siirtonopeus on näiden kahden välillä.

Koska Arduino pudottaa huonoja tietopaketteja ja koska node.js -tasolla ja selaimen javascript -tasolla kaikki on koodattu lähettämään monia "ajaa" -komentoja, olen pystynyt suorittamaan jopa 2 000 000 baudia (2 Mbps).

Jos saat testikomennot käyntiin ja näet pyörien pyörivän, olet valmis seuraavaan vaiheeseen.

Vaihe 5: Viimeinen vaihe - Web -sivuohjelman ohjelmointi / käyttö

Asiakastiedostot sisältyvät Github -linkkiin Vadelma -osaan.

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

He käsittelevät USB-peliohjainta Gamepad-sovellusliittymän (selainpohjainen) kautta, ja sinun pitäisi nähdä eri painikkeet ja liukusäätimet, jotka ovat saatavilla myös verkkosivulla.

JavaScript-koodi kyselee (kyselee) jonkin ohjaussauvan X- ja Y-akselin arvoja. Se kyselee erittäin nopeasti, ja se laukaisee kaikki nämä arvot node.js -palvelimelle kuuntelemalla 8084.

Ohjaussauvojen X- ja Y-akselin raaka-arvot ovat välillä 0 ja 1.

Mutta Arduinossa moottorien käyttämiseen käytettävä Roboclaw -moottorinohjainkirjasto -toiminto odottaa arvoa -100 -0 (taaksepäin) tai (0 -100) eteenpäin.

Soo…. sen tarkoitus on sisällyttää p5.min.js. Sattuu vain olemaan tämä erittäin mukava, kätevä kartta () -toiminto, jossa annat sille raaka -arvon, sen raaka -alueen (nykyisen) ja uuden halutun alueen. Ja se muuntaa raaka -arvon arvoksi uudella, kartoitetulla alueella.

Toinen asia: 100 nopeudella robotti voi olla hyvin hankala. Olin jatkuvasti törmännyt johonkin. Mutta vaikka paranetkin sitä, se on silti kosketeltava pyöritettäessä vasemmalle tai oikealle.

Voit lisätä jotain, joka olisi samanlainen kuin verkkosivun nykyinen Max Speed -liukusäädin. Tämä liukusäädin määrittää, mikä on suurin tai suurin arvo, johon ohjaimet Xs ja Ys yhdistetään.

Esimerkki:

Oletetaan, että kartoitat 0 -> 1 -0 -> 100. Kun painat ohjaussauvaa kokonaan, olet 100: ssa. Koskettava. Voi olla liian nopea.

Mutta jos liu'utat sitä Max Speed -liukusäädintä hieman taaksepäin, nyt kartoitat 0 -> 1 -0 -> 80 tai 70.

Tämä tarkoittaa, että sinulla on enemmän liikkumavaraa ohjaussauvan siirtämiseen ilman niin suurta muutosta nopeudessa, joka lähetetään solmulle.js (ja Arduinolle).

Lisäksi voit erottaa X: t (kiertää vasemmalle tai oikealle) Y: stä (eteen- tai taaksepäin) omiin maksiminopeuksiinsa.

Voit siis jättää Y: t 0-100, 0-100 nopean lineaarisen liikkeen vuoksi, mutta pienentää Xs -maksiminopeutta hallittuun kiertoliikkeeseen. Parhaat puolet molemmista.

Vaihe 6: Valinnainen: Aja robotti hiirellä vetämällä ja / tai koskettamalla tapahtumia

Jos olet päässyt tähän asti, tiedät, että ohjelmistokerrokset, jotka alkavat selaimesta ja porautuvat Javascriptin kautta Raspberry node.js -palvelimelle ja lopulta arduinoon, muuttavat Gamepad-ohjaimen X- ja Y-koordinaatit " eteenpäin (tai "taaksepäin" jne.) komentoja (ja niiden nopeusarvoa).

Lisäksi tiedät sitten, että vaikka ohjaussauvojen X: t ja Y: t ovat negatiivisia 1, nolla, plus 1, ne on muunnettava nollan ja 100: n välille. No, maksimi riippuu verkkosivun maksiminopeusasetuksesta.

Joten … ainoa asia, jota voi käyttää joko hiiren tai kosketustapahtumien käyttämiseen (kuten älypuhelimessa), on kaapata nämä tapahtumat, napata X- ja Y -näppäimet.

MUTTA---- nämä X: t ja Y: t EIVÄT ole negatiivisten 1 ja 1 välissä. Ne alkavat nollasta ja kasvavat positiivisesti, koska ne ovat olennaisesti jonkin HTML-elementin (kuten käynnistysnauhapaneelin) tai kankaan kuvapisteitä tai suhteellisia näytön koordinaatteja.

Joten taas P5: n Js-kirjaston "map ()" -toiminto on erittäin kätevä kartoittaa tarvitsemamme.

Muokkasin koodin siten, että siinä on kaksi eri verkkosivua, toinen pöytätietokoneelle Gamepadilla ja toinen mobiililaitteille kosketustapahtumien avulla.

Lisäksi kun X: t ja Y: t on kartoitettu uudelleen, ne syötetään samaan koodiketjuun jne., Samoin kuin peliohjaimen X: t ja Y: t.

Suositeltava: