Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Beskrivelse
- Trinn 2: Motorblokkmontering
- Trinn 3: Brytere og kabelforberedelse
- Trinn 4: Elektroniske tavler
- Trinn 5: Motor Group og Arduino på bunnlaget
- Trinn 6: Enkeltbordsmaskin og sensorer på det øvre laget
- Trinn 7: Få det til å bevege seg
Video: Bygg din egen Turtlebot -robot !: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
REDIGERE:
Ytterligere informasjon om programvare og kontroll er tilgjengelig på denne lenken:
hackaday.io/project/167074-build-your-own-turtlebot-3-backbone
Den direkte lenken til koden er:
github.com/MattMgn/foxbot_core
Hvorfor dette prosjektet?
Turtlebot 3 er den perfekte plattformen for dypt inn i elektronikk, robotikk og til og med AI! Jeg foreslår at du bygger din egen turtlebot trinnvis med rimelige komponenter uten å ofre funksjoner og ytelse. Med én ting i tankene: å beholde det beste fra den første roboten, dens modularitet, enkelhet og det store antallet pakker for autonom navigasjon og AI fra open source-samfunnet.
Dette prosjektet er en mulighet for nybegynnere til å tilegne seg begreper om elektronikk, mekanikk og informatikk, og for de mer erfarne å få en kraftig plattform for å teste og utvikle kunstige intelligensalgoritmer.
Hva vil du oppdage i dette prosjektet?
Du er i ferd med å oppdage hvilke viktige mekaniske og elektroniske deler som må holdes fra den originale boten for å garantere fullstendig kompatibilitet.
Hele byggeprosessen vil være detaljert: fra 3D -utskrift, montering og flere komponenter, lodding og integrering av elektronikk til endelig kodekompilering på Arduino. Denne instruksen vil konkludere med et "hei verden" -eksempel for å gjøre deg kjent med ROS. Hvis noe virker uklart, kan du stille spørsmål!
Rekvisita
Elektronikk:
1 x enkelt bord datamaskin for å kjøre ROS, kan for eksempel være en Raspberry Pi eller en Jetson Nano
1 x Arduino DUE, du kan også bruke en UNO eller en MEGA
1 x Proto-brett som passer til Arduino DUE pin-out tilgjengelig her
2 x 12V likestrømsmotorer med encodere (100 omdr./min.)
1 x L298N motordriver
2 x 5V regulator
1 x batteri (3S/4S LiPo -batteri for eksempel)
2 x PÅ/AV brytere
2 x LED
2 x 470 kOhm motstander
3 x 4 pins JST -kontakter
1 x USB -kabel (minst en mellom SBC og Arduino)
Sensorer:
1 x Strømføler (valgfritt)
1 x 9 frihetsgrader IMU (valgfritt)
1 x LIDAR (valgfritt)
Chassis:
16 x Turtlebot modulære plater (som også kan 3D -printes)
2 x hjul 65 mm diameter (6 mm bredde)
4 x Nylon -avstandsstykker 30 mm (valgfritt)
20 x M3 -innsatser (valgfritt)
Andre:
Ledninger
M2.5 og M3 skruer og innsatser
3D -skriver eller noen som kan skrive ut delene for deg
Et håndbor med et sett bor som dette
Trinn 1: Beskrivelse
Denne roboten er en enkel differensialdrift som bruker 2 hjul som er direkte montert på motoren og en rulle som er plassert bak for å forhindre at roboten faller omkull. Roboten er delt inn i to lag:
bunnlaget: med fremdriftsgruppen (batteri, motorstyring og motorer) og elektronikken på lavt nivå: Arduino mikrokontroller, spenningsregulator, brytere …
det øvre laget: med elektronikken på høyt nivå, nemlig enkeltkortdatamaskinen og LIDAR
Disse lagene er knyttet sammen med trykte deler og skruer for å sikre konstruksjonens robusthet.
Elektronisk skjematisk
Skjematikken kan virke litt rotete. Det er en skjematisk tegning, og den representerer ikke alle ledninger, kontakter og proto-kortet, men den kan leses som følger:
Et 3S Litihum Ion Polymer -batteri med 3000mAh kapasitet driver den første kretsen, den driver både motorkontrollerkortet (L298N) og en første 5V regulator for motorkodere og Arduino. Denne kretsen aktiveres via en bryter med en LED som indikerer PÅ/AV -tilstanden.
Det samme batteriet driver en andre krets, inngangsspenningen konverteres til 5V for å drive enkeltkortdatamaskinen. Også her er kretsen aktivert gjennom en bryter og en LED.
Ytterligere sensorer som et LIDAR eller et kamera kan deretter legges til direkte på Raspberry Pi via USB eller CSI -porten.
Mekanisk design
Roboterammen består av 16 identiske deler som dannet 2 kvadratiske lag (28 cm bredde). De mange hullene gjør det mulig å montere flere deler uansett hvor du trenger det, og tilbyr en komplett modulær design. For dette prosjektet bestemte jeg meg for å kjøpe originalene TurtleBot3 -plater, men du kan også skrive dem ut i 3D fordi designet er åpen kildekode.
Trinn 2: Motorblokkmontering
Motor forberedelse
Det første trinnet er å legge til 1 mm tykt skumbånd rundt hver motor for å forhindre vibrasjoner og støy når motoren skal snurre.
Trykte deler
Motorholderen resulterer i to deler som griper motoren som en skruestik. 4 skruer oppnådd for å stramme motoren i holderen.
Hver holder består av flere hull som er vert for M3 -innsatser som skal monteres på strukturen. Det er flere hull enn det som faktisk trengs, de ekstra hullene kan til slutt brukes til å montere ekstra del.
3D -skriverinnstillinger: alle delene skrives ut med følgende parametere
- 0,4 mm diameter dyse
- 15% materialfyll
- 0,2 mm høyde lag
Hjul
De valgte hjulene er dekket med gummi for å maksimere vedheftet og sikre glidefri rullingstilstand. En klemskrue holder hjulet montert på motorakselen. Diameteren på hjulet skal være stor nok til å krysse mindre trinn og uregelmessigheter i bakken (disse hjulene er 65 mm i diameter).
Fiksering
Når du har gjort med en motorblokk, gjentar du de forrige operasjonene og deretter bare fikser dem i laget med M3 -skruer.
Trinn 3: Brytere og kabelforberedelse
Motorkabel forberedelse
Vanligvis kommer motor-encoderen med en kabel, inkludert en 6-pinners kontakt på den ene siden som forbinder baksiden av encoder PCB, og nakne ledninger på den andre siden.
Du har muligheten til å lodde dem direkte på prototavlen eller til og med Arduino, men jeg anbefaler deg å bruke kvinnelige pinhoder og JST-XH-kontakter i stedet. Dermed kan du koble dem til/fra pluggen og gjøre monteringen enklere.
Tips: du kan legge til en utvidbar ermet flette rundt ledningene og biter av krympeslange nær kontakter, slik at du får en "ren" kabel.
Bryter og LED
For å aktivere de to strømkretsene må du forberede 2 LED- og bryterkabler: Først lodder du en 470kOhm -motstand på en av LED -pinnene, deretter lodder LED -en på en bryterpinnen. Også her kan du bruke et stykke krympeslange for å skjule motstanden inne. Vær forsiktig med å lodde LED -en i riktig retning! Gjenta denne operasjonen for å få to brytere/ledede kabler.
montering
Monter de tidligere lagde kablene på den tilsvarende 3D -trykte delen. Bruk en mutter for å opprettholde bryteren, lysdiodene trenger ikke lim, bare tving nok til å passe den i hullet.
Trinn 4: Elektroniske tavler
Brettoppsett
Et protokoll som passer til Arduino-bordoppsettet brukes til å redusere antall ledninger. På toppen av prototavlen er L298N stablet med Dupont kvinnelig topptekst (Dupont er 'Arduino-lignende' overskrifter).
L298N -preparat
Opprinnelig kommer ikke L298N -kortet med tilsvarende mannlig Dupont -topptekst, du må legge til en rad med 9 pins under brettet. Du må realisere 9 hull med 1 mm diameter bor parallelt med de eksisterende hullene som du kan se på bildet. Deretter kobler du de tilsvarende pinnene i de 2 radene med loddematerialer og korte ledninger.
L298N pin-out
L298N består av 2 kanaler som tillater hastighets- og retningskontroll:
retning gjennom 2 digitale utganger, kalt IN1, IN2 for den første kanalen, og IN3 og IN4 for den andre
hastighet gjennom 1 digitale utganger, kalt ENA for den første kanalen og ENB for den andre
Jeg valgte følgende pin-out med Arduino:
venstre motor: IN1 på pinne 3, IN2 på pinne 4, ENA på pinne 2
høyre motor: IN3 på pin 5, IN4 på pin 6, ENB på pin 7
5V regulator
Selv om l298N normalt kan levere 5V, legger jeg til en liten regulator. Den driver Arduino gjennom VIN -porten og de 2 koderne på motorene. Du kan hoppe over dette trinnet ved å bruke den innebygde L298N 5V-regulatoren direkte.
JST-kontakter og koder-pin-out
Bruk 4 pins JST-XH hunkontaktadaptere, hver kontakt kobles deretter til:
- 5V fra regulatoren
- en bakken
- to digitale inngangsporter (for eksempel: 34 og 38 for høyre encoder og 26 og 30 for den venstre)
Ekstra I2C
Som du kanskje har lagt merke til, er det en ekstra 4-pinners JST-kontakt på proto-kortet. Den brukes til å koble til I2C -enhet som en IMU, du kan gjøre det samme og til og med legge til din egen port.
Trinn 5: Motor Group og Arduino på bunnlaget
Fiksering av motorblokker
Når bunnlaget er montert med de 8 Turtlebot -platene, bruker du bare 4 M3 -skruer direkte i innsatsene for å vedlikeholde motorblokker. Deretter kan du koble motorens strømledninger til L298N-utgangene og de tidligere lagde kablene til proto-board JST-kontaktene.
Kraftdistribusjon
Kraftfordeling realiseres ganske enkelt med en barriere -rekkeklemme. På den ene siden av barrieren er en kabel med en hunkontakt XT60 skrudd for å koble til LiPo -batteri. På den andre siden er våre to LED/bryterkabler som tidligere er loddet skrudd. Dermed kan hver krets (motor og Arduino) aktiveres med sin egen bryter og den tilhørende grønne lysdioden.
Kabelhåndtering
Du må raskt håndtere mange kabler! For å redusere det rotete aspektet, kan du bruke "tabellen" som tidligere ble skrevet ut i 3D. På bordet må du vedlikeholde de elektroniske brettene dine med dobbeltsidig tape, og under ledningen la ledningene fritt flyte.
Vedlikehold av batteriet
For å unngå utladning av batteriet når du kjører roboten, kan du ganske enkelt bruke et hårstrikk.
Roller caster
Egentlig ikke en rullebane, men en enkel halvkule festet med 4 skruer på bunnlaget. Det er nok for å sikre roboten stabilitet.
Trinn 6: Enkeltbordsmaskin og sensorer på det øvre laget
Hvilken enkeltkort datamaskin skal jeg velge?
Jeg trenger ikke å presentere deg den berømte Raspberry Pi, antall bruksområder overstiger i stor grad robotikkfeltet. Men det er en mye kraftigere utfordrer for Raspberry Pi som du kan ignorere. Jetson Nano fra Nvidia innebærer faktisk et kraftig 128-kjerners grafisk kort i tillegg til prosessoren. Dette bestemte grafiske kortet har blitt utviklet for å akselerere dyre oppgaver som beregning, for eksempel bildebehandling eller nevral nettverksinferens.
For dette prosjektet valgte jeg Jetson Nano, og du kan finne den tilsvarende 3D -delen blant de vedlagte filene, men hvis du vil gå med Raspberry Pi er det mange utskrivbare saker her.
5V regulator
Uansett hvilket brett du bestemte deg for å ta med på roboten din, trenger du en 5V regulator. Den siste Raspberry Pi 4 krever maks 1.25A, men Jetson Nano krever opptil 3A på stress, så jeg valgte Pololu 5V 6A for å ha en strømreserve for fremtidige komponenter (sensorer, lys, steppere …), men en billig 5V 2A burde gjøre jobben. Jetson bruker en 5,5 mm DC -fat og Pi en mikro -USB, ta den tilsvarende kabelen og lodd den til regulatorutgangen.
LIDAR layout
LIDAR som brukes her er LDS-01, det er forskjellige andre 2D LIDAR som kan brukes som RPLidar A1/A2/A3, YDLidar X4/G4 eller til og med Hokuyo LIDAR. Det eneste kravet er at den må plugges via USB og plasseres sentrert over strukturen. Faktisk hvis LIDAR ikke er godt sentrert, kan kartet som er opprettet av SLAM -algoritmen, flytte den estimerte posisjonen til vegger og hindringer fra deres virkelige posisjon. Også hvis noen hindringer fra roboten krysser laserstrålen, kommer det til å redusere rekkevidde og synsfelt.
LIDAR -montering
LIDAR er montert på en 3D -trykt del som følger formen, selve delen holdes på en rektangulær plate (faktisk i kryssfiner på bildet, men kan også være 3D -trykt). Deretter gjør en adapterdel at ensemblet kan festes på den øvre turtlebot -platen med nylonavstandsstykker.
Kamera som ekstra sensor eller LIDAR -erstatning
Hvis du ikke vil bruke for mye penger på et LIDAR (som koster rundt $ 100), kan du gå for et kamera: det finnes også SLAM -algoritmer som bare kjøres med et monokulært RGB -kamera. Begge SBC godtar USB- eller CSI -kamera.
Videre lar kameraet deg kjøre datasyn og objektdeteksjonskript!
montering
Før du lukker roboten, før du kablene gjennom de større hullene i den øvre platen:
- den tilsvarende kabelen fra 5V -regulatoren til din SBC
- USB -kabelen fra programmeringsporten til Arduino DUE (nærmest DC -fatet) til en USB -port på SBC
Hold deretter den øvre platen på plass med et dusin skruer. Roboten din er nå klar til å bli programmert, WELL DONE!
Trinn 7: Få det til å bevege seg
Kompiler Arduino
Åpne din favoritt Arduino IDE, og importer prosjektmappen kalt own_turtlebot_core, velg deretter brettet og den tilhørende porten. Du kan referere til denne utmerkede opplæringen.
Juster kjerneinnstillingene
Prosjektet består av to filer, og en må tilpasses roboten din. Så la oss åpne own_turtlebot_config.h, og oppdag hvilke linjer som krever vår oppmerksomhet:
#define ARDUINO_DUE // ** KOMMENTER DENNE LINJEN HVIS DU IKKE BRUKER FRIST **
Bør bare brukes med Arduino DUE, hvis ikke kommenter linjen.
#define RATE_CONTROLLER_KP 130.0 // ** TUNE DENNE VERDIEN **
#define RATE_CONTROLLER_KD 5000000000000.0 // ** TUNE DENNE VERDIEN ** #define RATE_CONTROLLER_KI 0.00005 // ** TUNE DENNE VERDIEN **
Disse 3 parametrene tilsvarer hastighetsregulatorens gevinster som PID bruker for å opprettholde ønsket hastighet. Avhengig av batterispenningen, massen til roboten, hjuldiameteren og det mekaniske giret til motoren din, må du tilpasse verdiene. PID er en klassisk kontroller, og du vil ikke bli detaljert her, men denne lenken skal gi deg nok innganger til å stille din egen.
/ * Definer pins */
// motor A (høyre) const byte motorRightEncoderPinA = 38; // ** ENDRE MED DIN PIN -kode NB ** const byte motorRightEncoderPinB = 34; // ** ENDRE MED DIN PIN -kode NB ** const byte enMotorRight = 2; // ** ENDRE MED DIN PIN -kode NB ** const byte in1MotorRight = 4; // ** ENDRE MED DIN PIN -kode NB ** const byte in2MotorRight = 3; // ** ENDRE MED DIN PIN -kode NB ** // motor B (venstre) const byte motorLeftEncoderPinA = 26; // ** ENDRE MED DIN PIN -kode NB ** const byte motorLeftEncoderPinB = 30; // ** ENDRE MED DIN PIN -kode NB ** const byte enMotorLeft = 7; // ** ENDRE MED DIN PIN -kode NB ** const byte in1MotorLeft = 6; // ** ENDRE MED DIN PIN -kode NB ** const byte in2MotorLeft = 5; // ** MODIFISER MED DIN PIN -kode **
Denne blokken definerer pinout mellom L298N og Arduino, bare endre pin -nummeret for å matche ditt. Når du er ferdig med konfigurasjonsfilen, kompilerer og laster du opp koden!
Installer og konfigurer ROS
Når du har nådd dette trinnet, er instruksjonene nøyaktig de samme som de som er beskrevet i den utmerkede TurtleBot3 -håndboken, du må følge nøye
godt gjort TurtleBot 3 er nå din, og du kan kjøre alle eksisterende pakker og opplæringsprogrammer med ROS.
Ok, men hva er ROS?
ROS står for Robots Operating System, det kan virke ganske komplisert i begynnelsen, men det er ikke, bare tenk deg en måte å kommunisere mellom maskinvare (sensorer og aktuatorer) og programvare (algoritmer for navigasjon, kontroll, datasyn …). For eksempel kan du enkelt bytte din nåværende LIDAR med en annen modell uten å bryte oppsettet, fordi hver LIDAR publiserer den samme LaserScan -meldingen. ROS er mye brukt er robotikk, Kjør ditt første eksempel
'Hallo verden' -ekvivalenten for ROS består i å operere roboten din via den eksterne datamaskinen. Det du vil gjøre er å sende hastighetskommandoer for å få motorene til å snurre, kommandoene følger dette røret:
- en turtlebot_teleop node, som kjører på den eksterne datamaskinen, publiserer et "/cmd_vel" emne inkludert en Twist -melding
- denne meldingen videresendes via ROS -meldingsnettverket til SBC
- en seriell node gjør at "/cmd_vel" kan mottas på Arduino
- Arduino leser meldingen og stiller vinkelhastigheten på hver motor for å matche robotens ønskede lineære og vinkelhastighet
Denne operasjonen er enkel og kan oppnås ved å kjøre kommandolinjene som er oppført ovenfor! Hvis du vil ha mer detaljert informasjon, er det bare å se videoen.
[SBC]
roscore
[SBC]
rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200
[Ekstern datamaskin]
eksporter TURTLEBOT3_MODEL = $ {TB3_MODEL}
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
Å gå videre
Du må vite det siste før du prøver alle de offisielle eksemplene, i håndboken hver gang du står overfor denne kommandoen:
roslaunch turtlebot3_bringup turtlebot3_robot.lunch
du må kjøre denne kommandoen på SBC i stedet:
rosrun rosserial_python serial_node.py _port: =/dev/ttyACM0 _baud: = 115200
Og hvis du har en LIDAR, kjør den tilhørende kommandoen på SBC, i mitt tilfelle kjører jeg en LDS01 med linjen nedenfor:
roslaunch hls_lfcd_lds_driver hlds_laser.launch
Og det er alt, du har definitivt bygget din egen turtlebot:) Du er klar til å oppdage de fantastiske egenskapene til ROS, og til å kode visjon og maskinlæringsalgoritmer.
Anbefalt:
ESP32-CAM Bygg din egen robotbil med live videostreaming: 4 trinn
ESP32-CAM Bygg din egen robotbil med live videostreaming: Tanken er å gjøre robotbilen beskrevet her så billig som mulig. Derfor håper jeg å nå en stor målgruppe med mine detaljerte instruksjoner og de utvalgte komponentene for en billig modell. Jeg vil gjerne presentere ideen min om en robotbil
Bygg din egen variabel labbenk strømforsyning: 4 trinn (med bilder)
Bygg din egen variabel laboratoriebenkstrømforsyning: I dette prosjektet vil jeg vise deg hvordan jeg kombinerte en LTC3780, som er en kraftig 130 W Step Up/Step Down -omformer, med en 12V 5A strømforsyning for å lage en justerbar labbenkforsyning (0,8 V-29.4V || 0.3A-6A). Ytelsen er ganske bra i forhold til
Bygg din egen rå FM -radio: 4 trinn
Bygg din egen rå FM -radio: I dette prosjektet vil jeg demonstrere hvordan en RF FM -sender fungerer og hvordan dette prinsippet kan sammenlignes med den eldre AM. Jeg vil også vise deg hvordan du bygger en enkel og rå FM -mottaker som til og med kan la deg lytte til favorittradiostasjonen din
Bygg din egen selvkjørende bil - (denne instruksen er under arbeid): 7 trinn
Bygg din egen selvkjørende bil - (Denne instruksen er i arbeid): Hei, hvis du tar en titt på min andre instruerbare på drivrobot med ekstern USB -gamepad, er dette prosjektet likt, men i mindre skala. Du kan også følge eller få litt hjelp eller inspirasjon fra Robotics, Home-Grown Voice Recognition eller Self
CityCoaster - Bygg din egen Augmented Reality Coaster for din virksomhet (TfCD): 6 trinn (med bilder)
CityCoaster - Bygg din egen Augmented Reality Coaster for Your Business (TfCD): En by under koppen din! CityCoaster er et prosjekt som tenker på et produkt for Rotterdam Haag flyplass, som kan uttrykke byens identitet og underholde klientene i salongområdet med utvidet virkelighet. I et miljø som