Tartalomjegyzék:

Építsd meg saját teknősbotodat: 7 lépés
Építsd meg saját teknősbotodat: 7 lépés

Videó: Építsd meg saját teknősbotodat: 7 lépés

Videó: Építsd meg saját teknősbotodat: 7 lépés
Videó: Építsd meg saját Optimusz Fővezéred! 2024, Július
Anonim
Építsd meg saját Turtlebot robotodat!
Építsd meg saját Turtlebot robotodat!
Építsd meg saját Turtlebot robotodat!
Építsd meg saját Turtlebot robotodat!
Építsd meg saját Turtlebot robotodat!
Építsd meg saját Turtlebot robotodat!

SZERKESZTÉS:

A szoftverrel és vezérléssel kapcsolatos további információk ezen a linken érhetők el:

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

A kódra mutató közvetlen link:

github.com/MattMgn/foxbot_core

Miért ez a projekt?

A Turtlebot 3 tökéletes platform az elektronika, a robotika és még az AI mélyebb megismeréséhez! Azt javaslom, hogy készítse el saját teknősbotját lépésről lépésre megfizethető alkatrészekkel, a funkciók és a teljesítmény feláldozása nélkül. Egy dolgot szem előtt tartva: megtartva a legjobbat a kezdeti robotból, annak modularitását, egyszerűségét és a nyílt forráskódú közösség hatalmas csomagjait az autonóm navigációhoz és az AI-hoz.

Ez a projekt lehetőséget kínál a kezdőknek az elektronika, a mechanika és a számítástechnika fogalmainak elsajátítására, a tapasztaltabbaknak pedig egy hatékony platformot kapnak a mesterséges intelligencia algoritmusainak tesztelésére és fejlesztésére.

Mit fogsz felfedezni ebben a projektben?

Ön hamarosan felfedezi, hogy mely alapvető mechanikai és elektronikus alkatrészeket kell megőrizni az eredeti bottól a teljes kompatibilitás biztosítása érdekében.

A teljes felépítési folyamat részletes lesz: a 3D -s alkatrésznyomtatástól, összeszereléstől és a több összetevőtől, a forrasztástól és az elektronika integrálásától az Arduino -n található kódfordításig. Ez az oktatóanyag egy „hello world” példával zárul, hogy megismerje Önt a ROS -szal. Ha valami nem világos, kérdezzen bátran!

Kellékek

Elektronika:

1 x egy fedélzeti számítógép ROS futtatásához, például Raspberry Pi vagy Jetson Nano

1 x Arduino DUE, használhat UNO -t vagy MEGA -t is

1 db Arduino DUE csatlakozóhoz illeszkedő proto-kártya elérhető itt

2 x 12V DC motor kódolókkal (100 ford / perc opció)

1 x L298N motor meghajtó

2x5V szabályozó

1 x akkumulátor (például 3S/4S LiPo akkumulátor)

2 db BE/KI kapcsoló

2 x LED

2 x 470 kOhm ellenállás

3 db 4 tűs JST csatlakozó

1 x USB kábel (legalább egy az SBC és az Arduino között)

Érzékelők:

1 x áramérzékelő (opcionális)

1 x 9 szabadságfok IMU (opcionális)

1 x LIDAR (opcionális)

Alváz:

16 db Turtlebot moduláris lemez (3D nyomtatással is nyomtatható)

2 db 65 mm átmérőjű kerék (6 mm széles opció)

4 x 30 mm -es nylon távtartó (opcionális)

20 x M3 betét (opcionális)

Egyéb:

Vezetékek

M2.5 és M3 csavarok és betétek

3D nyomtató vagy valaki, aki ki tudja nyomtatni az alkatrészeket

Egy kézi fúró készlettel, mint ez

1. lépés: Leírás

Leírás
Leírás
Leírás
Leírás

Ez a robot egy egyszerű differenciálmű, amely két, közvetlenül a motorra szerelt kereket és egy hátul elhelyezett görgőt használ, hogy megakadályozza a robot felborulását. A robot két rétegre oszlik:

