Table des matières:
- Fournitures
- Étape 1: Description
- Étape 2: Assemblage du bloc moteur
- Étape 3: Commutateurs et préparation des câbles
- Étape 4: Câblage des cartes électroniques
- Étape 5: Groupe moteur et Arduino sur la couche inférieure
- Étape 6: Ordinateur monocarte et capteurs sur la couche supérieure
- Étape 7: Faites bouger les choses
Vidéo: Construisez votre propre robot Turtlebot ! : 7 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
ÉDITER:
De plus amples informations relatives au logiciel et au contrôle sont disponibles sur ce lien:
hackaday.io/project/167074-build-your-own-turtlebot-3-backbone
Le lien direct vers le code est:
github.com/MattMgn/foxbot_core
Pourquoi ce projet ?
Turtlebot 3 est la plate-forme idéale pour approfondir l'électronique, la robotique et même l'IA ! Je vous propose de construire votre propre Turtlebot étape par étape avec des composants abordables sans sacrifier les fonctionnalités et les performances. Avec une idée en tête: garder le meilleur du robot initial, sa modularité, sa simplicité et le grand nombre de packages pour la navigation autonome et l'IA de la communauté open source.
Ce projet est l'occasion pour les débutants d'acquérir des notions d'électronique, de mécanique et d'informatique, et pour les plus expérimentés de se doter d'une plateforme performante pour tester et développer des algorithmes d'intelligence artificielle.
Que découvrirez-vous dans ce projet ?
Vous êtes sur le point de découvrir quelles pièces mécaniques et électroniques essentielles doivent être conservées du bot d'origine pour garantir une compatibilité totale.
L'ensemble du processus de construction sera détaillé: allant de l'impression de pièces 3D, l'assemblage et les différents composants, la soudure et l'intégration de l'électronique jusqu'à la compilation du code sur Arduino. Cette instructable se terminera sur un exemple de « hello world » pour vous familiariser avec ROS. Si quelque chose ne vous semble pas clair, n'hésitez pas à poser des questions !
Fournitures
Électronique:
1 x ordinateur monocarte pour exécuter ROS, pourrait être un Raspberry Pi ou un Jetson Nano par exemple
1 x Arduino DUE, vous pouvez également utiliser un UNO ou un MEGA
1 x carte Proto qui s'adapte au brochage Arduino DUE disponible ici
2 moteurs 12V DC avec encodeurs (option 100 RPM)
1 x pilote de moteur L298N
2 régulateurs 5V
1 x Batterie (batterie LiPo 3S/4S par exemple)
2 interrupteurs marche/arrêt
2 LED
2 résistances 470kOhm
Connecteurs JST 3 x 4 broches
1 x câble USB (au moins un entre le SBC et l'Arduino)
Capteurs:
1 x capteur de courant (facultatif)
1 x 9 degrés de liberté IMU (facultatif)
1 x LIDAR (facultatif)
Châssis:
16 x plaques modulaires Turtlebot (qui peuvent également être imprimées en 3D)
2 x roues diamètre 65 mm (option largeur 6 mm)
4 x entretoises en nylon 30 mm (facultatif)
20 x inserts M3 (en option)
Autres:
Fils
Vis et inserts M2.5 et M3
Imprimante 3D ou quelqu'un qui peut imprimer les pièces pour vous
Une perceuse à main avec un ensemble de forets comme celui-ci
Étape 1: Description
Ce robot est un simple entraînement différentiel qui utilise 2 roues montées directement sur leur moteur et une roulette qui est placée à l'arrière pour empêcher le robot de tomber. Le robot est divisé en deux couches:
la couche inférieure: avec le groupe de propulsion (batterie, contrôleur de moteur et moteurs), et l'électronique « bas niveau »: microcontrôleur Arduino, régulateur de tension, commutateurs…
la couche supérieure: avec l'électronique « de haut niveau », à savoir l'ordinateur à carte unique et le LIDAR
Ces couches sont liées par des pièces imprimées et des vis pour assurer la robustesse de la structure.
Schéma électronique
Le schéma peut sembler un peu brouillon. C'est un dessin schématique et il ne représente pas tous les fils, connecteurs et la proto-carte mais il peut être lu comme suit:
Une batterie 3S Litihum Ion Polymer d'une capacité de 3000mAh alimente le premier circuit, elle alimente à la fois la carte contrôleur de moteur (L298N) et un premier régulateur 5V pour les encodeurs de moteur et Arduino. Ce circuit est activé via un interrupteur avec une LED qui indique son état ON/OFF.
La même batterie alimente un deuxième circuit, la tension d'entrée est convertie en 5V pour alimenter l'ordinateur monocarte. Ici aussi, le circuit est activé via un interrupteur et une LED.
Des capteurs supplémentaires comme un LIDAR ou une caméra peuvent ensuite être ajoutés directement sur le Raspberry Pi via USB ou le port CSI.
Design mécanique
Le châssis du robot est composé de 16 pièces identiques qui forment 2 couches carrées (largeur 28cm). Les nombreux trous permettent de monter des pièces supplémentaires là où vous en avez besoin et offrent une conception modulaire complète. Pour ce projet, j'ai décidé d'obtenir les plaques originales TurtleBot3 mais vous pouvez également les imprimer en 3D car leur conception est open source.
Étape 2: Assemblage du bloc moteur
Préparation moteur
La première étape consiste à ajouter du ruban en mousse de 1 mm d'épaisseur autour de chaque moteur pour éviter les vibrations et le bruit lorsque le moteur tourne.
Pièces imprimées
Le support du moteur se compose de deux parties qui saisissent le moteur comme un étau. 4 vis réalisées pour serrer le moteur dans le support.
Chaque support est composé de plusieurs trous qui accueillent des inserts M3 à monter sur la structure. Il y a plus de trous que nécessaire, les trous supplémentaires pourraient éventuellement être utilisés pour monter une pièce supplémentaire.
Paramètres de l'imprimante 3D: toutes les pièces sont imprimées avec les paramètres suivants
- buse de 0,4 mm de diamètre
- 15% de remplissage de matériau
- couche de 0,2 mm de hauteur
Roue
Les roues choisies sont recouvertes de caoutchouc pour maximiser l'adhérence et assurer des conditions de roulement sans glissement. Une vis de serrage maintient la roue montée sur l'arbre moteur. Le diamètre de la roue doit être suffisamment grand pour franchir les marches mineures et les irrégularités du sol (ces roues ont un diamètre de 65 mm).
Fixation
Lorsque vous avez terminé avec un bloc moteur, répétez les opérations précédentes puis fixez-les simplement dans la couche avec des vis M3.
Étape 3: Commutateurs et préparation des câbles
Préparation du câble moteur
Généralement, le moteur-encodeur est livré avec un câble comprenant d'un côté un connecteur à 6 broches qui relie l'arrière du PCB de l'encodeur, et des fils nus de l'autre côté.
Vous avez la possibilité de les souder directement sur votre proto-carte ou même votre Arduino, mais je vous recommande d'utiliser à la place des embases à broches femelles et des connecteurs JST-XH. Ainsi vous pourrez les brancher/débrancher sur votre proto-board et faciliter votre montage.
Astuces: vous pouvez ajouter une tresse de gaine extensible autour de vos fils et des morceaux de gaine thermorétractable près des connecteurs, vous obtiendrez ainsi un câble "propre".
Interrupteur et LED
Pour activer les deux circuits d'alimentation, préparez 2 câbles LED et interrupteurs: d'abord soudez une résistance de 470kOhm sur l'une des broches LED, puis soudez la LED sur l'une des broches interrupteur. Ici aussi, vous pouvez utiliser un morceau de tube thermorétractable pour cacher la résistance à l'intérieur. Attention à bien souder la LED dans le bon sens ! Répétez cette opération pour obtenir deux câbles interrupteur/led.
Assemblée
Assemblez les câbles précédemment réalisés sur la pièce imprimée en 3D correspondante. Utilisez un écrou pour maintenir l'interrupteur, les LED ne nécessitent pas de colle, juste assez de force pour l'insérer dans le trou.
Étape 4: Câblage des cartes électroniques
Disposition des planches
Une carte proto adaptée à la disposition de la carte Arduino est utilisée pour réduire le nombre de fils. Sur le dessus de la proto-carte, le L298N est empilé avec un en-tête femelle Dupont (les Dupont sont des en-têtes « de type Arduino »).
Préparation L298N
À l'origine, la carte L298N n'est pas livrée avec l'en-tête Dupont mâle correspondant, vous devez ajouter une rangée de 9 broches sous la carte. Vous devez réaliser 9 trous avec un foret de 1mm de diamètre en parallèle des trous existants comme vous pouvez le voir sur la photo. Reliez ensuite les broches correspondantes des 2 rangées avec des matériaux de soudure et des fils courts.
Brochage L298N
Le L298N est composé de 2 canaux permettant le contrôle de la vitesse et de la direction:
direction via 2 sorties numériques, appelées IN1, IN2 pour le premier canal, et IN3 et IN4 pour le second
vitesse à travers 1 sorties numériques, appelées ENA pour le premier canal et ENB pour le second
J'ai choisi le brochage suivant avec l'Arduino:
moteur gauche: IN1 sur la broche 3, IN2 sur la broche 4, ENA sur la broche 2
moteur droit: IN3 sur la broche 5, IN4 sur la broche 6, ENB sur la broche 7
Régulateur 5V
Même si le l298N est normalement capable de fournir du 5V, j'ajoute quand même un petit régulateur. Il alimente l'Arduino via le port VIN et les 2 encodeurs sur les moteurs. Vous pouvez sauter cette étape en utilisant directement le régulateur L298N 5V intégré.
Connecteurs JST et brochage de l'encodeur
Utilisez des adaptateurs de connecteur JST-XH femelle 4 broches, chaque connecteur est alors relié à:
- 5V du régulateur
- un sol
- deux ports d'entrée numérique (par exemple: 34 et 38 pour l'encodeur droit et 26 et 30 pour le gauche)
I2C supplémentaire
Comme vous l'avez peut-être remarqué, il y a un connecteur JST 4 broches supplémentaire sur la carte proto. Il est utilisé pour connecter un périphérique I2C comme un IMU, vous pouvez faire de même et même ajouter votre propre port.
Étape 5: Groupe moteur et Arduino sur la couche inférieure
Fixation des blocs moteur
Une fois la couche inférieure assemblée avec les 8 plaques du Turtlebot, il suffit d'utiliser 4 vis M3 directement dans les inserts pour maintenir les blocs moteurs. Ensuite, vous pouvez brancher les fils d'alimentation du moteur aux sorties L298N et les câbles précédemment fabriqués aux connecteurs JST de la carte proto.
Distribution d'énergie
La distribution de puissance est simplement réalisée avec un bornier barrière. D'un côté de la barrière, un câble avec une prise femelle XT60 est vissé pour se connecter à la batterie LiPo. De l'autre côté, nos deux câbles LED/interrupteur préalablement soudés sont vissés. Ainsi, chaque circuit (Moteur et Arduino) pourrait être activé avec son propre interrupteur et la LED verte correspondante.
Gestion des câbles
Rapidement vous allez devoir faire face à beaucoup de câbles ! Pour réduire l'aspect désordonné, vous pouvez utiliser la 'table' préalablement imprimée en 3D. Sur la table, maintenez vos cartes électroniques avec du ruban adhésif double face, et sous la table laissez passer les fils librement.
Entretien de la batterie
Pour éviter l'éjection de la batterie lors de la conduite de votre robot, vous pouvez simplement utiliser un élastique pour cheveux.
Roulette
Pas vraiment une roulette mais une simple demi-sphère fixée avec 4 vis sur la couche inférieure. Il suffit d'assurer la stabilité du robot.
Étape 6: Ordinateur monocarte et capteurs sur la couche supérieure
Quel ordinateur monocarte choisir ?
Je n'ai pas besoin de vous présenter le fameux Raspberry Pi, son nombre de cas d'utilisation dépasse largement le domaine de la robotique. Mais il existe un challenger beaucoup plus puissant pour le Raspberry Pi que vous pourriez ignorer. En effet le Jetson Nano de Nvidia embarque une puissante carte graphique 128 cœurs en plus de son processeur. Cette carte graphique particulière a été développée pour accélérer les tâches de calcul coûteuses telles que le traitement d'images ou l'inférence de réseau neuronal.
Pour ce projet j'ai choisi le Jetson Nano et vous pouvez trouver la pièce 3D correspondante parmi les fichiers joints, mais si vous souhaitez partir avec le Raspberry Pi il existe de nombreux cas imprimables ici.
Régulateur 5V
Quelle que soit la carte que vous avez décidé d'apporter sur votre robot, vous avez besoin d'un régulateur 5V. Le dernier Raspberry Pi 4 nécessite 1.25A max mais Jetson Nano nécessite jusqu'à 3A en stress donc j'ai opté pour le Pololu 5V 6A pour avoir une réserve de marche pour les futurs composants (capteurs, lumières, steppers…), mais n'importe quel 5V 2A pas cher devrait faire l'affaire le travail. Le Jetson utilise un canon DC de 5,5 mm et le Pi un micro USB, saisissez le câble correspondant et soudez-le à la sortie du régulateur.
Disposition LIDAR
Le LIDAR utilisé ici est le LDS-01, il existe divers autres LIDAR 2D qui pourraient être utilisés comme les LIDAR RPLidar A1/A2/A3, YDLidar X4/G4 ou encore les LIDAR Hokuyo. La seule exigence est qu'il doit être branché via USB et être placé au centre au-dessus de la structure. En effet si le LIDAR n'est pas bien centré, la carte créée par l'algorithme SLAM peut décaler la position estimée des murs et obstacles par rapport à leur position réelle. De plus, si des obstacles du robot traversent le faisceau laser, cela réduira la portée et le champ de vision.
Montage LIDAR
Le LIDAR est monté sur une pièce imprimée en 3D qui suit sa forme, la pièce elle-même est maintenue sur une plaque rectangulaire (en fait en contreplaqué sur la photo mais pourrait également être imprimée en 3D). Ensuite, une pièce adaptatrice permet de fixer l'ensemble sur la plaque supérieure du Turtlebot avec des entretoises en nylon.
Caméra comme capteur supplémentaire ou remplacement LIDAR
Si vous ne voulez pas dépenser trop d'argent dans un LIDAR (qui coûte environ 100$), optez pour une caméra: il existe aussi des algorithmes SLAM qui ne fonctionnent qu'avec une caméra RVB monoculaire. Les deux SBC acceptent les caméras USB ou CSI.
De plus, la caméra vous permettra d'exécuter des scripts de vision par ordinateur et de détection d'objets !
Assemblée
Avant de fermer le robot, faites passer les câbles dans les plus gros trous de la plaque supérieure:
- le câble correspondant du régulateur 5V à votre SBC
- le câble USB du port de programmation de l'Arduino DUE (le plus proche du barillet DC) à un port USB de votre SBC
Maintenez ensuite la plaque supérieure en position avec une dizaine de vis. Votre robot est maintenant prêt à être programmé, BIEN FAIT !
Étape 7: Faites bouger les choses
Compiler l'Arduino
Ouvrez votre IDE Arduino préféré et importez le dossier du projet appelé own_turtlebot_core, puis sélectionnez votre carte et le port correspondant, vous pouvez vous référer à cet excellent tutoriel.
Ajuster les paramètres de base
Le projet est composé de deux fichiers, et l'un doit être adapté à votre robot. Ouvrons donc own_turtlebot_config.h, et découvrons quelles lignes nécessitent notre attention:
#define ARDUINO_DUE // ** COMMENTEZ CETTE LIGNE SI VOUS N'UTILISEZ PAS DE DUE **
Doit être utilisé uniquement avec Arduino DUE, sinon commenter la ligne.
#define RATE_CONTROLLER_KP 130.0 // ** AJUSTER CETTE VALEUR **
#define RATE_CONTROLLER_KD 5000000000000.0 // ** REGLER CETTE VALEUR ** #define RATE_CONTROLLER_KI 0.00005 // ** REGLER CETTE VALEUR **
Ces 3 paramètres correspondent aux gains du régulateur de débit utilisés par le PID pour maintenir la vitesse souhaitée. En fonction de la tension de la batterie, de la masse du robot, du diamètre des roues et de l'engrenage mécanique de votre moteur, vous devrez adapter leurs valeurs. Le PID est un contrôleur classique et vous ne serez pas détaillé ici mais ce lien devrait vous donner suffisamment d'entrées pour régler le vôtre.
/* Définir les broches */
// moteur A (droit) octet const motorRightEncoderPinA = 38; // ** MODIFIER AVEC VOTRE PIN NB ** octet const motorRightEncoderPinB = 34; // ** MODIFIER AVEC VOTRE PIN NB ** const byte enMotorRight = 2; // ** MODIFIER AVEC VOTRE PIN NB ** const byte in1MotorRight = 4; // ** MODIFIER AVEC VOTRE PIN NB ** const byte in2MotorRight = 3; // ** MODIFIER AVEC VOTRE PIN NB ** // moteur B (gauche) octet const motorLeftEncoderPinA = 26; // ** MODIFIER AVEC VOTRE PIN NB ** octet const motorLeftEncoderPinB = 30; // ** MODIFIER AVEC VOTRE PIN NB ** const byte enMotorLeft = 7; // ** MODIFIER AVEC VOTRE PIN NB ** octet const in1MotorLeft = 6; // ** MODIFIER AVEC VOTRE PIN NB ** const byte in2MotorLeft = 5; // ** MODIFIER AVEC VOTRE PIN NB **
Ce bloc définit le brochage entre le L298N et l'Arduino, modifiez simplement le numéro de broche pour qu'il corresponde au vôtre. Lorsque vous avez terminé avec le fichier de configuration, compilez et téléchargez le code !
Installer et configurer ROS
Une fois cette étape franchie, les instructions sont exactement les mêmes que celles détaillées sur l'excellent manuel de TurtleBot3, il faut suivre scrupuleusement
Bravo TurtleBot 3 est maintenant à vous et vous pouvez exécuter tous les packages et tutoriels existants avec ROS.
D'accord mais qu'est-ce que ROS ?
ROS signifie Robots Operating System, cela peut sembler assez complexe au premier abord mais ce n'est pas le cas, imaginez simplement un moyen de communication entre le matériel (capteurs et actionneurs) et le logiciel (algorithmes de navigation, de contrôle, de vision par ordinateur…). Par exemple, vous pouvez facilement échanger votre LIDAR actuel avec un autre modèle sans interrompre votre configuration, car chaque LIDAR publie le même message LaserScan. ROS est largement utilisé est la robotique, Exécutez votre premier exemple
L'équivalent 'hello world' pour ROS consiste à téléopérer votre robot via l'ordinateur distant. Ce que vous voulez faire, c'est envoyer des commandes de vitesse pour faire tourner les moteurs, les commandes suivent ce tuyau:
- un nœud Turtlebot_teleop, s'exécutant sur l'ordinateur distant, publie un sujet "/cmd_vel" incluant un message Twist
- ce message est transmis via le réseau de messages ROS au SBC
- un nœud série permet de recevoir le "/cmd_vel" sur l'Arduino
- l'Arduino lit le message et définit le taux angulaire sur chaque moteur pour correspondre à la vitesse linéaire et angulaire souhaitée du robot
Cette opération est simple et peut être réalisée en exécutant les lignes de commande listées ci-dessus ! Si vous voulez des informations plus détaillées, regardez simplement la vidéo.
[SBC]
rosace
[SBC]
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200
[Ordinateur distant]
exporter TURTLEBOT3_MODEL=${TB3_MODEL}
roslaunch Turtlebot3_teleop Turtlebot3_teleop_key.launch
Pour aller plus loin
Vous devez savoir une dernière chose avant d'essayer tous les exemples officiels, dans le manuel à chaque fois que vous rencontrez cette commande:
roslaunch Turtlebot3_bringup Turtlebot3_robot.launch
vous devez plutôt exécuter cette commande sur votre SBC:
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0 _baud:=115200
Et si vous avez un LIDAR exécutez la commande associée sur votre SBC, dans mon cas je lance un LDS01 avec la ligne ci-dessous:
roslaunch hls_lfcd_lds_driver hlds_laser.launch
Et c'est tout, vous avez définitivement construit votre propre Turtlebot:) Vous êtes prêt à découvrir les fantastiques capacités de ROS, et à coder des algorithmes de vision et d'apprentissage automatique.
Conseillé:
Construisez votre propre alimentation de laboratoire variable : 4 étapes (avec photos)
Construisez votre propre alimentation variable pour banc de laboratoire : dans ce projet, je vais vous montrer comment j'ai combiné un LTC3780, qui est un puissant convertisseur élévateur/abaisseur 130 W, avec une alimentation électrique 12 V 5 A pour créer une alimentation électrique réglable pour banc de laboratoire (0,8 V-29.4V || 0.3A-6A). Les performances sont assez bonnes en compa
Construisez votre propre radio FM brute : 4 étapes
Construisez votre propre radio FM brute : Dans ce projet, je vais démontrer comment fonctionne un émetteur RF FM et comment ce principe se compare à l'ancien AM. Je vais aussi vous montrer comment construire un récepteur FM simple et brut qui peut même parfois vous permettre d'écouter votre radio préférée
Otto DIY - Construisez votre propre robot en une heure ! : 9 étapes (avec photos)
Otto DIY - Construisez votre propre robot en une heure ! : Otto est un robot interactif que tout le monde peut fabriquer !, Otto marche, danse, fait des sons et évite les obstacles. Otto est complètement open source, compatible Arduino, imprimable en 3D et avec un réseau social mission d'impact pour créer un environnement inclusif pour tous les k
CityCoaster - Construisez votre propre sous-verre de réalité augmentée pour votre entreprise (TfCD) : 6 étapes (avec photos)
CityCoaster - Construisez votre propre sous-verre de réalité augmentée pour votre entreprise (TfCD) : une ville sous votre tasse ! CityCoaster est un projet né en pensant à un produit pour l'aéroport de Rotterdam la Haye, qui pourrait exprimer l'identité de la ville, divertissant les clients du salon avec la réalité augmentée. Dans un environnement tel que
Construisez votre propre robot majordome !!! - Tutoriel, photos et vidéo : 58 étapes (avec photos)
Construisez votre propre robot majordome !!! - Tutoriel, photos et vidéo : EDIT : Plus d'informations sur mes projets, consultez mon nouveau site Web : narobo.com Je fais également du conseil pour des projets/produits de robotique, de mécatronique et d'effets spéciaux. Consultez mon site Web - narobo.com pour plus de détails. Vous avez toujours voulu un robot majordome qui vous parle