Post

Manipulateur Robotique Braccio

Contrôler le Bras Braccio avec OpenCV et PySerial

Manipulateur Robotique Braccio

Contrôle du Manipulateur Robotique Braccio

Aperçu

Introduction

Ce projet démontre comment contrôler un manipulateur robotique Braccio en utilisant le suivi des mains avec OpenCV et PySerial pour la communication avec un Arduino. Le système utilise la vision par ordinateur pour détecter les gestes des mains, qui sont traduits en commandes moteur pour le bras robotique.

La première main agit comme un sélecteur de moteur (moteurs 1-5), tandis que la deuxième main gère les moteurs 5-6 et contrôle la direction du mouvement pour le moteur sélectionné. Par exemple, j’utiliserais mon index de ma main droite pour choisir un moteur, et sur l’autre main, j’utiliserais l’index et le majeur pour soustraire 10 degrés (chaque seconde) du moteur sélectionné.

Composants Nécessaires

ComposantPrixDescriptionLien
Bras Robotique Braccio~100Bras Robotique TinkerKit BraccioBoutique Arduino
Carte Arduino~20Compatible avec le shield BraccioArduino Uno
Webcam~10Caméra USB pour le suivi des mains 
Bibliothèque PySerialGratuitCommunication série Pythonpip install
OpenCVGratuitBibliothèque de vision par ordinateurpip install
Bibliothèque BraccioGratuitBibliothèque de contrôle Bracciocliquer

Exemple de Configuration du Suivi des Mains

En utilisant les capacités de suivi des mains d’OpenCV, nous détectons les positions des mains et les gestes dans le flux vidéo en temps réel.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import cv2
import mediapipe as mp

mp_hands = mp.solutions.hands
hands = mp_hands.Hands()

cap = cv2.VideoCapture(0)
while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break
    
    results = hands.process(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
    ...

Exemple de Communication Arduino

Le script Python envoie des données d’index de moteur et de direction via une communication série à l’Arduino contrôlant le bras Braccio.

1
2
3
4
5
6
7
8
import serial

ser = serial.Serial('COM3', 9600)

def send_command(motor_index, direction):
    data = f"{motor_index},{direction}\n"
    ser.write(data.encode())
    ...

Conclusion

Pas la manière la plus efficace et intuitive de contrôler le robot, mais c’était une expérience amusante.

Cet article est sous licence CC BY 4.0 par l'auteur.

Tags tendance