az alsó réteg: a meghajtócsoporttal (akkumulátor, motorvezérlő és motorok) és az „alacsony szintű” elektronikával: Arduino mikrokontroller, feszültségszabályozó, kapcsolók…

a felső réteg: a „magas szintű” elektronikával, nevezetesen az egy fedélzeti számítógéppel és a LIDAR -val

Ezek a rétegek nyomtatott alkatrészekkel és csavarokkal vannak összekapcsolva, hogy biztosítsák a szerkezet szilárdságát.

Elektronikus vázlat

A vázlat kissé zavarosnak tűnhet. Ez egy sematikus rajz, és nem ábrázolja az összes vezetéket, csatlakozót és a proto-kártyát, de a következőképpen olvasható:

A 3S litihum -ion polimer akkumulátor 3000 mAh kapacitással táplálja az első áramkört, táplálja mind a motorvezérlő kártyát (L298N), mind az első 5 V -os szabályozót a motorjeladók és az Arduino számára. Ez az áramkör egy kapcsolón keresztül aktiválható, amely LED -et jelez, és be-/kikapcsolja az állapotát.

Ugyanez az akkumulátor táplálja a második áramkört, a bemeneti feszültséget 5 V -ra alakítják át az egylapos számítógép táplálására. Az áramkör itt is kapcsolón és LED -en keresztül engedélyezett.

Ezután további érzékelőket, például LIDAR -t vagy kamerát lehet hozzáadni a Raspberry Pi -hez USB -n vagy a CSI -porton keresztül.

Mechanikus kialakítás

A robotkeret 16 azonos részből áll, amelyek 2 négyzetréteget (28 cm széles) alkottak. A sok lyuk lehetővé teszi további alkatrészek felszerelését, ahol csak szüksége van rá, és teljes moduláris felépítést kínál. Ehhez a projekthez úgy döntöttem, hogy beszerezem az eredeti TurtleBot3 lemezeket, de 3D nyomtatással is kinyomtathatja őket, mivel a tervezésük nyílt forráskódú.

2. lépés: Motorblokkszerelés

Motorblokk szerelvény
Motorblokk szerelvény
Motorblokk szerelvény
Motorblokk szerelvény
Motorblokk szerelvény
Motorblokk szerelvény

Motor előkészítése

Az első lépés az, hogy minden motor körül 1 mm vastag habszalagot kell elhelyezni, hogy megakadályozza a vibrációt és a zajt, amikor a motor forog.

Nyomtatott alkatrészek

A motortartó két részt eredményez, amelyek satuba fogják a motort. 4 csavart sikerült rögzíteni a motort a tartóban.

Mindegyik tartó több lyukból áll, amelyekben a szerkezetre szerelendő M3 betétek találhatók. Több lyuk van, mint amennyi valójában szükséges, a további lyukakat végül fel lehet használni további alkatrészek felszerelésére.

3D nyomtató beállítások: minden alkatrész a következő paraméterekkel nyomtatódik ki

  • 0,4 mm átmérőjű fúvóka
  • 15% anyag töltés
  • 0,2 mm magasságú réteg

Kerék

A kiválasztott kerekeket gumival borítják, hogy maximalizálják a tapadást és biztosítsák a csúszásmentes gördülést. Szorítócsavar tartja a motortengelyre szerelt kereket. A kerék átmérőjének elég nagynak kell lennie ahhoz, hogy átlépje a kisebb lépéseket és a talaj egyenetlenségeit (ezek a kerekek 65 mm átmérőjűek).

Rögzítés

Ha végzett egy motorblokkal, ismételje meg az előző műveleteket, majd egyszerűen rögzítse őket a rétegbe M3 csavarokkal.

3. lépés: A kapcsolók és a kábelek előkészítése

A kapcsolók és a kábelek előkészítése
A kapcsolók és a kábelek előkészítése
A kapcsolók és a kábelek előkészítése
A kapcsolók és a kábelek előkészítése
A kapcsolók és a kábelek előkészítése
A kapcsolók és a kábelek előkészítése

