Sisukord:

Ehita oma kilpkonnrobot!: 7 sammu
Ehita oma kilpkonnrobot!: 7 sammu

Video: Ehita oma kilpkonnrobot!: 7 sammu

Video: Ehita oma kilpkonnrobot!: 7 sammu
Video: УПС💕😘 2024, Juuli
Anonim
Ehita oma kilpkonnrobot!
Ehita oma kilpkonnrobot!
Ehita oma kilpkonnrobot!
Ehita oma kilpkonnrobot!
Ehita oma kilpkonnrobot!
Ehita oma kilpkonnrobot!

EDIT:

Lisateavet tarkvara ja juhtimise kohta saate sellelt lingilt:

hackaday.io/project/167074-build-your-own-turtlebot-3-backbone

Otselink koodile on järgmine:

github.com/MattMgn/foxbot_core

Miks just see projekt?

Turtlebot 3 on ideaalne platvorm elektroonikasse, robootikasse ja isegi AI -sse süvenemiseks! Ma teen teile ettepaneku ehitada samm-sammult oma kilptäi taskukohaste komponentidega ilma funktsioone ja jõudlust ohverdamata. Üks asi meeles: esialgse roboti parimate, selle modulaarsuse, lihtsuse ja avatud lähtekoodiga kogukonna tohutu hulga autonoomse navigeerimise ja tehisintellekti pakettide hoidmine.

See projekt on algajatele võimalus omandada arusaamad elektroonikast, mehaanikast ja arvutiteadustest ning kogenenumatele saada võimas platvorm tehisintellekti algoritmide testimiseks ja arendamiseks.

Mida avastate selle projekti raames?

Olete avastamas, milliseid olulisi mehaanilisi ja elektroonilisi osi tuleb täieliku ühilduvuse tagamiseks originaalrobotist hoida.

Kogu koostamisprotsess on üksikasjalik: alates 3D -osade printimisest, kokkupanekust ja mitmest komponendist, jootmisest ja elektroonika integreerimisest kuni Arduino koodikogumiseni. See juhend annab kokkuvõtte „teremaailma” näitest, et tutvustada teile ROS -i. Kui midagi tundub ebaselge, küsige julgelt!

Tarvikud

Elektroonika:

1 x ühe pardaarvuti ROS -i käitamiseks võib olla näiteks Raspberry Pi või Jetson Nano

1 x Arduino DUE, võite kasutada ka UNO või MEGA

Siin on saadaval 1 proto-plaat, mis sobib Arduino DUE pistikuga

2 x 12V alalisvoolumootorit kodeerijatega (valik 100 p / min)

1 x L298N mootorijuht

2 x 5V regulaator

1 x aku (näiteks 3S/4S LiPo aku)

2 x ON/OFF lülitit

2 x LED

2 x 470 kOhm takisti

3 x 4 kontaktiga JST pistikud

1 x USB -kaabel (vähemalt üks SBC ja Arduino vahel)

Andurid:

1 x vooluandur (valikuline)

1 x 9 vabadusastet IMU (valikuline)

1 x LIDAR (valikuline)

Šassii:

16 x moodulplaati Turtlebot (mida saab printida ka 3D -vormingus)

2 x rattad läbimõõduga 65 mm (laius 6 mm)

4 x nailonist vahekaugust 30 mm (valikuline)

20 x M3 vahetükki (valikuline)

Teised:

Juhtmed

M2.5 ja M3 kruvid ja vahetükid

3D -printer või keegi, kes oskab teie jaoks osi printida

Käsipuur komplektiga, nagu see

Samm: kirjeldus

Kirjeldus
Kirjeldus
Kirjeldus
Kirjeldus

See robot on lihtne diferentsiaalvedu, mis kasutab 2 ratast, mis on otse nende mootorile paigaldatud, ja rullikut, mis on paigutatud taha, et vältida roboti ümberkukkumist. Robot on jagatud kaheks kihiks:

alumine kiht: koos tõukejõurühmaga (aku, mootorikontroller ja mootorid) ning madala tasemega elektroonikaga: Arduino mikrokontroller, pingeregulaator, lülitid…

ülemine kiht: kõrgetasemelise elektroonikaga, nimelt ühe pardaarvuti ja LIDARiga

Need kihid on trükitud osade ja kruvidega ühendatud, et tagada konstruktsiooni vastupidavus.

Elektrooniline skeem

Skeem võib tunduda pisut segane. See on skemaatiline joonis ja see ei esinda kõiki juhtmeid, pistikuid ja proto-plaati, kuid seda saab lugeda järgmiselt:

3S Litihum ioonpolümeerist aku, mille maht on 3000 mAh, toidab esimest vooluringi, see toidab nii mootori kontrolleri plaati (L298N) kui ka esimest 5 V regulaatorit mootori kodeerijatele ja Arduinole. See vooluahel on aktiveeritud lüliti abil, millel on LED, mis näitab selle ON/OFF olekut.

Sama aku toidab teist vooluringi, sisendpinge muundatakse 5V -ks ühe pardaarvuti toiteks. Ka siin lülitatakse vooluring sisse lüliti ja LED -i kaudu.

Seejärel saate USB -ühenduse või CSI -pordi kaudu otse Raspberry Pi -le lisada täiendavaid andureid, nagu LIDAR või kaamera.

Mehaaniline disain

Robotiraam koosneb 16 identsest osast, mis moodustasid 2 ruudukujulist kihti (laius 28 cm). Paljud augud võimaldavad paigaldada täiendavaid osi kõikjal, kus seda vajate, ning pakuvad täielikku moodulkonstruktsiooni. Selle projekti jaoks otsustasin hankida originaalplaadid TurtleBot3, kuid saate neid ka 3D -printida, kuna nende disain on avatud lähtekoodiga.

2. samm: mootoriploki kokkupanek

Mootoriplokkide komplekt
Mootoriplokkide komplekt
Mootoriplokkide komplekt
Mootoriplokkide komplekt
Mootoriplokkide komplekt
Mootoriplokkide komplekt

Mootori ettevalmistus

Esimene samm on lisada iga mootori ümber 1 mm paksune vahtlint, et vältida vibratsiooni ja müra mootori pöörlemisel.

Trükitud osad

Mootorihoidja tulemuseks on kaks osa, mis haaravad mootorit kui pahe. Mootori pingutamiseks hoidikus on saavutatud 4 kruvi.

Iga hoidik koosneb mitmest august, kuhu on paigutatud konstruktsioonile paigaldatavad M3 -sisetükid. Auke on rohkem kui tegelikult vaja, lisaauke võib lõpuks kasutada lisaosade paigaldamiseks.

3D -printeri seaded: kõik osad prinditakse järgmiste parameetritega

  • Otsik läbimõõduga 0,4 mm
  • 15% materjali täiteaine
  • 0,2 mm kõrgune kiht

Ratas

Valitud rattad on kaetud kummiga, et maksimeerida haardumist ja tagada libisemisvaba veeremine. Kinnituskruvi hoiab mootori võllile kinnitatud ratast. Ratta läbimõõt peaks olema piisavalt suur, et ületada väiksemaid samme ja maapinna ebatasasusi (need rattad on läbimõõduga 65 mm).

Fikseerimine

Kui olete ühe mootoriplokiga lõpetanud, korrake eelnevaid toiminguid ja seejärel lihtsalt kinnitage need kihti M3 kruvidega.

3. samm: lülitid ja kaabli ettevalmistamine

Lülitid ja kaabli ettevalmistamine
Lülitid ja kaabli ettevalmistamine
Lülitid ja kaabli ettevalmistamine
Lülitid ja kaabli ettevalmistamine
Lülitid ja kaabli ettevalmistamine
Lülitid ja kaabli ettevalmistamine

Mootori kaabli ettevalmistamine

Üldiselt on mootorikooderiga kaasas kaabel, mille ühel küljel on 6-pin pistik, mis ühendab kodeerija trükkplaadi tagaosa, ja paljad juhtmed teisel küljel.

Teil on võimalus neid otse oma proto-plaadil või isegi Arduino jootma panna, kuid soovitan teil kasutada naissoost pin-päiseid ja JST-XH-pistikuid. Nii saate need oma proto-plaadil ühendada/lahti ühendada ja hõlbustada kokkupanekut.

Näpunäiteid: saate oma juhtmete ümber lisada laiendatava varrukate ja punutiste tükid pistikute lähedusse, nii et saate puhta kaabli.

Lüliti ja LED

Kahe vooluahela sisselülitamiseks valmistage ette 2 LED -i ja lüliti kaablit: esmalt jootke 470 kOhm takisti ühele LED -tihvtile, seejärel jootke LED -i ühele lülitustihvtile. Ka siin saate takisti sisse peitmiseks kasutada kokkutõmbumistoru tükki. Olge ettevaatlik LED -i jootmisel õiges suunas! Korrake seda toimingut kahe lüliti/led -kaabli saamiseks.

Kokkupanek

Pange eelnevalt valmistatud kaablid kokku vastavale 3D -prinditud osale. Lüliti hooldamiseks kasutage mutrit, valgusdioodid ei vaja liimi, piisab vaid jõust, et see auku sobitada.

