Satura rādītājs:

Izveidojiet savu bruņurupuču robotu!: 7 soļi
Izveidojiet savu bruņurupuču robotu!: 7 soļi

Video: Izveidojiet savu bruņurupuču robotu!: 7 soļi

Video: Izveidojiet savu bruņurupuču robotu!: 7 soļi
Video: How to Crochet a Hooded Shrug | Pattern & Tutorial DIY 2024, Jūlijs
Anonim
Izveidojiet savu bruņurupuču robotu!
Izveidojiet savu bruņurupuču robotu!
Izveidojiet savu bruņurupuču robotu!
Izveidojiet savu bruņurupuču robotu!
Izveidojiet savu bruņurupuču robotu!
Izveidojiet savu bruņurupuču robotu!

EDIT:

Papildu informācija par programmatūru un vadību ir pieejama šajā saitē:

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

Tiešā saite uz kodu ir šāda:

github.com/MattMgn/foxbot_core

Kāpēc šis projekts?

Turtlebot 3 ir ideāla platforma, lai padziļinātu elektroniku, robotiku un pat mākslīgo intelektu! Es iesaku jums pakāpeniski izveidot savu bruņurupuci ar pieejamām sastāvdaļām, nezaudējot funkcijas un veiktspēju. Paturot prātā vienu lietu: saglabājot vislabāko no sākotnējā robota, tā modularitāti, vienkāršību un milzīgo skaitu pakotņu autonomai navigācijai un AI no atvērtā pirmkoda kopienas.

Šis projekts ir iespēja iesācējiem apgūt priekšstatus par elektroniku, mehāniku un datorzinātnēm, bet pieredzējušākiem iegūt spēcīgu platformu mākslīgā intelekta algoritmu pārbaudei un izstrādei.

Ko jūs atklāsit šajā projektā?

Jūs gatavojaties atklāt, kuras būtiskās mehāniskās un elektroniskās detaļas ir jāsaglabā no sākotnējā robota, lai garantētu pilnīgu savietojamību.

Viss veidošanas process būs detalizēts: sākot no 3D detaļu drukāšanas, salikšanas un vairākām sastāvdaļām, pielodējot un integrējot elektroniku līdz beidzot koda apkopošanai Arduino. Šī pamācība noslēgsies ar “sveikas pasaules” piemēru, lai iepazīstinātu jūs ar ROS. Ja kaut kas šķiet neskaidrs, uzdodiet jautājumu!

Piegādes

Elektronika:

1 x viena dēļa dators ROS darbināšanai, piemēram, Raspberry Pi vai Jetson Nano

1 x Arduino DUE, jūs varētu izmantot arī UNO vai MEGA

Šeit ir pieejams 1 prototips, kas piemērots Arduino DUE piespraudei

2 x 12 V līdzstrāvas motori ar kodētājiem (opcija 100 apgr./min)

1 x L298N motora vadītājs

2 x 5V regulators

1 x akumulators (piemēram, 3S/4S LiPo akumulators)

2 x ON/OFF slēdži

2 x LED

2 x 470 kOhm rezistori

3 x 4 kontaktu JST savienotāji

1 x USB kabelis (vismaz viens starp SBC un Arduino)

Sensori:

1 x strāvas sensors (pēc izvēles)

1 x 9 brīvības pakāpes IMU (pēc izvēles)

1 x LIDAR (pēc izvēles)

Šasija:

16 x Turtlebot moduļu plāksnes (kuras var arī izdrukāt 3D formātā)

2 x 65 mm diametra riteņi (6 mm platuma opcija)

4 x neilona starplikas 30 mm (pēc izvēles)

20 x M3 ieliktņi (pēc izvēles)

Citi:

Vadi

M2.5 un M3 skrūves un ieliktņi

3D printeris vai kāds, kas var izdrukāt detaļas jūsu vietā

Rokas urbis ar tādu urbju komplektu kā šis

1. darbība. Apraksts

Apraksts
Apraksts
Apraksts
Apraksts

Šis robots ir vienkārša diferenciāla piedziņa, kas izmanto 2 riteņus, kas ir tieši uzstādīti uz to motora, un rullīti, kas novietots aizmugurē, lai novērstu robota apgāšanos. Robots ir sadalīts divos slāņos:

Apakšējais slānis: ar piedziņas grupu (akumulators, motora kontrolieris un motori) un “zema līmeņa” elektronika: Arduino mikrokontrolleris, sprieguma regulators, slēdži…

augšējais slānis: ar “augsta līmeņa” elektroniku, proti, vienplates datoru un LIDAR

Šie slāņi ir savienoti ar drukātām detaļām un skrūvēm, lai nodrošinātu konstrukcijas izturību.

Elektroniskā shēma

Shēma var šķist nedaudz nekārtīga. Tas ir shematisks zīmējums, un tas neatspoguļo visus vadus, savienotājus un pamatplāksni, bet to var nolasīt šādi:

3S Litihum jonu polimēru akumulators ar 3000 mAh jaudu nodrošina pirmo ķēdi, tas darbina gan motora vadības paneli (L298N), gan pirmo 5 V regulatoru motora kodētājiem un Arduino. Šī ķēde ir iespējota, izmantojot slēdzi ar gaismas diodi, kas norāda tās ieslēgšanas/izslēgšanas stāvokli.

Tas pats akumulators baro otru ķēdi, ieejas spriegums tiek pārveidots par 5 V, lai darbinātu viena valdes datoru. Arī šeit ķēde tiek iespējota, izmantojot slēdzi un LED.

Papildu sensorus, piemēram, LIDAR vai kameru, var pievienot tieši Raspberry Pi, izmantojot USB vai CSI portu.

Mehāniskais dizains

Robota rāmis sastāv no 16 identiskām daļām, kas veidoja 2 kvadrātveida slāņus (28 cm platumā). Daudzie caurumi ļauj uzstādīt papildu detaļas visur, kur tas nepieciešams, un piedāvā pilnīgu moduļu dizainu. Šim projektam es nolēmu iegūt oriģinālās TurtleBot3 plāksnes, bet jūs varat tās arī izdrukāt 3D formātā, jo to dizains ir atvērtā koda.

2. solis: motora bloka montāža

Motora bloka montāža
Motora bloka montāža
Motora bloka montāža
Motora bloka montāža
Motora bloka montāža
Motora bloka montāža

Motora sagatavošana

Pirmais solis ir pievienot 1 mm biezu putuplasta lenti ap katru motoru, lai novērstu vibrācijas un troksni, kad motors griežas.

Apdrukātas detaļas

Motora turētājs rada divas daļas, kas satver motoru kā netikums. 4 skrūves, lai pievilktu motoru turētājā.

Katrs turētājs sastāv no vairākiem caurumiem, kuros ir ievietoti M3 ieliktņi, kas jāuzstāda uz konstrukcijas. Ir vairāk caurumu nekā faktiski nepieciešams, papildu caurumus galu galā varētu izmantot, lai uzstādītu papildu daļu.

3D printera iestatījumi: visas detaļas tiek drukātas ar šādiem parametriem

  • Sprausla ar diametru 0,4 mm
  • 15% materiāla pildījums
  • 0,2 mm augstuma slānis

Ritenis

Izvēlētie riteņi ir pārklāti ar gumiju, lai palielinātu saķeri un nodrošinātu neslīdošu rites stāvokli. Piestiprināšanas skrūve uztur riteni, kas piestiprināts pie motora vārpstas. Riteņa diametram jābūt pietiekami lielam, lai šķērsotu nelielus soļus un nelīdzenumus (šie riteņi ir 65 mm diametrā).

Fiksācija

Kad esat pabeidzis darbu ar vienu motora bloku, atkārtojiet iepriekšējās darbības un pēc tam vienkārši piestipriniet tās slānī ar M3 skrūvēm.

3. darbība: slēdži un kabeļa sagatavošana

Slēdži un kabeļu sagatavošana
Slēdži un kabeļu sagatavošana
Slēdži un kabeļu sagatavošana
Slēdži un kabeļu sagatavošana
Slēdži un kabeļu sagatavošana
Slēdži un kabeļu sagatavošana

Motora kabeļa sagatavošana

Parasti motora kodētājam ir kabelis, no vienas puses 6 kontaktu savienotājs, kas savieno kodētāja PCB aizmuguri, un kaili vadi otrā pusē.

Jums ir iespēja tos tieši pielodēt savā prototipē vai pat savā Arduino, taču es iesaku to vietā izmantot sieviešu tapas un JST-XH savienotājus. Tādējādi jūs varat tos pievienot/atvienot no proto plates un atvieglot montāžu.

Padomi: ap vadiem un saraušanās caurules gabaliem pie savienotājiem varat pievienot izvelkamu uzmavu pinumu, tādējādi iegūstot “tīru” kabeli.

Slēdzis un LED

Lai iespējotu abas strāvas ķēdes, sagatavojiet 2 gaismas diodes un slēdžu kabeļus: vispirms pie viena no LED tapām pielodējiet 470 kOhm rezistoru, pēc tam pie viena pie slēdža tapas. Arī šeit jūs varat izmantot saraušanās caurules gabalu, lai paslēptu rezistoru iekšpusē. Uzmanieties, lai lodētu gaismas diodi pareizajā virzienā! Atkārtojiet šo darbību, lai iegūtu divus slēdžu/vadu kabeļus.

Montāža

Salieciet iepriekš izgatavotos kabeļus uz atbilstošās 3D drukātās daļas. Izmantojiet uzgriezni, lai uzturētu slēdzi, gaismas diodēm nav nepieciešama līme, pietiek tikai ar spēku, lai to ievietotu caurumā.

4. solis: Elektronisko dēļu elektroinstalācija

Elektronisko dēļu elektroinstalācija
Elektronisko dēļu elektroinstalācija
Elektronisko dēļu elektroinstalācija
Elektronisko dēļu elektroinstalācija
Elektronisko dēļu elektroinstalācija
Elektronisko dēļu elektroinstalācija

Dēļu izkārtojums

Lai samazinātu vadu skaitu, tiek izmantota Arduino plates izkārtojumam atbilstoša prototipa. Protokola augšpusē L298N ir sakrauts ar Dupont sieviešu galveni (Dupont ir “Arduino līdzīgas” galvenes).

L298N sagatavošana

Sākotnēji L298N plāksnei nav atbilstošas Dupont vīriešu galvenes, jums jāpievieno 9 tapas rinda zem tāfeles. Jums ir jārealizē 9 caurumi ar 1 mm diametra urbi paralēli esošajiem caurumiem, kā redzams attēlā. Pēc tam saistiet atbilstošās 2 rindu tapas ar lodēšanas materiāliem un īsiem vadiem.

L298N tapas

L298N sastāv no 2 kanāliem, kas ļauj kontrolēt ātrumu un virzienu:

virzienu caur 2 digitālajām izejām, ko sauc par IN1, IN2 pirmajam kanālam un IN3 un IN4 otrajam

ātrumu caur 1 digitālo izeju, ko sauc par ENA pirmajam kanālam un ENB otrajam

Ar Arduino es izvēlējos šādu pin-out:

kreisais motors: IN1 uz tapas 3, IN2 uz tapas 4, ENA uz tapas 2

labais motors: IN3 uz tapas 5, IN4 uz tapas 6, ENB uz tapas 7

5V regulators

Pat ja l298N parasti spēj nodrošināt 5V, es joprojām pievienoju nelielu regulatoru. Tas baro Arduino caur VIN portu un 2 kodētājiem uz motoriem. Jūs varat izlaist šo darbību, tieši izmantojot iebūvēto L298N 5V regulatoru.

JST savienotāji un kodētāja piespraude

Izmantojiet 4 kontaktu sieviešu JST-XH savienotāju adapterus, un katrs savienotājs ir saistīts ar:

  • 5V no regulatora
  • grunts
  • divi digitālie ievades porti (piemēram, 34 un 38 labajam kodētājam un 26 un 30 kreisajam)

Papildu I2C

Kā jūs, iespējams, pamanījāt, uz tāfeles ir papildu 4 kontaktu JST savienotājs. To izmanto, lai savienotu I2C ierīci, piemēram, IMU, jūs varat darīt to pašu un pat pievienot savu portu.

5. solis: Motor Group un Arduino uz apakšējā slāņa

Motor Group un Arduino uz apakšējā slāņa
Motor Group un Arduino uz apakšējā slāņa
Motor Group un Arduino uz apakšējā slāņa
Motor Group un Arduino uz apakšējā slāņa
Motor Group un Arduino uz apakšējā slāņa
Motor Group un Arduino uz apakšējā slāņa

Motora bloku fiksācija

Kad apakšējais slānis ir samontēts ar 8 Turtlebot plāksnēm, vienkārši izmantojiet 4 M3 skrūves tieši ieliktņos, lai uzturētu motoru blokus. Tad jūs varat pieslēgt motora strāvas vadus pie L298N izejām un iepriekš izgatavotos kabeļus pie pamatplates JST savienotājiem.

Jaudas sadale

Jaudas sadale tiek vienkārši realizēta ar barjeras spaiļu bloku. Barjeras vienā pusē ir pieskrūvēts kabelis ar XT60 sieviešu kontaktdakšu, lai izveidotu savienojumu ar LiPo akumulatoru. No otras puses, mūsu divi iepriekš pielodētie LED/slēdža kabeļi ir pieskrūvēti. Tādējādi katru ķēdi (motoru un Arduino) varētu iespējot ar savu slēdzi un atbilstošo zaļo gaismas diodi.

Kabeļu vadība

Ātri jums būs jātiek galā ar daudziem kabeļiem! Lai samazinātu nekārtību, varat izmantot “tabulu”, kas iepriekš tika izdrukāta 3D formātā. Uz galda kopiet savas elektroniskās plāksnes ar abpusēju lenti un zem galda ļaujiet vadiem brīvi plūst.

Akumulatora uzturēšana

Lai izvairītos no akumulatora izmešanas, vadot robotu, varat vienkārši izmantot matu elastīgo joslu.

Rullīšu ritentiņš

Nav īsti rullīšu ritentiņš, bet vienkārša puslode, kas piestiprināta ar 4 skrūvēm apakšējā slānī. Tas ir pietiekami, lai nodrošinātu robota stabilitāti.

6. solis: viena paneļa dators un sensori augšējā slānī

Viena paneļa dators un sensori augšējā slānī
Viena paneļa dators un sensori augšējā slānī
Viena paneļa dators un sensori augšējā slānī
Viena paneļa dators un sensori augšējā slānī
Viena paneļa dators un sensori augšējā slānī
Viena paneļa dators un sensori augšējā slānī

Kuru viena valdes datoru izvēlēties?

Man nevajag jums prezentēt slaveno Raspberry Pi, tā lietošanas gadījumu skaits lielā mērā pārsniedz robotikas jomu. Bet Raspberry Pi ir daudz spēcīgāks izaicinātājs, kuru jūs varētu ignorēt. Patiešām, Nvidia Jetson Nano papildus procesoram iegulst jaudīgu 128 kodolu grafisko karti. Šī konkrētā grafiskā karte ir izstrādāta, lai paātrinātu dārgus skaitļošanas uzdevumus, piemēram, attēlu apstrādi vai neironu tīkla secinājumus.

Šim projektam es izvēlējos Jetson Nano, un jūs varat atrast atbilstošo 3D daļu starp pievienotajiem failiem, bet, ja vēlaties izmantot Raspberry Pi, šeit ir daudz izdrukājamu lietu.

5V regulators

Neatkarīgi no tā dēļa, kuru jūs nolēmāt uzņemt savā robotā, jums ir nepieciešams 5V regulators. Jaunākajai Raspberry Pi 4 ir nepieciešama maksimālā jauda 1,25A, bet Jetson Nano pieprasa līdz 3A slodzi, tāpēc es izvēlējos, lai Pololu 5V 6A būtu jaudas rezerve nākotnes komponentiem (sensoriem, gaismām, pakāpieniem …), bet jebkuram lētam 5V 2A vajadzētu darbs. Jetson izmanto 5,5 mm līdzstrāvas mucu un Pi mikro USB, satveriet atbilstošo kabeli un pielodējiet to pie regulatora izejas.

LIDAR izkārtojums

Šeit izmantotais LIDAR ir LDS-01, ir arī citi 2D LIDAR, kurus varētu izmantot, piemēram, RPLidar A1/A2/A3, YDLidar X4/G4 vai pat Hokuyo LIDAR. Vienīgā prasība ir tāda, ka tas ir jāpievieno caur USB un jānovieto centrā virs konstrukcijas. Patiešām, ja LIDAR nav labi centrēts, SLAM algoritma izveidotā karte var novirzīt paredzamo sienu un šķēršļu stāvokli no to reālās atrašanās vietas. Arī tad, ja kādi šķēršļi no robota šķērso lāzera staru, tas samazinās diapazonu un redzes lauku.

LIDAR stiprinājums

LIDAR ir uzstādīts uz 3D drukātas daļas, kas atbilst tās formai, pati detaļa tiek turēta uz taisnstūrveida plāksnes (faktiski attēlā saplāksnī, bet to var arī izdrukāt 3D formātā). Tad adaptera daļa ļauj ansambli nostiprināt uz augšējās bruņurupuča plāksnes ar neilona starplikām.

Kamera kā papildu sensors vai LIDAR nomaiņa

Ja nevēlaties tērēt pārāk daudz naudas LIDAR (kas maksā aptuveni 100 USD), izvēlieties kameru: pastāv arī SLAM algoritmi, kas darbojas tikai ar monokulāru RGB kameru. Abi SBC pieņem USB vai CSI kameru.

Turklāt kamera ļaus jums palaist datora redzes un objektu noteikšanas skriptus!

Montāža

Pirms robota aizvēršanas izlaidiet kabeļus caur lielākiem caurumiem augšējā plāksnē:

  • atbilstošo kabeli no 5V regulatora līdz jūsu SBC
  • USB kabelis no Arduino DUE programmēšanas porta (vistuvāk līdzstrāvas cilindram) līdz jūsu SBC USB portam

Pēc tam turiet augšējo plāksni vietā ar duci skrūvju. Jūsu robots tagad ir gatavs programmēšanai, LABI GATAVS!

7. solis: Lieciet tam kustēties

Apkopojiet Arduino

Atveriet savu iecienīto Arduino IDE un importējiet projekta mapi ar nosaukumu own_turtlebot_core, pēc tam atlasiet savu dēli un atbilstošo portu, jūs varat atsaukties uz šo lielisko apmācību.

Pielāgojiet pamata iestatījumus

Projekts sastāv no diviem failiem, un viens ir jāpielāgo jūsu robotam. Atvērsim savu_turtlebot_config.h un atklāsim, kuras rindas prasa mūsu uzmanību:

#define ARDUINO_DUE // ** KOMENTĒJIET ŠO LĪNIJU, JA NEIZMANTOJAT PIENĀKUMU **

Jāizmanto tikai kopā ar Arduino DUE, ja nav komentāru par līniju.

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

#define RATE_CONTROLLER_KD 5000000000000.0 // ** TUNE ŠO VĒRTĪBU ** #define RATE_CONTROLLER_KI 0.00005 // ** TUNE THIS VALUE **

Šie 3 parametri atbilst ātruma regulatora ieguvumiem, ko izmanto PID, lai uzturētu vēlamo ātrumu. Atkarībā no akumulatora sprieguma, robota masas, riteņa diametra un motora mehāniskā pārnesuma jums būs jāpielāgo to vērtības. PID ir klasisks kontrolieris, un jūs šeit netiksit detalizēts, taču šai saitei vajadzētu sniegt pietiekami daudz ievades, lai pielāgotu savu.

/ * Definējiet tapas */

// motors A (pa labi) const baits motorRightEncoderPinA = 38; // ** MAINĪT AR SAVU PIN kodu ** const byte motorRightEncoderPinB = 34; // ** MAINĪT AR SAVU PIN kodu ** const byte enMotorRight = 2; // ** MAINĪT AR SAVU PIN kodu ** const byte in1MotorRight = 4; // ** MAINĪT AR SAVU PIN kodu ** const byte in2MotorRight = 3; // ** MAINĪT AR SAVU PIN kodu ** // // motors B (pa kreisi) const baits motorLeftEncoderPinA = 26; // ** MAINĪT AR SAVU PIN kodu ** const byte motorLeftEncoderPinB = 30; // ** MAINĪT AR SAVU PIN kodu ** const byte enMotorLeft = 7; // ** MAINĪT AR SAVU PIN kodu ** const byte in1MotorLeft = 6; // ** MAINĪT AR SAVU PIN kodu ** const byte in2MotorLeft = 5; // ** MAINĪT AR SAVU PIN kodu **

Šis bloks nosaka pinout starp L298N un Arduino, vienkārši mainiet pin numuru, lai tas atbilstu jūsu. Kad esat pabeidzis konfigurācijas failu, apkopojiet un augšupielādējiet kodu!

Instalējiet un konfigurējiet ROS

Kad esat sasniedzis šo soli, norādījumi ir tieši tādi paši kā tie, kas aprakstīti lieliskajā TurtleBot3 rokasgrāmatā, jums rūpīgi jāievēro

labi darīts TurtleBot 3 tagad ir jūsu, un jūs varat palaist visas esošās paketes un apmācības, izmantojot ROS.

Labi, bet kas ir ROS?

ROS apzīmē robotu operētājsistēmu, sākumā tā varētu šķist diezgan sarežģīta, bet tā nav, iedomājieties saziņas veidu starp aparatūru (sensori un izpildmehānismi) un programmatūru (navigācijas, vadības, datora redzes algoritmi …). Piemēram, jūs varat viegli nomainīt savu pašreizējo LIDAR ar citu modeli, nepārtraucot iestatīšanu, jo katrs LIDAR publicē vienu un to pašu LaserScan ziņojumu. ROS tiek plaši izmantota robotika, Izpildiet savu pirmo piemēru

ROS “sveikas pasaules” ekvivalents ir robota tālvadība, izmantojot attālo datoru. Jūs vēlaties nosūtīt ātruma komandas, lai dzinēji grieztos, komandas seko šai caurulei:

  • mezgls turtlebot_teleop, kas darbojas attālajā datorā, publicē tēmu "/cmd_vel", ieskaitot Twist ziņojumu
  • šis ziņojums tiek pārsūtīts caur ROS ziņojumu tīklu uz SBC
  • sērijas mezgls ļauj "/cmd_vel" saņemt Arduino
  • Arduino nolasa ziņojumu un katram motoram nosaka leņķisko ātrumu, lai tas atbilstu vēlamajam robota lineārajam un leņķa ātrumam

Šī darbība ir vienkārša, un to var sasniegt, palaižot iepriekš uzskaitītās komandrindas! Ja vēlaties iegūt sīkāku informāciju, vienkārši noskatieties video.

[SBC]

roscore

[SBC]

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

[Attālais dators]

eksportēt TURTLEBOT3_MODEL = $ {TB3_MODEL}

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

Lai tiktu tālāk

Pirms izmēģināt visus oficiālos piemērus rokasgrāmatā, jums jāzina pēdējā lieta, katru reizi saskaroties ar šo komandu:

roslaunch turtlebot3_bringup turtlebot3_robot.launch

tā vietā jums ir jāpalaiž šī komanda savā SBC:

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

Un, ja jums ir LIDAR, kas palaiž saistīto komandu savā SBC, manā gadījumā es palaižu LDS01 ar šādu rindu:

roslaunch hls_lfcd_lds_driver hlds_laser.launch

Un tas arī viss, jūs esat galīgi izveidojis savu bruņurupuci:) Jūs esat gatavs atklāt fantastiskās ROS iespējas, kā arī kodēt redzi un mašīnmācīšanās algoritmus.

Ieteicams: