Robótica Inteligente Dr. Enrique Sucar Instituto Tecnológico y de Estudios Superiores de Monterrey, Campus Cuernavaca Robótica Inteligente Dr. Enrique Sucar Discontinuidades y Bifurcaciones B&D Equipo de desarrollo: Jorge A. Mateos Cesar Verdugo Edgar Nophal 372498 372856 373006 Cuernavaca Mor., a 28 de Marzo de 2003. 1 Robótica Inteligente Dr. Enrique Sucar Introducción El proyecto robot que realizaremos corresponderá a la categoría de Bifurcaciones y Discontinuidades, donde es necesario que se encuentren contingencias, se mantenga la dirección a pesar de la discontinuidad, seleccionar el camino cuando haya bifurcaciones y se tiene que evitar soluciones no convencionales o comerciales. Además se debe de realizar el recorrido. Dado tres Bifurcaciones: 1. 2. 3. 4. Ir a la derecha en la primera y segunda. Ir a la izquierda en la tercera. Frenar después de trayectoria cumplida. Leer línea blanca de 1.5 cm de ancho excepto en las bifurcaciones. También, para la creación del Robot se explicó la manera que operará de tipo Ackerman-steered y el modelo que se está siguiendo para su creación. Diseño mecánico La primera parte que se identificó fueron la tarjeta a utilizar que se usó la SV203 que ya se explicado su funcionamiento y manera para controlar en archivos anteriores, los servo motores tipo RC para movimiento, y los sensores que ahora ya se colocaron en el robot que tienen como especificación CNY70 y por supuesto seguimos utilizando el modelo triciclo como se indican en las imágenes que representan la construcción física real y fue creado en Autocad 2000. Figura 1. Vista frontal del robot 2 Robótica Inteligente Dr. Enrique Sucar En esta imagen se alcanza a apreciar la dirección seguirá el robot, así como la línea de sensores que irán colocados aproximadamente en el parte trasera de la llanta de manejo esto es la parte azul frontal, se aprecia de color rojo los servos a los que se unen las llantas, también se observa la cavidad donde está colocada la tarjeta controladora SV203 y la parte superior donde se coloca la palm. Figura 2. Vista lateral del robot En esta imagen se observa lo antes mencionado y además la parte donde irá el interruptor para la batería. Figura 3. Vista trasera del robot Aquí se muestra la cavidad donde se colocarán las baterías así como también la parte donde está colocada la palm. Sensores Respecto a nuestras investigaciones anteriores, identificamos diversos tipos de sensores, ahora se detallará los que se están empleando que son el modelo CNY70. 3 Robótica Inteligente Dr. Enrique Sucar El CNY70 tiene una construcción compacta donde la fuente de luz emisora y el detector están alineados en la misma dirección para censar la presencia de un objeto por medio de la reflexión IR desde el objeto. La longitud de onda de operación es de 950 nm. El detector consiste en un fototransistor. Aplicación - Es un mecanismo opto-electrónico de escaneo y switcheo i.e., sensado indexado, escaneo de disco codificado. (Encoder optoelectrónico ensamblado para el censo de transmisión ). Características - Construcción compacta de centro a centro espaceada de 0.1’. - No requiere instalación - Alta señal de salida - Coeficiente bajo de temperatura - Detector provisto con filtro óptico - Current Transfer Ratio (CTR) típico de 5% 4 Robótica Inteligente Dr. Enrique Sucar 5 Robótica Inteligente Dr. Enrique Sucar Figura 3. Circuito de prueba Algoritmos de Control El control utilizado fue el proporcional, este control dio buenos resultados ya que los sensores daban varios valores por lo que nos dimos cuenta que entre mas grandes eran los valores significaba que el sensor estaba mas adentro de la línea blanca, es decir, el error era mas grande, de esta forma decidimos utilizar este tipo control ya que la potencia que se les daba a los servos era proporcional al error o al desvío. El ajuste que da el control proporcional para seguir la línea sólo lo aplicamos al haber un mínimo porcentaje de error (Ejemplo: 40%), ya que si utilizábamos el control proporcional sin establecer un mínimo porcentaje de error, a veces el robot corregía o se ajustaba a la línea cuando no tenía que hacerlo, de esta forma hicimos el algoritmo más robusto o propenso a posibles errores de los sensores. Algoritmo de control utilizado: Aquí se calcula el minimo porcentaje de error para cada sensor error_minimo1 = (Minimo_blanco1*100)/Maximo_blanco1; error_minimo2 = (Minimo_blanco2*100)/Maximo_blanco2; //ALGORITMO DE CONTROL PARA VUELTAS A LA DERECHA //minimo_negro corresponde al mínimo valor del conjunto de valores en que el sensor detecta negro, de esta forma hay más tolerancia de error. if (sensor1<minimo_negro1) //si el sensor1 lee blanco { Drive(0,0,0); error = (sensor1*100)/Maximo_blanco1; //se calcula error o el desvío ocurrido 6 Robótica Inteligente Dr. Enrique Sucar if(error>=error_minimo1) //Si el error ocurrido es mayor al error mínimo entonces s procede a ajustar. { error = error/10; //Se divide entre 10 el error para sumarlo a la potencia del servo error = pgain*error; //Se multiplica por alguna ganancia proporcional. power = 130-error; //Se utiliza el error en la potencia del motor, el valor 130 da una potencia al motor de 0, valores menores de 130 es una vuelta a la derecha y mayores de 130 es una vuelta a la izquierda. while(sensor1<minimo_negro1) { Drive(power,power,power); //el robot da vuelta para ajustarse a la línea con el poder dado por el control proporcional mientras siga detectando blanco. sensor1 = Sensor(1); sensor2 = Sensor(2); Display3(sensor1); Display4(sensor2); if(sensor2<minimo_blanco2) { bifurca=1; } }//fin while } //fin IF //last_direction=2; sensor1 = Sensor(1); sensor2 = Sensor(2); Display3(sensor1); Display4(sensor2); //Lo siguiente se implemento con el fin de que el robot desacelere en las curvas y acelere en las líneas rectas, esto se hizo para que el robot no se saliera de las curvas. cont_izquierda=0; if(cont_derecha>=2) { vel_s2 = 128; vel_s3 = 132; } 7 Robótica Inteligente Dr. Enrique Sucar if(cont_derecha==0) { vel_s2 = 122; vel_s3 = 138; } cont_derecha++; } El algoritmo de control para vueltas a la izquierda es lo mismo solo que se le suma la potencia 130 en lugar de restarle y entra a la condición de dar vuelta por medio del sensor2. ALGORITMO DE CONTROL PARA VUELTAS A LA IZQUIERDA if(sensor2<minimo_negro2)//si el sensor 2 lee blanco { Drive(0,0,0); error = (sensor2*100)/Maximo_blanco2; if(error>=error_minimo2) { error = error/10; error = pgain2*error; power = 130+error; while(sensor2<minimo_negro2) { Drive(power,power,power); sensor1 = Sensor(1); sensor2 = Sensor(2); Display3(sensor1); Display4(sensor2); if(sensor1<minimo_blanco1) { bifurca=1; } } } last_direction=1; sensor1 = Sensor(1); sensor2 = Sensor(2); Display3(sensor1); Display4(sensor2); cont_derecha=0; if(cont_izquierda>=2) { 8 Robótica Inteligente Dr. Enrique Sucar vel_s2 = 128; vel_s3 = 132; } if(cont_izquierda==0) { vel_s2 = 126; vel_s3 = 134; } cont_izquierda++; } Posteriormente realizaremos pruebas con un mayor número de sensores, pero por el momento se empleo lo anterior. Arquitectura de software/ programación Seguiremos con la arquitectura híbrida jerárquica, consideramos en desarrollarla porque es la más completa y puede realizar diferentes funciones aprovechando las ventajas de las arquitecturas que los integran. Tendremos como en ella se muestra diferentes capas: Capa de habilidades: Mecanismo de control reactivo (controlador) Capa de secuenciación: Mecanismo de ejecución de plan (secuenciador) Capa de planeación: Mecanismo deliberativo (deliberador) También se creara dado las instrucciones de Carnegie Mellon la siguiente secuencia de programación: - Definición de variables Definición de Funciones Main Funciones de Robot Algoritmo de función Algoritmo Drive & Spin Continuación de trayectoria Seguimiento de línea Respuesta de acuerdo a lectura de sensores Funciones de Hardware 9 Robótica Inteligente Dr. Enrique Sucar Resultados y análisis Resultados del algoritmo de control Al implementar este algoritmo de control hubo buenos resultados ya que el robot se ajustó bien a cualquier tipo de línea y ya no se salió de las curvas aunque estuvieran muy cerradas, algo que ayudó fue el hecho de desacelerar en las curvas, con esto se le daba mas tiempo de ajustarse mejor a la línea, además de que hizo las vueltas mucho más rápido. En general, necesitamos realizar más pruebas y revisar el funcionamiento para que en la siguiente entrega nos respaldemos con diferentes pruebas realizadas. Referencias Libros de Robótica indicados por el profesor Sensors for Mobile Robots, Theory and application/ H.R. Everett. Cap. 3 pp.75 – 104 Mobile Robots, Inspiration to Implementation/ Joseph L. Jones. Cap 5 pp. 113 – 134 http://www.plazaearth.com/usr/gasperi/light.htm http://www.cs.bham.ac.uk/resources/courses/robotics/halloffame/2001 /team3/ equip.html http://www.cs.bham.ac.uk/resources/courses/robotics/halloffame /2001/team3/equip.html#Infrared%20sensors CNY70.pdf 10