Articulo proyecto final robot de rescate ROBHELL

Transcription

Articulo proyecto final robot de rescate ROBHELL
1
ROBOT DE RESCATE “ROBHELL”
RESUMEN
En este documento se muestran los resultados obtenidos al realizar el diseño
y construcción de un robot de rescate; mediante un mecanismo de oruga
para su desplazamiento, y sensado mediante sensores ultrasónicos. También
se presenta un sistema de adquisición de imágenes en tiempo real mediante
el uso de una cámara web, comunicación a una computadora mediante el
módulo RS232 de Bluetooth y el manejo mediante control remoto del robot
con una aplicación diseñada para Android.
PALABRAS CLAVES: Puente H, mecanismo de oruga, sensor
ultrasónico, caja de engranajes, motor DC.
Bertin López Robles
200919478
Estudiante Ingeniería Mecatrónica
Benemérita Universidad Autónoma de Puebla
lopez.200919478@gmail.com
Leonardo Daniel Bravo Juárez
200913890
Estudiante Ingeniería Mecatrónica
Benemérita Universidad Autónoma de Puebla
torretto_96@hotmail.com
Jesús Romero Montalvo
200911523
Estudiante Ingeniería Mecatrónica
Benemérita Universidad Autónoma de Puebla
romero.200911523@gmail.com
1. INTRODUCCION
El ser humano con el apoyo de la tecnología ha intentado
desarrollar robots que sean capaces de ayudar a los
equipos de rescate humano en una catástrofe. Que pueda,
por ejemplo, mover los escombros en una ciudad arrasada
tras un terremoto y que lo haga con una gran autonomía,
que reconozca los entornos, que camine y suba escaleras
por sí mismo.
Robots dedicados a labores de inspección, exploración y
rescate en entornos difíciles de actuar. Incluimos los tres
medios: terrestre, acuático y aéreo. Algunos de estos
robots tienen también distintas aplicaciones militares,
desde la observación y rescate hasta el ataque portando
armas. Incluimos también aquí robots para la inspección
de tanques, tuberías y conductos (robots de limpieza),
robots contraincendios y robots para la eliminación
de minas antipersonales.
2. DESARROLLO
Preparación del proyecto
El robot se desplazara utilizando un mecanismo
de oruga, en su estructura llevara sensores y una cámara
web que le ayudaran a moverse y a reconocer su entorno,
lo cual le permitirá llegar a lugares donde las personas no
pueden llegar y así cumplir funciones de exploración y
rescate.
La base del robot es un mecanismo de oruga fabricado a
base de plástico que hace uso de dos motores DC y una
caja de engranes para el desplazamiento. La programación
de los motores y sensores ultrasónicos se realizó en el
entorno de programación de Arduino
Material
Arduino
Es por este motivo que se decidió crear un robot que sea
capaz de desarrollar este tipo de actividades.
Arduino (figura 1) es una plataforma de desarrollo de
computación física (physical computing) de código
abierto, basada en una placa con un sencillo
microcontrolador y un entorno de desarrollo para crear
software (programas) para la placa.
2
Los proyectos con Arduino pueden ser autónomos o
comunicarse con un programa (software) que se ejecute
en tu ordenador.
El hardware consiste en una placa con un
microcontrolador Atmel AVR y puertos de entrada/salida.
Por otro lado el software consiste en un entorno de
desarrollo que implementa el lenguaje de programación
Processing/Wiring y el cargador de arranque que es
ejecutado en la placa.
permiten un desplazamiento estable aun en terrenos
irregulares. La mayoría de las orugas forman parte de un
cinturón flexible con un conjunto de eslabones rígidos
unidos unos a otros fuertemente.
Este tipo de tracción de oruga es muy utilizado en robots
que se diseñan para desplazamiento todo terreno o con
estructuras muy pesadas debido a que el área que pisan
los platos o segmentos es amplia y el peso total del
aparato se divide en el área total, las diferentes formas
que puede tener los cinturones que se pueden formar
resuelven muchísimos mecanismos que las ruedas
comunes no lo hacen como subir escaleras, pasar
obstáculos, permitir mecanismos que levanten la base, etc.
Figura 1. Placa Arduino.
Transistor
El transistor (figura 2) es dispositivo electrónico en estado
sólido, cuyo principio de funcionamiento se basa en la
Física de los Semiconductores, este dispositivo
electrónico semiconductor es utilizado para producir una
señal de salida en respuesta a otra señal de entrada.
Cumple funciones de amplificador, oscilador, conmutador
o rectificador. Este Dispositivo semiconductor que
permite el control y la regulación de una corriente grande
mediante una señal muy pequeña.
Figura 2. Transistores
Mecanismo de oruga
Un mecanismo de oruga (figura 3) es un dispositivo de
transporte utilizado principalmente en vehículos pesados,
como tanques y tractores, u otro tipo de vehículos.
Consiste en un conjunto de eslabones modulares que
Figura 3. Mecanismo de oruga
Camara web
Una cámara web o cámara de red1 (en inglés: webcam)
es una pequeña cámara digital conectada a una
computadora la cual puede capturar imágenes y
transmitirlas a través de Internet, ya sea a una página web
o a otra u otras computadoras de forma privada.
Las cámaras web necesitan una computadora para
transmitir las imágenes. Sin embargo, existen otras
cámaras autónomas que tan sólo necesitan un punto de
acceso a la red informática, bien sea ethernet o
inalámbrico. Para diferenciarlas las cámaras web se las
denomina cámaras de red
En astronomía amateur las cámaras web de cierta calidad
pueden ser utilizadas para registrar tomas planetarias,
lunares y hasta hacer algunos estudios astrométricos de
estrellas binarias. Ciertas modificaciones pueden lograr
exposiciones prolongadas que permiten obtener imágenes
de objetos tenues de cielo profundo como galaxias,
nebulosas, etc.
3
Caja de engranes
Figura 4. Cámara web.
Sensor Ultrasónico
Los sensores ultrasónicos (figura 5) tienen como función
principal la detección de objetos a través de la emisión y
reflexión de ondas acústicas. Funcionan emitiendo un
pulso ultrasónico contra el objeto a sensar, y al detectar el
pulso reflejado, se para un contador de tiempo que inicio
su conteo al emitir el pulso. Este tiempo es referido a
distancia y de acuerdo con los parámetros elegidos de
respuesta con ello manda una señal eléctrica digital o
analógica.




El HC-SR04 es un sensor ultrasónico de bajo
costo que no sólo puede detectar si un objeto se
presenta, como un sensor PIR (Passive Infrared
Sensor), sino que también puede sentir y
transmitir la distancia al objeto.
Tienen dos transductores, básicamente, un
altavoz y un micrófono.
Ofrece una excelente detección sin contacto
(remoto) con elevada precisión y lecturas
estables en un formato fácil de usar.
El funcionamiento no se ve afectado por la luz
solar o el material negro como telémetros
ópticos.
Una caja de engranajes (figura 6) utiliza un beneficio
mecánico para aumentar la fuerza de torsión de salida y
reducir la RPM. El eje del motor se sustenta dentro de la
caja de engranajes y a través de una serie de engranajes
internos que proporcionan la fuerza de torsión y la
conversión de la velocidad. Nuestras cajas de engranajes
están disponibles en una variedad de medidas y relaciones
de cambio para cubrir una amplia gama de requisitos de
torsión. El diseño básico es una caja de engranajes con
ruedas de engranajes en metal, plástico y combinaciones
de los dos materiales. Una característica particular es la
disponibilidad de ruedas libres y embragues de
deslizamiento.
Figura 6. Caja de engranajes.
Motor DC
El motor de corriente continua (figura 7) es una máquina
que convierte la energía eléctrica en mecánica,
provocando un movimiento rotatorio, gracias a la acción
del campo magnético.
Una máquina de corriente continua (generador o motor)
se compone principalmente de dos partes. El estator da
soporte mecánico al aparato y contiene los devanados
principales de la máquina, conocidos también con el
nombre de polos, que pueden ser de imanes permanentes
o devanados con hilo de cobre sobre núcleo de hierro. El
rotor es generalmente de forma cilíndrica, también
devanado y con núcleo, alimentado con corriente directa
mediante escobillas fijas.
Figura 5. Sensor Ultrasónico HC-DR04.
Algunas aplicaciones especiales de estos motores son los
motores lineales, cuando ejercen tracción sobre un riel, o
bien los motores de imanes permanentes. Los motores de
corriente continua (CC) también se utilizan en la
4
construcción de servomotores y motores paso a paso.
Además existen motores de DC sin escobillas.
Es posible controlar la velocidad y el par de estos motores
utilizando técnicas de control de motores DC.
Imágenes del Proyecto
A continuación se presentan las imágenes de la
construcción del prototipo:
Figura 1.1
Figura 7. Motor DC.
Puente H
Un Puente H o Puente en H (figura 8) es un circuito
electrónico que permite a un motor eléctrico DC girar en
ambos sentidos, avance y retroceso. Son ampliamente
usados en robótica y como convertidores de potencia. Los
puentes H están disponibles como circuitos integrados,
pero también pueden construirse a partir de componentes
discretos.
Como se muestra en la figura 1.1 se construyó la
estructura que servirá como base de nuestro robot, dicha
estructura se acopló sobre el mecanismo de oruga.
Lo más habitual en este tipo de circuitos es emplear
interruptores de estado sólido (como Transistores), puesto
que sus tiempos de vida y frecuencias de conmutación son
mucho más altas.
Figura 1.2
Circuito con el montaje del Puente H para el control de
los motores.
Figura 8. Puente H.
5
Figura 1.3 Circuito puente H
Tarjeta Arduino MEGA para control de motores y sensor
ultrasónico, el circuito montado en la protoboard es para
verificar que el sensor está funcionando correctamente.
Figura 1.6 Luces frontales controladas mediante
fotorresistencias
Montaje de nuestro Robot de Rescate “ROBHELL” con
todos los componentes instalados, así como la cámara
para la visión en tiempo real
Figura 1.4 Tarjeta Arduino MEGA.
Figura 1.7 Prototipo del robot de rescate terminado
Circuito para controlar el encendido y apagado de las
luces frontales, mediante el uso de fotoresistencias.
Código Arduino para control de motores y sensores
#include <Ultrasonic.h> //incluimos la libreria ultrasonic
Figura 1.5 Circuito fotorresistencias.
//(Trig PIN,Echo PIN)
Ultrasonic ultrasonic(9,10,3000); //Configuracion del
ultrasonic que indica que el pin 9
//es Trig, el pin 10 es Echo. Con el
valor 6000 obtenemos
//un rango máximo de 105cm.
long int lectura;
//Variable global lectura.
#define DISTANCIA_RETROCESO 20
//Definición
de constante.
#define DISTANCIA_LIMITE 80
//Definición de
constante.
//Arduino PWM Speed Control:
int R1 = 5; //pin de enable motor 1
6
int M1 = 4; //pin de direccion motor 1
int R2 = 0; //pin de enable motor 2
int M2 = 1; //pin de direccion motor 2
digitalWrite(R2,LOW);
}
}
void setup()
{
pinMode(M1, OUTPUT); //Configuramos el pin como
salida.
pinMode(R1, OUTPUT);
pinMode(R2, OUTPUT);
pinMode(M2, OUTPUT);
pinMode(8, OUTPUT);
// VCC del HC-SR04
conectado al pin 8
pinMode(11, OUTPUT);
// GND del HC-SR04
conectado al pin 11
digitalWrite(8, HIGH); // VCC +5V mode
digitalWrite(11, LOW); // GND mode
}
Código MATLAB para la adquisición de imágenes en
tiempo real.
close all;clear all;clc;
% Primero se captura un stream de video usando
videoinput, con argumento de winvideo, numero de
dispositivo y formato de la cámara, si no sabes usa la
función imaqtool para averiguarlo es YUY o RGB
vid=videoinput('winvideo',1,'YUY2_160x120');
%640x480 160x120
void loop(){
% Se configura las opciones de adquisición de video
int tolerancia=0;
//Declaramos una variable local.
delay(100);
//Cada 100 milisegundos
lectura = ultrasonic.Ranging(CM); //leemos la distancia
que proporciona el sensor.
if(lectura<=DISTANCIA_RETROCESO){
//Si la
distancia es menor que el umbral de retroceso...
//Retroceder
tolerancia=0;
//reseteamos la variable
tolerancia.
digitalWrite(M1,LOW);
//dirección hacia
atrás.
digitalWrite(R1,LOW);
//pwm al motor 1.
digitalWrite(M2,LOW);
digitalWrite(R2,HIGH);
}else if(lectura >= DISTANCIA_LIMITE){ //Si la
distancia es mayor que el rango que proporciona el
sensor...
if(tolerancia>5){
//Si es mayor que 5...
//Retroceder
digitalWrite(M1,LOW);
//dirección hacia
atrás.
digitalWrite(R1,LOW);
//pwm al motor 1.
digitalWrite(M2,LOW);
digitalWrite(R2,HIGH);
}
tolerancia++;
//incrementamos la
variable.
}else{
//Sino, entonces...
//Avanzar
tolerancia=0;
//reseteamos la variable
tolerancia.
digitalWrite(M1,HIGH);
//dirección hacia
adelante.
digitalWrite(R1,LOW);
//pwm al motor 1.
digitalWrite(M2,HIGH);
set(vid, 'FramesPerTrigger', Inf);
set(vid, 'ReturnedColorspace', 'rgb')
vid.FrameGrabInterval = 10;
%framegrabinterval significa que tomará cada 5 frame del
stream de video adquirida con start(vid) se activa la
adquisición, pero todavía se toma la primera foto
start(vid)
% creamos un bucle que puede ser while always o while
true en este caso después de 100 frames adquiridos se
salga del bucle para evitar colgadas
while(vid.FramesAcquired<=100)
% se toma una snapshot del stream y se la almacena en
data para trabajar más fácil
data = getsnapshot(vid);
% ahora vamos a reconocer el color rojo en tiempo real
tenemos que extraer el color rojo de la imagen en escala
de grises de la imagen adquirida en data
diff_im = imsubtract(data(:,:,1), rgb2gray(data));
%imsubstract sirve para sacar algún valor constante de
una imagen, usamos como argumento el array de data y la
función rgb2gray de data se usa medfilt2 para filtrar la
señal del ruido
diff_im = medfilt2(diff_im, [3 3]);
% Convertir la imagen en escala de grises a una imagen
binaria
diff_im = im2bw(diff_im,0.18);
7
% para determinar el tamaño a reconocer se usa
bwareopen para descartar imagen de rojo de menos de
300 pixels
diff_im = bwareaopen(diff_im,300);
obtener imágenes en tiempo real, además de la
comunicación vía bluetooth y su manejo a control remoto.
Se agrega el cronograma de actividades en el que se
establecieron los tiempos de realización de las diferentes
actividades.
% Etiquetamos los elementos conectados en la imagen
bw = bwlabel(diff_im, 8);
% Ahora hacemos el análisis del "objeto" detectado (que
solo son pixeles rojos) agrupados de más de 300,
configuramos la región etiquetada
stats = regionprops(bw, 'BoundingBox', 'Centroid');
% mostramos la imagen
imshow(data)
hold on
%este es un bucle para encerrar el objeto rojo en un
rectángulo y una cruz en el centroide
for object = 1:length(stats)
bb = stats(object).BoundingBox;
bc = stats(object).Centroid;
rectangle('Position',bb,'EdgeColor','r','LineWidth',2)
plot(bc(1),bc(2), '-m+')
a=text(bc(1)+15,bc(2), strcat('X: ', num2str(round(bc(1))),
' Y: ', num2str(round(bc(2)))));
set(a, 'FontName', 'Arial', 'FontWeight', 'bold', 'FontSize',
12, 'Color', 'yellow');
end
hold off
end
% aquí terminan los 2 bucles, detenemos la captura
stop(vid);
%FLUSHDATA remueve la imagen del motor de
adquisición y la almacena en el buffer flushdata(vid);
% borramos todo
clear all
3. CONCLUSIÓN
Nuestro robot podrá realizar funciones de recate en zonas
de difícil acceso, además de poder desplazarse fácilmente
sobre terrenos abruptos. Las principales ventajas que
ofrece es que mediante el uso de la cámara web se podrá
4. AGRADECIMIENTOS
Al profesor Jaime Cid Monjaraz por los conocimientos
impartidos durante el curso de Control Digital y
Aplicaciones, sin los cuales no hubiéramos sido capaces
de desarrollar nuestro proyecto.
REFERENCIAS
[1] K. Ogata. Ingeniería de Control Moderna (PrenticeHall, Tercera Edición, 1998.
[2] B.C. Kuo. Sistemas de Control Automático (Prentice
Hall Hispanoamericana S.A)