Taula de continguts:
- Subministraments
- Pas 1: descripció
- Pas 2: Muntatge del bloc de motors
- Pas 3: interruptors i preparació de cables
- Pas 4: Cablatge de les plaques electròniques
- Pas 5: Motor Group i Arduino a la capa inferior
- Pas 6: ordinador de placa única i sensors a la capa superior
- Pas 7: feu-lo moure
Vídeo: Construeix el teu propi robot Turtlebot !: 7 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
EDITAR:
Podeu obtenir més informació relacionada amb el programari i el control en aquest enllaç:
hackaday.io/project/167074-build-your-own-turtlebot-3-backbone
L’enllaç directe al codi és:
github.com/MattMgn/foxbot_core
Per què aquest projecte?
Turtlebot 3 és la plataforma perfecta per aprofundir en l’electrònica, la robòtica i fins i tot la IA. Et proposo que creïs el teu propi turtlebot pas a pas amb components assequibles sense sacrificar les funcions i el rendiment. Amb una cosa en ment: mantenir el millor del robot inicial, la seva modularitat, simplicitat i l'enorme nombre de paquets per a la navegació autònoma i la IA de la comunitat de codi obert.
Aquest projecte és una oportunitat per als principiants d’adquirir nocions d’electrònica, mecànica i ciències de la computació i per als més experimentats d’obtenir una plataforma potent per provar i desenvolupar algoritmes d’intel·ligència artificial.
Què descobriràs en aquest projecte?
Esteu a punt de descobrir quines parts mecàniques i electròniques essencials s’han de conservar del bot original per garantir una compatibilitat completa.
Es detallarà tot el procés de construcció: des de la impressió de peces 3D, el muntatge i els diversos components, la soldadura i la integració de components electrònics fins a la finalització de la compilació de codis a Arduino. Aquest instructiu conclourà amb un exemple de "hola world" per familiaritzar-vos amb ROS. Si alguna cosa sembla poc clara, no dubteu a fer-ne la pregunta.
Subministraments
Electrònica:
1 x ordinador de placa única per executar ROS, per exemple, pot ser un Raspberry Pi o un Jetson Nano
1 x Arduino DUE, també podeu utilitzar un UNO o un MEGA
1 x placa base que s’adapta al pin-out Arduino DUE disponible aquí
2 motors de 12 V CC amb codificadors (opció de 100 RPM)
1 controlador de motor L298N
Regulador de 2 x 5V
1 x bateria (per exemple, bateria LiPo 3S / 4S)
2 interruptors ON / OFF
2 x LED
2 x 470 kOhm resistències
Connectors JST de 3 x 4 pins
1 x cable USB (almenys un entre el SBC i l'Arduino)
Sensors:
1 x sensor de corrent (opcional)
1 x 9 graus de llibertat IMU (opcional)
1 x LIDAR (opcional)
Xassís:
16 plaques modulars Turtlebot (que també es poden imprimir en 3D)
2 x rodes de 65 mm de diàmetre (opció d'amplada de 6 mm)
4 x separadors de niló de 30 mm (opcional)
20 insercions M3 (opcional)
Altres:
Filferros
Cargols i insercions M2.5 i M3
Impressora 3D o algú que us pugui imprimir les peces
Un trepant manual amb un joc de broques com aquest
Pas 1: descripció
Aquest robot és un accionament diferencial senzill que utilitza 2 rodes muntades directament al motor i una roda rodant que es col·loca a la part posterior per evitar que el robot caigui. El robot es divideix en dues capes:
la capa inferior: amb el grup de propulsió (bateria, controlador de motors i motors), i l'electrònica de 'baix nivell': microcontrolador Arduino, regulador de tensió, interruptors …
la capa superior: amb l'electrònic d'alt nivell, és a dir, l'ordinador de placa única i el LIDAR
Aquestes capes s’uneixen amb peces i cargols impresos per garantir la robustesa de l’estructura.
Esquema electrònic
L'esquema pot semblar una mica desordenat. És un dibuix esquemàtic i no representa tots els cables, connectors i proto-placa, però es pot llegir de la següent manera:
Una bateria de polímer iònic 3S Litihum amb capacitat de 3000 mAh alimenta el primer circuit, alimenta tant la placa de controlador de motor (L298N) com un primer regulador de 5V per a codificadors de motors i Arduino. Aquest circuit s’activa mitjançant un interruptor amb un LED que indica el seu estat ON / OFF.
La mateixa bateria alimenta un segon circuit, el voltatge d'entrada es converteix a 5V per alimentar l'ordinador de placa única. Aquí també, el circuit s’activa mitjançant un interruptor i un LED.
A continuació, es poden afegir sensors addicionals com un LIDAR o una càmera directament al Raspberry Pi mitjançant el port USB o CSI.
Disseny mecànic
El marc del robot està compost per 16 parts idèntiques que formaven 2 capes quadrades (28 cm d’amplada). Els nombrosos forats permeten muntar peces addicionals allà on ho necessiteu i ofereixen un disseny modular complet. Per a aquest projecte, vaig decidir obtenir les plaques originals de TurtleBot3, però també les podeu imprimir en 3D, ja que el seu disseny és de codi obert.
Pas 2: Muntatge del bloc de motors
Preparació del motor
El primer pas és afegir cinta d'escuma d'1 mm de gruix al voltant de cada motor per evitar vibracions i sorolls quan el motor giri.
Parts impreses
El suport del motor es tradueix en dues parts que agafen el motor com un vici. 4 cargols aconseguits per ajustar el motor al suport.
Cada suport es compon de diversos forats que acullen insercions M3 per muntar a l'estructura. Hi ha més forats dels realment necessaris, els forats addicionals es podrien utilitzar per muntar una peça addicional.
Configuració de la impressora 3D: totes les parts s’imprimeixen amb els paràmetres següents
- Broquet de 0,4 mm de diàmetre
- 15% de farciment de material
- Capa d’alçada de 0,2 mm
Roda
Les rodes escollides estan recobertes de goma per maximitzar l’adherència i garantir un rodament lliure de relliscades. Un cargol de subjecció manté la roda muntada a l’eix del motor. El diàmetre de la roda hauria de ser prou gran com per creuar irregularitats menors de graons i terra (aquestes rodes tenen un diàmetre de 65 mm).
Fixació
Quan hàgiu acabat amb un bloc de motor, repetiu les operacions anteriors i, simplement, fixeu-les a la capa amb cargols M3.
Pas 3: interruptors i preparació de cables
Preparació del cable del motor
En general, el motor-codificador ve amb un cable que inclou en un costat un connector de 6 pins que connecta la part posterior del PCB del codificador i cables nus a l’altre costat.
Teniu la possibilitat de soldar-los directament a la vostra placa de proto o fins i tot al vostre Arduino, però us recomano que feu servir capçaleres de pin femella i connectors JST-XH. D'aquesta manera, podeu endollar-los / desconnectar-los de la vostra placa proto i facilitar el muntatge.
Consells: podeu afegir una trena de màniga expandible al voltant dels cables i trossos de tub retràctil a prop dels connectors, de manera que obtindreu un cable "net".
Interruptor i LED
Per habilitar els dos circuits d'alimentació, prepareu 2 LED i canvieu els cables: al principi, soldeu una resistència de 470 kOhm en un dels pins LED, i després soldeu el LED en un dels pins del commutador. Aquí també podeu utilitzar un tros de tub retràctil per amagar la resistència a l'interior. Aneu amb compte de soldar el LED en la direcció correcta. Repetiu aquesta operació per obtenir dos cables de commutació / led.
muntatge
Muntar els cables fets anteriorment a la part impresa en 3D corresponent. Utilitzeu una femella per mantenir l’interruptor, ja que els LED no requereixen cola, sinó prou força per encabir-lo al forat.
Pas 4: Cablatge de les plaques electròniques
Disseny de taulers
Una proto-placa que s’adapta al disseny de la placa Arduino s’utilitza per reduir el nombre de cables. A la part superior del proto-tauler, el L298N està apilat amb capçalera femella Dupont (els Dupont són capçaleres "semblants a Arduino").
Preparació L298N
Originalment, la placa L298N no inclou la capçalera Dupont masculina corresponent, cal afegir una fila de 9 pins a sota del tauler. Heu de realitzar 9 forats amb una broca de 1 mm de diàmetre en paral·lel als forats existents, tal com es pot veure a la imatge. A continuació, enllaceu els passadors corresponents de les 2 files amb materials per soldar i cables curts.
L298N pin-out
El L298N es compon de 2 canals que permeten controlar la velocitat i la direcció:
direcció a través de 2 sortides digitals, anomenades IN1, IN2 per al primer canal i IN3 i IN4 per al segon
velocitat a través de 1 sortides digitals, anomenades ENA per al primer canal i ENB per al segon
He triat el següent pin-out amb l'Arduino:
motor esquerre: IN1 al pin 3, IN2 al pin 4, ENA al pin 2
motor dret: IN3 al pin 5, IN4 al pin 6, ENB al pin 7
Regulador de 5V
Fins i tot si el l298N normalment és capaç de proporcionar 5V, encara hi afegeixo un petit regulador. Alimenta l'Arduino mitjançant el port VIN i els 2 codificadors dels motors. Podeu saltar-vos aquest pas utilitzant directament el regulador L298N 5V incorporat.
Connectors JST i pin-out del codificador
Utilitzeu adaptadors de connectors JST-XH femelles de 4 pins, per connectar-los a:
- 5V del regulador
- un terreny
- dos ports d'entrada digitals (per exemple: 34 i 38 per al codificador dret i 26 i 30 per a l'esquerre)
I2C addicional
Com haureu notat, hi ha un connector JST de 4 pins addicional a la placa proto. S'utilitza per connectar un dispositiu I2C com una IMU, podeu fer el mateix i fins i tot afegir el vostre propi port.
Pas 5: Motor Group i Arduino a la capa inferior
Fixació de blocs motors
Un cop muntada la capa inferior amb les 8 plaques de Turtlebot, només cal utilitzar 4 cargols M3 directament a les insercions per mantenir els blocs del motor. A continuació, podeu connectar els cables d’alimentació del motor a les sortides L298N i als cables fabricats anteriorment als connectors JST de la placa base.
Distribució d'energia
La distribució d’energia es realitza simplement amb un bloc de terminals barrera. En un costat de la barrera, es cargola un cable amb un endoll femella XT60 per connectar-lo a la bateria LiPo. A l’altra banda, els nostres dos cables LED / interruptors prèviament soldats estan cargolats. Així, cada circuit (Motor i Arduino) es podria habilitar amb el seu propi interruptor i el LED verd corresponent.
Gestió de cables
Ràpidament haurà de fer front a molts cables. Per reduir l'aspecte desordenat, podeu utilitzar la "taula" prèviament impresa en 3D. A la taula, manteniu els taulers electrònics amb cinta de doble cara i, a sota de la taula, deixeu que els cables flueixin lliurement.
Manteniment de la bateria
Per evitar l'expulsió de la bateria quan conduïu el robot, només podeu utilitzar una banda elàstica per al cabell.
Rodet rodet
No és realment un rodet, sinó una simple mitja esfera fixada amb 4 cargols a la capa inferior. N’hi ha prou per garantir l’estabilitat del robot.
Pas 6: ordinador de placa única i sensors a la capa superior
Quin ordinador de placa única triar?
No necessito presentar-vos el famós Raspberry Pi, el seu nombre de casos d’ús supera en gran mesura el camp de la robòtica. Però hi ha un desafiador molt més poderós per al Raspberry Pi que podeu ignorar. De fet, el Jetson Nano de Nvidia incorpora una potent targeta gràfica de 128 nuclis a més del seu processador. Aquesta targeta gràfica en particular s’ha desenvolupat per accelerar tasques computacionals i costoses com el processament d’imatges o la inferència de xarxes neuronals.
Per a aquest projecte vaig triar el Jetson Nano i podeu trobar la part 3D corresponent entre els fitxers adjunts, però si voleu anar amb el Raspberry Pi hi ha molts casos imprimibles aquí.
Regulador 5V
Qualsevol que sigui la placa que hàgiu decidit portar al vostre robot, necessiteu un regulador de 5 V. L’última versió de Raspberry Pi 4 requereix 1,25 A com a màxim, però Jetson Nano requereix fins a 3 A d’estrès, així que vaig optar per que el Pololu 5V 6A tingués una reserva d’alimentació per a futurs components (sensors, llums, escales …), però qualsevol 5V 2A econòmic hauria de fer-ho el treball. El Jetson utilitza un canó de 5,5 mm de CC i el Pi un micro USB, agafa el cable corresponent i el solda a la sortida del regulador.
Disseny LIDAR
El LIDAR que s’utilitza aquí és el LDS-01, hi ha diversos LIDAR 2D que es poden utilitzar com RPLidar A1 / A2 / A3, YDLidar X4 / G4 o fins i tot Hokuyo LIDAR. L'únic requisit és que s'hagi de connectar mitjançant USB i col·locar-lo al centre de l'estructura. De fet, si el LIDAR no està ben centrat, el mapa creat per l'algorisme SLAM pot canviar la posició estimada de les parets i els obstacles de la seva posició real. També si algun obstacle del robot creua el feix làser, reduirà l'abast i el camp de visió.
Muntatge LIDAR
El LIDAR està muntat en una peça impresa en 3D que segueix la seva forma, la peça mateixa es manté sobre una placa rectangular (realment en fusta contraxapada a la imatge, però també es pot imprimir en 3D). A continuació, una peça adaptadora permet fixar el conjunt a la placa superior de turtlebot amb separadors de niló.
Càmera com a sensor addicional o substitució de LIDAR
Si no voleu gastar massa diners en un LIDAR (que costa aproximadament 100 dòlars), opteu per una càmera: també existeixen algoritmes SLAM que només funcionen amb una càmera RGB monocular. Tots dos SBC accepten càmeres USB o CSI.
A més, la càmera us permetrà executar scripts de visió per ordinador i detecció d’objectes.
muntatge
Abans de tancar el robot, passeu els cables pels forats més grans de la placa superior:
- el cable corresponent del regulador de 5V al vostre SBC
- el cable USB del port de programació de l'Arduino DUE (el més proper al barril de CC) a un port USB del vostre SBC
A continuació, manteniu la placa superior en posició amb una dotzena de cargols. El vostre robot ja està a punt per ser programat, BÉ FET!
Pas 7: feu-lo moure
Compileu l’Arduino
Obriu el vostre ID Arduino preferit i importeu la carpeta del projecte anomenada own_turtlebot_core i, a continuació, seleccioneu el tauler i el port corresponent, podeu consultar aquest excel·lent tutorial.
Ajusteu la configuració bàsica
El projecte es compon de dos fitxers i cal adaptar-ne un al vostre robot. Obrim doncs own_turtlebot_config.h i descobrim quines línies requereixen la nostra atenció:
#define ARDUINO_DUE // ** COMENTAR AQUESTA LÍNIA SI NO UTILITZEU UN DUE **
S'ha d'utilitzar només amb Arduino DUE, si no comenta la línia.
#define RATE_CONTROLLER_KP 130.0 // ** AFINAR AQUEST VALOR **
#define RATE_CONTROLLER_KD 5000000000000.0 // ** TUNE AQUEST VALOR ** #define RATE_CONTROLLER_KI 0,00005 // ** TUNE AQUEST VALOR **
Aquests 3 paràmetres corresponen als guanys del controlador de velocitat que utilitza el PID per mantenir la velocitat desitjada. En funció de la tensió de la bateria, la massa del robot, el diàmetre de la roda i l’engranatge mecànic del vostre motor, haureu d’adaptar els seus valors. PID és un controlador clàssic i no se us detallarà aquí, però aquest enllaç us proporcionarà prou entrades per afinar les vostres.
/ * Definiu pins * /
// motor A (dreta) byte const motorRightEncoderPinA = 38; // ** MODIFICA AMB EL TEU PIN NB ** const byte motorRightEncoderPinB = 34; // ** MODIFICA AMB EL TEU PIN NB ** const byte enMotorRight = 2; // ** MODIFICA AMB EL TEU PIN NB ** const byte in1MotorRight = 4; // ** MODIFICA AMB EL TEU PIN NB ** const byte in2MotorRight = 3; // ** MODIFICA AMB EL TEU PIN NB ** // motor B (esquerra) byte const motorLeftEncoderPinA = 26; // ** MODIFICA AMB EL TEU PIN NB ** const byte motorLeftEncoderPinB = 30; // ** MODIFICA AMB EL TEU PIN NB ** const byte enMotorLeft = 7; // ** MODIFICA AMB EL TEU PIN NB ** const byte in1MotorLeft = 6; // ** MODIFICA AMB EL TEU PIN NB ** const byte in2MotorLeft = 5; // ** MODIFICA AMB EL TEU PIN NB **
Aquest bloc defineix el pinout entre el L298N i l'Arduino, només cal que modifiqueu el número del pin perquè coincideixi amb el vostre. Quan hàgiu acabat el fitxer de configuració, compileu i pengeu el codi.
Instal·leu i configureu ROS
Un cop hàgiu assolit aquest pas, les instruccions són exactament les mateixes que les detallades a l’excel·lent manual de TurtleBot3. Heu de seguir escrupolosament
Ben fet, TurtleBot 3 ara és vostre i podeu executar tots els paquets i tutorials existents amb ROS.
D'acord, però, què és ROS?
ROS significa Robots Operating System (Sistema operatiu de robots), al principi pot semblar bastant complex, però no ho és, imagineu-vos una forma de comunicació entre maquinari (sensors i actuadors) i programari (algoritmes de navegació, control, visió per ordinador …). Per exemple, podeu canviar fàcilment el vostre LIDAR actual amb un altre model sense trencar la configuració, perquè cada LIDAR publica el mateix missatge LaserScan. El ROS que s’utilitza àmpliament és la robòtica, Executeu el vostre primer exemple
L'equivalent de "hola món" per a ROS consisteix a teleoperar el robot a través de l'ordinador remot. El que voleu fer és enviar ordres de velocitat perquè els motors girin, les ordres segueixen aquest tub:
- un node turtlebot_teleop, que s’executa a l’ordinador remot, publica un tema "/ cmd_vel" que inclou un missatge Twist
- aquest missatge es reenvia a través de la xarxa de missatges ROS al SBC
- un node sèrie permet rebre "/ cmd_vel" a l'Arduino
- l'Arduino llegeix el missatge i estableix la velocitat angular de cada motor perquè coincideixi amb la velocitat lineal i angular desitjada del robot
Aquesta operació és senzilla i es pot aconseguir executant les línies d’ordres enumerades més amunt. Si voleu informació més detallada només heu de veure el vídeo.
[SBC]
roscore
[SBC]
rosrun rosserial_python serial_node.py _port: = / dev / ttyACM0 _baud: = 115200
[Ordinador remot]
exporta TURTLEBOT3_MODEL = $ {TB3_MODEL}
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
Per anar més enllà
Abans de provar tots els exemples oficials, heu de saber una darrera cosa al manual cada vegada que afronteu aquesta ordre:
roslaunch turtlebot3_bringup turtlebot3_robot.launch
heu d'executar aquesta ordre al vostre SBC:
rosrun rosserial_python serial_node.py _port: = / dev / ttyACM0 _baud: = 115200
I si teniu un LIDAR, executeu l'ordre associada al vostre SBC, en el meu cas, executeu un LDS01 amb la línia següent:
roslaunch hls_lfcd_lds_driver hlds_laser.launch
I això és tot, heu creat definitivament el vostre propi turtlebot:) Esteu preparats per descobrir les fantàstiques capacitats de ROS i per codificar algorismes de visió i aprenentatge automàtic.
Recomanat:
Construeix el teu propi cotxe amb conducció autònoma: (aquest document instructiu està en procés): 7 passos
Construeixi el vostre propi cotxe amb conducció autònoma: (aquest procés d’instrucció està en procés): Hola, si mireu el meu altre robot instructiu a Drive amb control remot USB, aquest projecte és similar, però a una escala més petita. També podeu seguir o obtenir ajuda o inspiració en el camp de la robòtica, el reconeixement de veu de producció pròpia o el propi
Otto DIY: construeix el teu propi robot en una hora: 9 passos (amb imatges)
Otto DIY - Build Your Own Robot in One Hour !: Otto és un robot interactiu que qualsevol pot fer !, Otto camina, balla, fa sons i evita obstacles. missió d'impacte per crear un entorn inclusiu per a tots els k
Construeix el teu propi equip DMX: Arduino: 7 passos (amb imatges)
Creeu el vostre propi dispositiu DMX: Arduino: us donem la benvinguda a la meva segona pàgina d’instruccions. He après moltes coses d’aquest lloc i em sembla un lloc fantàstic per mostrar els meus projectes. Espero que aquest projecte us sigui entretingut i útil. Tinc moltes ganes de saber què en penses. Aviseu-me als comentaris, súplica
Construeix el teu propi assistent d’intel·ligència artificial (intel·ligència artificial) 101: 10 passos
Construeix el teu propi assistent d’intel·ligència artificial (intel·ligència artificial) 101: recorda l’època en què observaves Iron Man i et preguntaves per a tu mateix, què bo seria si tinguessis el teu propi J.A.R.V.I.S? Bé, és hora de fer realitat aquest somni. La intel·ligència artificial és la següent generació. Imagineu el fresc que seria
Construeix el teu propi robot de majordom !!! - Tutorial, fotos i vídeo: 58 passos (amb imatges)
Construeix el teu propi robot de majordom !!! - Tutorial, fotos i vídeo: EDIT: Més informació sobre els meus projectes fes un cop d'ull al meu nou lloc web: narobo.com També faig consultoria per a productes / productes de robòtica, mecatrònica i efectes especials. Consulteu el meu lloc web: narobo.com per obtenir més detalls. Mai he volgut un robot majordom que parli amb vosaltres