Samm: elektrooniliste plaatide juhtmestik

Elektrooniliste plaatide juhtmestik
Elektrooniliste plaatide juhtmestik
Elektrooniliste plaatide juhtmestik
Elektrooniliste plaatide juhtmestik
Elektrooniliste plaatide juhtmestik
Elektrooniliste plaatide juhtmestik

Laudade paigutus

Juhtmete arvu vähendamiseks kasutatakse Arduino plaadi paigutusega sobivat proto-plaati. Proto-plaadi ülaosas on L298N virnastatud Duponti emase päisega (Dupont on "Arduino-sarnased" päised).

L298N valmistamine

Algselt ei olnud L298N plaadil vastavat isast Duponti päist, peate plaadi alla lisama 9 tihvti rea. Peate realiseerima 9 auku 1 mm läbimõõduga puuriga paralleelselt olemasolevate aukudega, nagu näete pildil. Seejärel ühendage 2 rea vastavad tihvtid jootematerjalide ja lühikeste juhtmetega.

L298N pin-out

L298N koosneb kahest kanalist, mis võimaldavad juhtida kiirust ja suunda:

suund kahe digitaalse väljundi kaudu, mida nimetatakse IN1, IN2 esimese kanali jaoks ja IN3 ja IN4 teise jaoks

kiirus läbi ühe digitaalse väljundi, esimese kanali jaoks ENA ja teise jaoks ENB

Valisin Arduinoga järgmise pin-outi:

vasak mootor: IN1 tihvt 3, IN2 tihvt 4, ENA tihvt 2

parem mootor: IN3 tihvt 5, IN4 tihvt 6, ENB tihvt 7

5V regulaator

Isegi kui l298N suudab tavaliselt toita 5 V, lisan ikkagi väikese regulaatori. See toidab Arduinot VIN -pordi ja mootorite kahe kodeerija kaudu. Selle sammu saate vahele jätta, kasutades otse sisseehitatud L298N 5V regulaatorit.

JST pistikud ja kodeerija pin-out

Kasutage 4 tihvtiga naissoost JST-XH pistikuadapterit, seejärel ühendatakse iga pistik:

  • 5V regulaatorist
  • a Maa
  • kaks digitaalset sisendporti (näiteks 34 ja 38 parema kodeerija jaoks ja 26 ja 30 vasaku jaoks)

Täiendav I2C

Nagu olete võib-olla märganud, on proto-plaadil täiendav 4-kontaktiline JST-pistik. Seda kasutatakse I2C -seadme ühendamiseks nagu IMU, saate sama teha ja isegi oma porti lisada.

Samm: mootorigrupp ja Arduino alumisel kihil

Motor Group ja Arduino alumisel kihil
Motor Group ja Arduino alumisel kihil
Motor Group ja Arduino alumisel kihil
Motor Group ja Arduino alumisel kihil
Motor Group ja Arduino alumisel kihil
Motor Group ja Arduino alumisel kihil

Mootoriplokkide fikseerimine

Kui alumine kiht on kokku pandud 8 Turtleboti plaadiga, kasutage mootoriplokkide säilitamiseks lihtsalt 4 M3 kruvi otse sisetükkides. Seejärel saate ühendada mootori toitejuhtmed L298N väljunditega ja varem valmistatud kaablid protoplaadi JST pistikutega.

Võimsuse jaotus

Toitejaotus on lihtsalt realiseeritud tõkke klemmliistuga. Tõkke ühel küljel on LiPo akuga ühendamiseks kruvitud XT60 naissoost pistikuga kaabel. Teisel pool kruvitakse meie kaks eelnevalt joodetud LED/lülituskaablit. Seega saaks iga ahela (mootor ja Arduino) lubada oma lüliti ja vastava rohelise LED -iga.

Kaabli juhtimine

Kiiresti peate tegelema paljude kaablitega! Segaduse vähendamiseks võite kasutada varem 3D -prinditud tabelit. Laual hoidke oma elektroonilisi plaate kahepoolse teibiga ja laske laua all juhtmetel vabalt voolata.

Aku hooldus

Aku väljumise vältimiseks robotiga sõites võite kasutada lihtsalt juukse elastset riba.

Rullik

Mitte tegelikult rullik, vaid lihtne poolkera, mis on kinnitatud 4 kruviga alumisele kihile. Sellest piisab roboti stabiilsuse tagamiseks.

6. samm: ühe pardal olev arvuti ja ülemise kihi andurid

