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)