Download construcion de un brazo robótico e interface de control
Document related concepts
no text concepts found
Transcript
CONSTRUCION DE UN BRAZO ROBÓTICO E INTERFACE DE CONTROL PARA UN SISTEMA EMPOTRADO BASADO EN EL SISTEMA OPERATIVO RTEMS AUTOR: ROBERTO RICA GUTIÉRREZ TUTOR: JUAN ZAMORANO FLORES D.A.T.S.I. Facultad de Informática Universidad Politécnica de Madrid MARZO, 2002 Objetivos • Definir el entorno de desarrollo • Construcción del hardware • Diseño y programación del software de control • Aplicación de demostración • Conclusiones y líneas futuras Sistema Operativo RTEMS • • • • • Real Time Executive for • Multiprocesor Systems = Sistema operativo de tiempo real para sistemas multiprocesador. Se puede utilizar con los leguajes C/POSIX o Ada. Disponible para una amplia variedad de familias de procesadores. Prácticamente todo el sistema está escrito en lenguaje de alto nivel => fácil de adaptar a nuevas familias de procesadores Herramientas abiertas: GNAT, GCC, GDB... Características principales: – Capacidad multitarea. – Sistemas multiprocesador homogeneos y heterogeneos. – Planificación basada en prioridades y expulsión. – Comunicación y sincronización de hilos. – Gestor de interrupciones. – Gestión de memoria dinámica. – Alto nivel de configuración por el usuario. – Cumple con el estándar POSIX. Entorno de desarrollo • Sistema empotrado = Sistema informático integrado en el • • • • aparato que controla. Sistema de tiempo real = Sistema en el que para que una aplicación sea correcta, debe entregar sus resultados dentro de un intervalo de tiempo. Lenguaje de programación C + Estándar POSIX Sistema de desarrollo cruzado = La creación del programa ejecutable no se realiza en el mismo sistema que luego la ejecutará. Sistema Operativo de Tiempo Real RTEMS Hardware • Host: PC con GNU Linux y Windows 95 • Target: PC con tarjeta de E/S digitales • Brazo: Kit de brazo robótico Fischertechnik • Interfaz entre Brazo y Target: tarjeta propia de control de motores y alimentación. HOST • Ordenador de propósito general PII400Mhz, 128 Mb RAM, 4Gb HD. • Windows 95 para documentación y conexiones a Internet. • LINUX para alojar el sistema de desarrollo cruzado. Host Linux RTEMS Herramientas GNU ----------------Windows Office Acceso a internet ... Target P. Potencia • E/S Digitales • Entradas TTL. • Soportado por RTEMS • Salidas de potencia. • Fuente de alimentación. Sistema Físico • Brazo robótico TARGET • Sistema informático integrado en el aparato final al que controla. • Ejecuta el programa desarrollado en el Host. PC486: Efi332: • Fácil de encontrar • Muy pequeño tamaño • Conocimiento anterior • Motorola 68332 • Fácil de ampliar • Unidad de control PWM BRAZO I Puntos a tener en cuenta: • Grados de libertad que tiene. • Posibilidades de ampliación y mejora. • Potencia y velocidad de sus motores. • Relación entre precio y prestaciones. BRAZO II • • • • • • • • Kit de la empresa Fischertechnik 4 grados de libertad. Motores de 9VDC. Construcción modular a base de piezas que encajan unas en otras. Motores de baja potencia. Piezas de plástico. 8 sensores de movimiento (interruptores). 4 posibles brazos con este kit. Interface entre Target y Brazo I • Placa de entrada / salida digital. • Nivel de señales TTL. • 8 puertos de 8 pines cada uno programables como entrada o salida. • El primer puerto se usa para el control de los 4 motores. • El segundo puerto se utiliza para la entrada de la información de los sensores. Interface entre Target y Brazo II • Placa de potencia. • Traduce las señales TTL enviadas por el target en señales con potencia suficiente para activar los motores. • Basada en el L293B. • Fuente de alimentación de 9VDC integrada. • Posibilidad de fuente de alimentación externa. Software de control • Interface de programación • Diseño del sistema de control – Arquitectura – Hilos y procedimientos • Hilo Movimiento • Hilo Velocidad Inteface de programación hardware Puertos: • • • 0x180 Control de motores (salida). 0x181 Lectura del estado de los sensores (entrada). 0x182 Lectura del estado de los sensores extra (entrada). Palabra puerto 0x180: PPAAFFGG donde: PP = dos bits motor Pinza AA = dos bits motor Altura FF = dos bits motor Fondo GG = dos bits motor Giro Palabra puerto 0x181: PpFcpPaFcaPfFcfPgFcg donde: Pp = bit paso pinza. Fcp = bit fin carrera pinza. Pa = bit paso altura. Fca = bit fin carrera pinza. Pf = bit paso fondo. Fcf = bit fin carrera fondo. Pg = bit paso giro. Fcg = bit fin carrera giro. Interface de programación del brazo • Objetivo: Abstraer los detalles de la implementación, como puertos, valores hexadecimales, concurrencia de movimientos... • Métodos utilizados para conseguir el objetivo: – Constantes: elimina la necesidad de tratar con nºs hexadecimales. – Procedimientos: • InicializarBrazo(): Inicializa el sistema para el control del brazo. • Lugar (int sentido): Devuelve la posición en grado de libertad indicado. • leerInt (int puerto, int numero): Da el estado del Interruptor indicado. – Hilos: • Movimiento (*param_mov): Hilo que hace que el brazo se situe en un punto de uno de sus grados de libertad. • EsperaInt (*espera_int): Hilo que no finaliza hasta que el interruptor indicado en la estructura pasada como parámetro es pulsado. Arquitectura del Sistema de Control APLICACIÓN DE USUARIO INTERFACE BRAZO INTERFACE POSIX RTEMS HARDWARE DEL TARGET Hilos y procedimientos Crear 4 IniciarBrazo InicializaVariables Posicion Velocidad Variables Globales Movimiento FinCarr Motor EstMovimiento EsperaInt LeerInt Lugar Aplicación de demostración • Descripción del problema: Variante del juego de las torres de Hanoi • Diseño de la solución usando el interface del brazo creado. Descripción del problema • Se tienen tres zonas contiguas. • En una de las zonas se tiene una pila de tres cajas de igual tamaño y distinto color. • Se debe mover la columna de cajas de la primera zona a la última respetando las siguientes reglas: – En cada jugada solo se puede mover una caja de una zona a otra. – No se puede situar una caja encima de otra si en la configuración inicial del problema la que se quiere poner encima no estaba en una posición más elevada que la otra. Diseño de la solución • Se aplica un algoritmo de “divide y venceras”. – Caso base: mover una caja de una zona a otra Ordenar al brazo llevar a cabo dicho movimiento. – Si no se está en caso base Mover x piezas de la zona “a” a la zona “c”, dividir el problema de la siguiente forma: • Mover x-1 piezas de “a” a “b”. • Mover 1 pieza de “a” a “c”. • Mover x-1 piezas de “b” a “c”. Árbol de solución para 3 cajas 1 2 3 Hanoi (3,1,3) Hanoi (2,1,2) Hanoi (2,2,3) Hanoi (1,1,3) Hanoi (1,3,2) Mover (1,3) 1 2 3 Mover (1,2) 1 2 3 Mover (3,2) 1 2 3 Hanoi (1,2,1) Mover (1,3) 1 2 3 Mover (2,1) 1 2 3 Hanoi (1,1,3) Mover (2,3) 1 2 3 Mover (1,3) 1 2 3 Brazo solucionando el problema Conclusiones • Se ha construido un sistema que: – permite la docencia e investigación sobre sistemas de tiempo real empotrados – muy versátil y fácilmente ampliable. – es de fácil construcción y reducido precio. • Se ha adquirido experiencia en: – – – – – – RTEMS. Estándar POSIX. Programación en C. Robótica y sistemas empotrados. Tratamiento de señales eléctricas controladas desde un ordenador. Control de movimiento y velocidad de motores con sistemas informáticos. Líneas Futuras • Ampliación con otros kits de Fischertechnik para crear sistemas más complejos y que tengan que cooperar y permitan docencia e investigación con sistemas de tiempo real distribuidos. • Cambio de la tarjeta de I/O por una con posibilidad de interrupciones. • Cambio de los motores por motores paso a paso. • Mejora del hardware para detectar sobrecargas. Dudas y preguntas FIN