Motor kábel előkészítése

Általában a motorkódolóhoz tartozik egy kábel, amelynek egyik oldalán 6 tűs csatlakozó található, amely összeköti a kódoló PCB hátulját, és pucér vezetékek a másik oldalon.

Lehetősége van közvetlenül forrasztani őket a proto-tábláján vagy akár az Arduino-ján, de azt javaslom, hogy inkább női tűs fejléceket és JST-XH csatlakozókat használjon. Így csatlakoztathatja/kihúzhatja őket a proto-boardon, és megkönnyítheti az összeszerelést.

Tippek: bővíthető hüvelyfonatot tehet a vezetékek köré és zsugorcső darabokat a csatlakozók közelébe, így „tiszta” kábelt kap.

Kapcsoló és LED

A két főáramkör engedélyezéséhez készítsen elő 2 LED -et és kapcsolókábelt: először forrasztjon egy 470 kOhm -os ellenállást az egyik LED -es tűre, majd forgassa a LED -et az egyikre a kapcsolószegre. Itt is használhat zsugorcsövet, hogy elrejtse az ellenállást. Ügyeljen a LED megfelelő irányú forrasztására! Ismételje meg ezt a műveletet, hogy két kapcsoló/led kábelt kapjon.

Összeszerelés

Szerelje össze a korábban készített kábeleket a megfelelő 3D nyomtatott részen. Használjon anyát a kapcsoló karbantartásához, a LED -ek nem igényelnek ragasztót, elég erő, hogy illeszkedjenek a lyukba.

4. lépés: Elektronikus táblák bekötése

Elektronikus táblák huzalozása
Elektronikus táblák huzalozása
Elektronikus táblák huzalozása
Elektronikus táblák huzalozása
Elektronikus táblák huzalozása
Elektronikus táblák huzalozása

A táblák elrendezése

Az Arduino kártya elrendezéséhez illeszkedő proto-táblát használják a vezetékek számának csökkentésére. A proto-panel tetején az L298N Dupont női fejléccel van halmozva (a Dupont „Arduino-szerű” fejlécek).

L298N készítmény

Eredetileg az L298N tábla nem rendelkezik a megfelelő Dupont fejléccel, hozzá kell adnia egy 9 tűs sort a tábla alá. Meg kell valósítania 9 lyukat 1 mm átmérőjű fúróval párhuzamosan a meglévő lyukakkal, amint az a képen is látható. Ezután kösse össze a 2 sor megfelelő csapjait forrasztóanyagokkal és rövid vezetékekkel.

L298N pin-out

Az L298N két csatornából áll, amelyek lehetővé teszik a sebesség és az irányítást:

2 digitális kimeneten keresztül, az IN1, IN2 az első csatorna és az IN3 és IN4 a második csatornán keresztül

sebesség 1 digitális kimeneten keresztül, az első csatorna ENA, a második az ENB

A következő kitűzést választottam az Arduino-val:

bal motor: IN1 a 3 -as érintkezőn, IN2 a 4 -es tűn, ENA a 2 -es tűn

jobb motor: IN3 az 5. tűn, IN4 a 6. tüskén, ENB a 7. tüskén

5V szabályozó

Még akkor is, ha az l298N általában képes 5 V feszültséget szolgáltatni, még mindig adok hozzá egy kis szabályozót. Táplálja az Arduino -t a VIN porton és a motorokon lévő 2 kódolón keresztül. Ezt a lépést kihagyhatja közvetlenül a beépített L298N 5V szabályozó használatával.

JST csatlakozók és kódoló pin-out

Használjon 4 tűs női JST-XH csatlakozóadaptert, és mindegyik csatlakozó a következőkhöz kapcsolódik:

  • 5V a szabályozótól
  • a Ground
  • két digitális bemeneti port (például: 34 és 38 a jobb kódolóhoz és 26 és 30 a bal oldali kódolóhoz)

Extra I2C

Amint észrevetted, egy extra 4 tűs JST csatlakozó található az alaplapon. Az I2C eszköz IMU -hoz hasonló csatlakoztatására szolgál, ugyanezt teheti, és akár saját portot is hozzáadhat.

5. lépés: Motorcsoport és Arduino az alsó rétegen

Motor Group és Arduino az alsó rétegen
Motor Group és Arduino az alsó rétegen
Motor Group és Arduino az alsó rétegen
Motor Group és Arduino az alsó rétegen
Motor Group és Arduino az alsó rétegen
Motor Group és Arduino az alsó rétegen

Motorblokkok rögzítése

Miután az alsó réteget összeszerelték a 8 Turtlebot lemezével, egyszerűen használjon 4 M3 csavart közvetlenül a betétekben a motorblokkok karbantartásához. Ezután csatlakoztathatja a motor tápkábeleit az L298N kimenetekhez, és a korábban készített kábeleket a proto-board JST csatlakozókhoz.

Teljesítményelosztás

Az áramelosztás egyszerűen egy sorompós sorkapoccsal valósul meg. A sorompó egyik oldalán egy XT60 -as csatlakozóval ellátott kábel van csavarozva a LiPo akkumulátorhoz való csatlakoztatáshoz. A másik oldalon a két forrasztott LED/kapcsoló kábelünk csavarozva van. Így minden áramkört (Motor és Arduino) engedélyezni lehetett saját kapcsolóval és a megfelelő zöld LED -del.

Kábelkezelés

Gyorsan sok kábellel kell foglalkoznia! A rendetlenség csökkentése érdekében használhatja a korábban 3D -ben nyomtatott „táblázatot”. Az asztalon kétoldalas szalaggal karbantartsa az elektronikus táblákat, és az asztal alatt hagyja a vezetékeket szabadon áramlani.

Az akkumulátor karbantartása

Annak érdekében, hogy elkerülje az akkumulátor kilökődését a robot vezetése közben, egyszerűen használjon hajgumit.

Görgős görgő

Valójában nem görgős görgő, hanem egy egyszerű félgömb, amelyet 4 csavarral rögzítenek az alsó rétegre. Ez elegendő a robot stabilitásának biztosításához.

6. lépés: Egy fedélzeti számítógép és érzékelők a felső rétegen

Egy fedélzeti számítógép és érzékelők a felső rétegen
Egy fedélzeti számítógép és érzékelők a felső rétegen
Egy fedélzeti számítógép és érzékelők a felső rétegen
Egy fedélzeti számítógép és érzékelők a felső rétegen
Egy fedélzeti számítógép és érzékelők a felső rétegen
Egy fedélzeti számítógép és érzékelők a felső rétegen

Melyik egylapos számítógépet válasszam?

Nem kell bemutatnom a híres Raspberry Pi -t, a használati esetek száma jóval meghaladja a robotika területét. De van egy sokkal erősebb kihívó a Raspberry Pi számára, amelyet figyelmen kívül hagyhat. Valójában az Nvidia Jetson Nano processzora mellett egy erőteljes 128 magos grafikus kártyát is beágyaz. Ezt a grafikus kártyát azért fejlesztették ki, hogy felgyorsítsák a számítástechnikai költséges feladatokat, például a képfeldolgozást vagy a neurális hálózatok következtetését.

Ehhez a projekthez a Jetson Nano -t választottam, és megtalálja a megfelelő 3D -s részt a csatolt fájlok között, de ha a Raspberry Pi -vel szeretne menni, itt sok nyomtatható tok található.

5V szabályozó

Bármilyen táblát is választott a robot felvételéhez, szüksége van egy 5 V -os szabályozóra. A legújabb Raspberry Pi 4 max. 1,25 A feszültséget igényel, de a Jetson Nano akár 3 A feszültséget igényel, ezért úgy döntöttem, hogy a Pololu 5V 6A energiatartalékkal rendelkezik a jövőbeli alkatrészekhez (érzékelők, lámpák, lépcsők …), de minden olcsó 5V 2A -nak meg kell felelnie a munka. A Jetson 5,5 mm -es egyenáramú hordót és a Pi mikro -USB -t használ, ragadja meg a megfelelő kábelt, és forrasztja a szabályozó kimenetéhez.