Ühe parda arvuti ja andurid ülemisel kihil
Ühe parda arvuti ja andurid ülemisel kihil
Ühe parda arvuti ja andurid ülemisel kihil
Ühe parda arvuti ja andurid ülemisel kihil
Ühe parda arvuti ja andurid ülemisel kihil
Ühe parda arvuti ja andurid ülemisel kihil

Millist ühe pardaarvutit valida?

Ma ei pea teile kuulsat Raspberry Pi esitama, selle kasutusjuhtumite arv ületab suuresti robootikavaldkonna. Kuid Raspberry Pi jaoks on palju võimsam väljakutsuja, mida võite ignoreerida. Tõepoolest, Nvidia Jetson Nano sisaldab lisaks protsessorile ka võimsat 128-tuumalist graafikakaarti. See konkreetne graafikakaart on välja töötatud selleks, et kiirendada arvutuslikke kalleid ülesandeid, nagu pilditöötlus või närvivõrgu järeldus.

Selle projekti jaoks valisin Jetson Nano ja lisatud failide hulgast leiate vastava 3D -osa, kuid kui soovite Raspberry Pi -ga minna, on siin palju prinditavaid ümbriseid.

5V regulaator

Ükskõik, millise plaadi otsustasite oma robotile kaasa võtta, vajate 5 V regulaatorit. Viimane Raspberry Pi 4 nõuab maksimaalselt 1,25 A, kuid Jetson Nano nõuab kuni 3 A pinget, nii et ma otsustasin, et Pololu 5V 6A -l on tulevaste komponentide (andurid, tuled, sammud …) võimsusreserv, kuid iga odav 5V 2A peaks seda tegema töö. Jetson kasutab 5,5 mm alalisvoolu silindrit ja Pi mikro -USB -d, haarake vastav kaabel ja jootke see regulaatori väljundisse.

LIDAR paigutus

Siin kasutatav LIDAR on LDS-01, on ka mitmeid teisi 2D LIDAR-e, mida saab kasutada nagu RPLidar A1/A2/A3, YDLidar X4/G4 või isegi Hokuyo LIDAR. Ainus nõue on see, et see tuleb ühendada USB kaudu ja asetada struktuuri keskele. Tõepoolest, kui LIDAR ei ole hästi tsentreeritud, võib SLAM -algoritmiga loodud kaart nihutada seinte ja takistuste hinnangulist asukohta nende tegelikust asukohast. Samuti, kui robotist takistused ületavad laserkiire, vähendab see ulatust ja vaatevälja.

LIDAR kinnitus

LIDAR on paigaldatud 3D -trükitud detailile, mis järgib selle kuju, osa ise hoitakse ristkülikukujulisel plaadil (tegelikult pildil vineerist, kuid seda saab ka 3D -printida). Seejärel võimaldab adapteri osa ansambli kinnitada nailonist vaheplaatidega ülemisele kilpplaadile.

Kaamera täiendava andurina või LIDAR asendaja

Kui te ei soovi LIDARile liiga palju raha kulutada (mis maksab umbes 100 dollarit), otsige kaamera: on olemas ka SLAM -algoritmid, mis töötavad ainult monokulaarse RGB -kaameraga. Mõlemad SBC -d aktsepteerivad USB- või CSI -kaameraid.

Lisaks võimaldab kaamera käivitada arvuti nägemise ja objektide tuvastamise skripte!

Kokkupanek

Enne roboti sulgemist laske kaablid läbi ülemise plaadi suuremate aukude:

  • 5V regulaatori vastav kaabel teie SBC -le
  • USB -kaabel Arduino DUE programmeerimispordist (DC -tünnile kõige lähemal) teie SBC USB -porti

Seejärel hoidke ülemist plaati tosina kruviga paigas. Teie robot on nüüd programmeerimiseks valmis, hästi tehtud!

Samm: pange see liikuma

Koostage Arduino

Avage oma lemmik Arduino IDE ja impordige projekti kaust nimega own_turtlebot_core, seejärel valige oma plaat ja vastav port, võite viidata sellele suurepärasele õpetusele.

Reguleerige põhisätteid

Projekt koosneb kahest failist ja üks tuleb teie robotile kohandada. Nii et avame own_turtlebot_config.h ja avastame, millised read nõuavad meie tähelepanu:

#define ARDUINO_DUE // ** KOMMENTAERI SEDA RIDA, KUI SINA TASU EI KASUTA **

Seda tuleks kasutada ainult koos Arduino DUE -ga, kui mitte kommenteerida rida.

#define RATE_CONTROLLER_KP 130.0 // ** TUNE THIS VÄÄRTUS **

#define RATE_CONTROLLER_KD 5000000000000.0 // ** Häälestage see väärtus ** #define RATE_CONTROLLER_KI 0.00005 // ** TUNE THIS VÄÄRTUS **

Need 3 parameetrit vastavad kiiruse regulaatori võimendustele, mida PID kasutab soovitud kiiruse säilitamiseks. Sõltuvalt aku pingest, roboti massist, ratta läbimõõdust ja teie mootori mehaanilisest käigust peate kohandama nende väärtusi. PID on klassikaline kontroller ja teid ei kirjeldata siin üksikasjalikult, kuid see link peaks andma teile piisavalt sisendeid enda häälestamiseks.

/ * Määrake tihvtid */

// mootor A (paremal) const bait motorRightEncoderPinA = 38; // ** MUUTA OMA PIN -KOODIGA NB ** const bait motorRightEncoderPinB = 34; // ** MUUTA OMA PIN -KOODIGA NB ** const bait enMotorRight = 2; // ** MUUTA OMA PIN -KOODIGA NB ** const bait in1MotorRight = 4; // ** MUUTA OMA PIN -KOODIGA NB ** const bait in2MotorRight = 3; // ** MUUTA OMA PIN -KOODIGA NB ** // mootor B (vasakul) const bait motorLeftEncoderPinA = 26; // ** MUUTA OMA PIN -KOODIGA NB ** const bait motorLeftEncoderPinB = 30; // ** MUUTA OMA PIN -KOODIGA NB ** const bait enMotorLeft = 7; // ** MUUTA OMA PIN -KOODIGA NB ** const bait in1MotorLeft = 6; // ** MUUTA OMA PIN -KOODIGA NB ** const bait in2MotorLeft = 5; // ** MUUTA OMA PIN -koodiga NB **

See plokk määrab kontakti L298N ja Arduino vahel, muutke lihtsalt pin -numbrit, et see vastaks teie omale. Kui olete konfiguratsioonifailiga lõpetanud, koostage ja laadige kood üles!

Installige ja konfigureerige ROS

Kui olete selle sammu saavutanud, on juhised täpselt samad, mis on kirjeldatud suurepärases TurtleBot3 käsiraamatus, mida peate hoolikalt järgima

hästi tehtud TurtleBot 3 on nüüd teie oma ja saate ROS -iga käitada kõiki olemasolevaid pakette ja õpetusi.

Ok, aga mis on ROS?

ROS tähistab robotite operatsioonisüsteemi, esmapilgul võib see tunduda üsna keeruline, kuid see pole nii. Kujutage vaid ette suhtlusviisi riistvara (andurid ja täiturid) ja tarkvara (navigeerimise, juhtimise, arvuti nägemise algoritmid) vahel. Näiteks saate hõlpsalt vahetada oma praeguse LIDAR -i teise mudeli vastu ilma seadistust katkestamata, sest iga LIDAR avaldab sama LaserScan -teate. ROS -i kasutatakse laialdaselt robootikas, Tooge oma esimene näide

ROS -i „tere maailm“ekvivalent seisneb teie roboti kaugjuhtimises kaugarvuti kaudu. Mida soovite teha, on saata kiiruse käsud mootorite pöörlemiseks, käsklused järgivad seda toru:

  • kaugarvutis töötav turtlebot_teleop sõlm avaldab teema "/cmd_vel", sealhulgas Twist -sõnumi
  • see teade edastatakse ROS -sõnumite võrgu kaudu SBC -le
  • jadasõlm võimaldab "/cmd_vel" Arduinole vastu võtta
  • Arduino loeb sõnumi ja määrab iga mootori nurkkiiruse, et see vastaks roboti soovitud lineaarsele ja nurkkiirusele

See toiming on lihtne ja seda saab saavutada ülaltoodud käsureade käivitamisega! Kui soovite üksikasjalikumat teavet, vaadake lihtsalt videot.

[SBC]

roscore

[SBC]

rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200

[Kaugarvuti]

eksport TURTLEBOT3_MODEL = $ {TB3_MODEL}

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Et minna kaugemale

Enne kõigi ametlike näidete proovimist peate käsiraamatus teadma viimast asja iga kord, kui näete seda käsku:

roslaunch turtlebot3_bringup turtlebot3_robot.launch

peate selle käsu oma SBC -s käivitama:

rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200

Ja kui teil on LIDAR, mis käivitab teie SBC -ga seotud käsu, siis minu puhul käivitan ma LDS01 järgmise reaga:

roslaunch hls_lfcd_lds_driver hlds_laser.launch

Ja see on kõik, olete lõplikult loonud oma turtleboti:) Olete valmis avastama ROS -i fantastilisi võimalusi ning kodeerima nägemist ja masinõppe algoritme.

Soovitan: