add séance 3 (blem git)
This commit is contained in:
149
compte-rendu-3.md
Normal file
149
compte-rendu-3.md
Normal file
@@ -0,0 +1,149 @@
|
||||
# compte rendu bras robot 3
|
||||
## modelisation 3D et plans
|
||||
|
||||
```
|
||||
On a réalisé toutes les pièces du bras (y compris la base qui supporte le bras sur la base roulante) via la modélisation 3D sur fusion et onshape
|
||||
```
|
||||

|
||||
|
||||
### realisation de la structure globale du bras :
|
||||
- base du bras robot
|
||||

|
||||
```
|
||||
dimension
|
||||
D= 10cm
|
||||
H= 1cm
|
||||
```
|
||||
|
||||
- premier support de servo moteur
|
||||

|
||||
`Nous allons utiliser des inserts M3 avec des vis M3. Initialement, nous avions pensé à des inserts M2, mais le laboratoire n'en dispose pas. Nous utilisons également des vis M2 pour le pignon des servomoteurs.`
|
||||
```
|
||||
dimension
|
||||
L= 5cm
|
||||
l= 2,5cm
|
||||
H= 0,9cm
|
||||
```
|
||||
|
||||
- bras 1
|
||||

|
||||
```
|
||||
dimension
|
||||
L= 16cm
|
||||
l= 4cm
|
||||
H= 1cm
|
||||
```
|
||||
|
||||
### On a fait des recherches sur les sites suivants pour la conception du bras et de la pince.
|
||||
- (https://cults3d.com/fr/mot-clefs/pince+robotique?srsltid=AfmBOooZES-gdmSo7IuyJx9b4YLv5vBiozO5lpjA8HrPHTfmVw3mWtIw)
|
||||
- (https://www.autodesk.com/community/gallery?featured=true&page=1)
|
||||
|
||||
### modification du cablage
|
||||

|
||||
`ajout d'un servo moteur de 360 degres pour la base du bras robot`
|
||||
|
||||
### modification des dimentions des pieces
|
||||
`on c'est rendu compte que les pieces ne s'emboite pas entre elle et n'avaient pas les bonnes dimentions`
|
||||
|
||||
- base du bras robot
|
||||
```
|
||||
nouvelle dimention
|
||||
D= 5cm
|
||||
H= 1cm
|
||||
```
|
||||
|
||||
- support de servo moteur base
|
||||
```
|
||||
nouvelle dimention
|
||||
L= 5cm
|
||||
l= 2cm
|
||||
H= 1cm
|
||||
et fixation a la base avec des vis M3 et des ecrouts
|
||||
```
|
||||
|
||||
- bras 1
|
||||
```
|
||||
nouvelle dimention
|
||||
L= 16cm
|
||||
l= 4cm
|
||||
H= 1cm
|
||||
```
|
||||
### on n'a fais un code pour test le bras robot qui a pour but de tester le deploiment du bras a rapport a une distance max fixe (ps: idee de Erika)
|
||||
|
||||
```
|
||||
from machine import Pin, PWM, UART
|
||||
import time
|
||||
|
||||
# UART liaison série
|
||||
uart = UART(1, baudrate=9600, tx=7, rx=6)
|
||||
|
||||
# Servos GPIO 4,5,6,7
|
||||
servo_base = PWM(Pin(4), freq=50)
|
||||
servo_epaule = PWM(Pin(5), freq=50)
|
||||
servo_coude = PWM(Pin(6), freq=50)
|
||||
servo_pince = PWM(Pin(7), freq=50)
|
||||
|
||||
MIN_US = 500
|
||||
MAX_US = 2500
|
||||
DISTANCE_MAX_CM = 15
|
||||
|
||||
def set_servo_angle(pwm, angle):
|
||||
if angle < 0: angle = 0
|
||||
if angle > 180: angle = 180
|
||||
us = MIN_US + (MAX_US - MIN_US) * angle / 180
|
||||
duty = int(us / 20000 * 1023)
|
||||
pwm.duty(duty)
|
||||
|
||||
def position_prete_ramassage():
|
||||
"""Position fixe : déployé à exactement 15cm max"""
|
||||
set_servo_angle(servo_base, 90) # droit devant
|
||||
set_servo_angle(servo_epaule, 75) # longueur bras = 15cm
|
||||
set_servo_angle(servo_coude, 115) # pointe sol
|
||||
set_servo_angle(servo_pince, 130) # grande ouverte
|
||||
time.sleep(0.5)
|
||||
uart.write("READY\n") # signal : "je suis en position"
|
||||
|
||||
def ramasser_maintenant():
|
||||
"""Pince seulement une fois en position"""
|
||||
set_servo_angle(servo_pince, 40) # fermer
|
||||
time.sleep(1)
|
||||
set_servo_angle(servo_pince, 130) # rouvrir (lâcher)
|
||||
time.sleep(0.5)
|
||||
|
||||
def position_repos():
|
||||
set_servo_angle(servo_base, 90)
|
||||
set_servo_angle(servo_epaule, 40)
|
||||
set_servo_angle(servo_coude, 90)
|
||||
set_servo_angle(servo_pince, 100)
|
||||
time.sleep(0.5)
|
||||
|
||||
# Démarrage
|
||||
print("Bras : mode distance fixe 15cm")
|
||||
buffer = b""
|
||||
position_repos()
|
||||
|
||||
while True:
|
||||
if uart.any():
|
||||
data = uart.read()
|
||||
if data:
|
||||
buffer += data
|
||||
while b"\n" in buffer:
|
||||
line, _, buffer = buffer.partition(b"\n")
|
||||
cmd = line.decode().strip()
|
||||
print("Reçu:", cmd)
|
||||
|
||||
if cmd.startswith("DIST:"):
|
||||
# Se déploie toujours à 15cm max, peu importe la distance
|
||||
print("Déploiement position 15cm")
|
||||
position_prete_ramassage()
|
||||
|
||||
elif cmd == "PICK_NOW":
|
||||
print("RAMASSAGE !")
|
||||
ramasser_maintenant()
|
||||
uart.write("DONE\n")
|
||||
position_repos()
|
||||
|
||||
time.sleep(0.05)
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user