LIDAR elrendezés

Az itt használt LIDAR az LDS-01, számos más 2D LIDAR is használható, mint például az RPLidar A1/A2/A3, YDLidar X4/G4 vagy akár a Hokuyo LIDAR. Az egyetlen követelmény az, hogy USB -n keresztül kell csatlakoztatni, és a szerkezet fölé kell helyezni. Valójában, ha a LIDAR nincs jól középre állítva, a SLAM algoritmus által létrehozott térkép eltolhatja a falak és az akadályok becsült helyzetét a valódi helyzetükről. Ezenkívül, ha a robot bármely akadálya keresztezi a lézersugarat, az csökkenti a látóteret és a látóteret.

LIDAR szerelés

A LIDAR egy 3D nyomtatott részre van felszerelve, amely követi az alakját, maga az alkatrész egy téglalap alakú lemezre van rögzítve (valójában rétegelt lemezből a képen, de 3D nyomtatható is). Ezután egy adapterrész lehetővé teszi az együttes rögzítését a felső teknőslemezre nylon távtartókkal.

A kamera kiegészítő érzékelőként vagy LIDAR csereként

Ha nem akar túl sok pénzt költeni egy LIDAR -ra (ami körülbelül 100 dollárba kerül), válasszon egy kamerát: léteznek olyan SLAM -algoritmusok is, amelyek csak monokuláris RGB kamerával működnek. Mindkét SBC USB vagy CSI kamerát fogad el.

Ezenkívül a fényképezőgép lehetővé teszi a számítógépes látás és objektumfelismerő szkriptek futtatását!

Összeszerelés

A robot bezárása előtt vezesse át a kábeleket a felső lemez nagyobb lyukain:

  • a megfelelő kábelt az 5V -os szabályozótól az SBC -hez
  • az USB -kábelt az Arduino DUE programozási portjáról (a legközelebb a DC -hordóhoz) az SBC USB -portjához

Ezután egy tucat csavarral tartsa a helyén a felső lemezt. Robotja készen áll a programozásra, JÓL!

7. lépés: Mozgasd

Fordítsa össze az Arduino -t

Nyissa meg kedvenc Arduino IDE -jét, és importálja a own_turtlebot_core nevű projektmappát, majd válassza ki a táblát és a megfelelő portot, erre a kiváló oktatóanyagra hivatkozhat.

Állítsa be a Core beállításokat

A projekt két fájlból áll, és az egyiket hozzá kell igazítani a robotjához. Nyissuk meg tehát a own_turtlebot_config.h fájlt, és fedezzük fel, mely sorok igénylik a figyelmünket:

#define ARDUINO_DUE // ** SZÓLJ MEG EZT A SOROT, HA NEM HASZNÁL DUE **

Kizárólag az Arduino DUE -val használható, ha nem, írja meg a sort.

#define RATE_CONTROLLER_KP 130.0 // ** TUNE THIS VALUE **

#define RATE_CONTROLLER_KD 5000000000000.0 // ** EZT AZ ÉRTÉKET TUNE ** #define RATE_CONTROLLER_KI 0.00005 // ** TUNE This Value

Ez a 3 paraméter megfelel a PID által használt sebességszabályozó nyereségnek a kívánt sebesség fenntartásához. Az akkumulátor feszültségétől, a robot tömegétől, a kerék átmérőjétől és a motor mechanikus fogaskerékétől függően módosítani kell az értékeiket. A PID klasszikus vezérlő, és itt nem részletezzük, de ennek a linknek elegendő bemenetet kell adnia a saját beállításához.

/ * Csapok definiálása */

// motor A (jobbra) const byte motorRightEncoderPinA = 38; // ** MÓDOSÍTÁS A PIN kóddal NB ** const byte motorRightEncoderPinB = 34; // ** MÓDOSÍTÁS A PIN kóddal NB ** const byte enMotorRight = 2; // ** MÓDOSÍTÁS A PIN kóddal NB ** const byte in1MotorRight = 4; // ** MÓDOSÍTÁS A PIN kóddal NB ** const byte in2MotorRight = 3; // ** MÓDOSÍTÁS A PIN kóddal ** ** // motor B (balra) const byte motorLeftEncoderPinA = 26; // ** MÓDOSÍTÁS A PIN kóddal NB ** const byte motorLeftEncoderPinB = 30; // ** MÓDOSÍTÁS A PIN kóddal NB ** const byte enMotorLeft = 7; // ** MÓDOSÍTÁS A PIN kóddal NB ** const byte in1MotorLeft = 6; // ** MÓDOSÍTÁS A PIN kóddal NB ** const byte in2MotorLeft = 5; // ** MÓDOSÍTÁS A PIN -KÓDJAL NB **

Ez a blokk határozza meg a pinoutot az L298N és az Arduino között, egyszerűen módosítsa a pin számot, hogy megfeleljen a tiédnek. Ha végzett a konfigurációs fájllal, fordítsa le és töltse fel a kódot!

Telepítse és konfigurálja a ROS -t

Miután elérte ezt a lépést, az utasítások pontosan megegyeznek a kiváló TurtleBot3 kézikönyvében leírtakkal, és szigorúan követnie kell

jól sikerült A TurtleBot 3 most az Öné, és az összes meglévő csomagot és oktatóprogramot futtathatja a ROS segítségével.

Rendben, de mi az a ROS?

A ROS a robotok operációs rendszerét jelenti, elsőre meglehetősen bonyolultnak tűnhet, de nem az, csak képzeljük el a kommunikáció módját a hardver (érzékelők és működtető egységek) és a szoftver (navigációs, vezérlési, számítógépes látás algoritmusai) között. Például egyszerűen kicserélheti jelenlegi LIDAR -ját egy másik modellel anélkül, hogy megszakítaná a beállítást, mert minden LIDAR ugyanazt a LaserScan üzenetet teszi közzé. A ROS -t széles körben használják a robotikában, Futtassa az első példát

A „hello world” megfelelője a ROS -nak abból áll, hogy robotját távvezérli a távoli számítógépen keresztül. Amit szeretne, az az, hogy sebességparancsokat küld a motorok forgatásához, a parancsok ezt a csövet követik:

  • a turtlebot_teleop csomópont, amely a távoli számítógépen fut, tegyen közzé egy "/cmd_vel" témát, beleértve a Twist üzenetet
  • ezt az üzenetet az ROS üzenetek hálózatán keresztül továbbítja az SBC -hez
  • soros csomópont lehetővé teszi a "/cmd_vel" fogadását az Arduino -n
  • az Arduino elolvassa az üzenetet, és beállítja a szögsebességet minden motoron, hogy megfeleljen a robot kívánt lineáris és szögsebességének

Ez a művelet egyszerű, és a fent felsorolt parancssorok futtatásával érhető el! Ha részletesebb információra van szüksége, nézze meg a videót.

[SBC]

roscore

[SBC]

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

[Távoli számítógép]

export TURTLEBOT3_MODEL = $ {TB3_MODEL}

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Továbbmenni

Tudnia kell egy utolsó dolgot, mielőtt kipróbálná az összes hivatalos példát, a kézikönyvben minden alkalommal, amikor ezzel a paranccsal szembesül:

roslaunch turtlebot3_bringup turtlebot3_robot.launch

ezt a parancsot kell futtatnia az SBC -n:

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

Ha pedig LIDAR futtatja a hozzá tartozó parancsot az SBC -n, az én esetemben egy LDS01 -et futtatok az alábbi sorral:

roslaunch hls_lfcd_lds_driver hlds_laser.launch

És ennyi, végérvényesen felépítette saját teknősbotját:) Készen áll arra, hogy felfedezze a ROS fantasztikus képességeit, és kódolja a látást és a gépi tanulási algoritmusokat.

Ajánlott: