Diferència entre revisions de la pàgina «Robot versió 6»

De binefa.com
Salta a la navegació Salta a la cerca
m
Línia 65: Línia 65:
  
 
=== Activació dels actuadors en funció dels sensors ===
 
=== Activació dels actuadors en funció dels sensors ===
 +
==== Exemple ====
 +
Aquesta és la implementació d'un exemple en el qual si
 +
 +
==== Exercicis ====
 +
1) Feu que el robot vagi cap endavant fins que detecti un obstacle (per exemple una paret) a 10 cm de distància. Caldrà posar una histèresi per a evitar una oscil·lació. Si la distància és superior a 12 cm el robot haurà d'avançar, entre 10cm i 12 cm haurà d'estar aturat i si detecta menys de 10cm haurà d'anar cap enrere.
 +
 +
2) Implementeu un AGV (''automated Guided Vehicle''') capaç de seguir una línia negra (cinta aïllant al terra), sense revolts molt pronunciats.
 +
 +
3) Implementeu un AGV (''automated Guided Vehicle''') capaç de seguir una línia negra (cinta aïllant al terra) amb revolts molt pronunciats.
 +
 +
4) Implementeu un AGV (''automated Guided Vehicle''') fent servir un PID.

Revisió del 10:44, 26 set 2019

Robot

Aquesta és la sisena versió del robot educatiu dissenyat conjuntament per Edco i els professors Carles Olivé i Jordi Binefa de l'Escola del Clot - Jesuïtes El Clot.

Aquest robot està pensat per a funcionar amb un Arduino Nano o una Raspberry Pi Zero W.

La darrera versió dels codis per a fer-lo funcionar són al dipòsit d'Arduino i al dipòsit de la Raspberry Pi.

Robot v6

Connexions

Connexions del Robot v6

Esborrany de l'esquema electrònic

Control des del NodeRED i MQTT

NodeRED

Interacció del maquinari amb el NodeRED

Aquest flux del NodeRED

Python

Codis d'interacció en Python

Interacció amb el maquinari

Inici i aturada del procés al rerefons

Per a fer la comunicació entre el maquinari i el NodeRED cal executar:

/home/pi/code/robot/robot_01.py

Altrament, també es pot executar des dels nodes del NodeRED:

Interacció del maquinari amb el NodeRED

Anomenem l'execució del codi com a procesUnic:

bash -c "exec -a procesUnic /usr/bin/python3 /home/pi/code/robot/robot_01.py"

I per a matar el procés pel nom procesUnic:

pkill -f procesUnic

robot_01.py és l'encarregat de comunicar el maquinari i el NodeRED. Per tant, quan no està en marxa no hi ha comunicació entre el maquinari i el NodeRED.

Recepció de les dades dels sensors

Objecte JSON amb les dades del sensor:

JsonSensors01.png

us: distància en centímetres del sensor d'ultrasons.

bL i bR: Sensors infrarojos (IR) darrere esquerre (back left) i darrere dret (back right). L'estat W és la detecció d'un color blanc (white) quan rebota el llum i l'estat B és la detecció d'una absorció de llum, normalment la detecció del color negre (black).

bFL, bCL, bCC, bCR i bFR: Sensors infarojos (IR) frontals (far left, center left, center, center right i far right). L'estat W és la detecció d'un color blanc (white) quan rebota el llum i l'estat B és la detecció d'una absorció de llum, normalment la detecció del color negre (black).

button: El botó entre els sensors ultarsònics i la Raspberry Pi. L'estat N és de no premut (not pressed) i P és premut (pressed).


Objecte JSON en format de cadena de caràcters:

JsonSensors02.png

Transmissió de dades als actuadors

Es fa mitjançant un JSON amb els camps left i right que controlen les rodes de la dreta i les de l'esquerra. Els valors corresponen al cicle de treball (duty cicle) del sistema de modulació per amplada de pols (PWM: Pulse Width Modulation). Els valors entre -255 i 0 corresponen al 100% i 0% del cicle de treball amb els motors en marxa enrere, i els valors entre 0 i 255 corresponen al 0% i 100% del cicle de treball amb els motors en marxa endavant.

ActuadorsRobot.png

En aquest exemple els motors de l'esquerra del robot van enrere amb un cicle de treball del 50% (el 100% és 255) i els motors de la dreta van endavant amb un cicle de treball del 50%:

{"left":-127,"right":127}

Activació dels actuadors en funció dels sensors

Exemple

Aquesta és la implementació d'un exemple en el qual si

Exercicis

1) Feu que el robot vagi cap endavant fins que detecti un obstacle (per exemple una paret) a 10 cm de distància. Caldrà posar una histèresi per a evitar una oscil·lació. Si la distància és superior a 12 cm el robot haurà d'avançar, entre 10cm i 12 cm haurà d'estar aturat i si detecta menys de 10cm haurà d'anar cap enrere.

2) Implementeu un AGV (automated Guided Vehicle') capaç de seguir una línia negra (cinta aïllant al terra), sense revolts molt pronunciats.

3) Implementeu un AGV (automated Guided Vehicle') capaç de seguir una línia negra (cinta aïllant al terra) amb revolts molt pronunciats.

4) Implementeu un AGV (automated Guided Vehicle') fent servir un PID.