Viviana Baque Gutiérrez Lenin Gómez Romero

Slides:



Advertisements
Presentaciones similares
SERVOMOTORES.
Advertisements

TESINA DE SEMINARIO DE GRADUACION:. Para el desarrollo de este proyecto utilizaremos dos transceptores infrarrojos Pololu IR Beacon, uno de ellos deberá
PUMA TIMING “Un sistema completo” Por Guillermo Berisso.
Ingº Luis Alvarado Cáceres
Iniciación a la Robótica
Alarma ultra sónica (A.R.D)
Rommel Chang Suárez Jefferson Moreno Briones
MICROCONTROLADORES AVANZADOS
PROFESOR : Ing. Carlos Valdivieso
MICROCONTROLADORES AVANZADOS
Balancín de dos ruedas con controlador Pololu
ESCUELA POLITÉCNICA DEL EJÉRCITO
SISTEMA DE ROBOTICA DE LEGO. ¿Cómo funciona la computación básica? Entrada Salida El procesador ejecuta los comandos. La memoria guarda los programas.
Quinta Clase Patricio A. Navarrete Junio 3 de 2011.
Software Se conoce como software al equipamiento lógico o soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos.
Introducción al Software
Funciones en lenguaje C
Luis Brito Nelson Quizhpe. RS-232 EL objetivo general de este proyecto es obtener las coordenadas del objeto al cual esta instalado el acelerómetro,
ETAPA UNO Y DOS. UNO CUMPLIDA!!! Organización y Distribución de Tareas. Recopilación de información y herramientas necesarias para los diseños. Adquisición.
Anterior La tablilla principal controla todas las conexiones para los diferentes dispositivos de entrada y salida, es también la que tiene los chips para.
Descripción del movimiento
La Granja de Micro-Robots Por Andrés Prieto y Ricardo Gómez.
SEMINARIO DE GRADUACION
ENLACE RADIO BIDIRECCIONAL
DISEÑO E IMPLEMENTACION DE UN ROBOT SEGUIDOR DE LINEA CARGUERO
InfoPath Ventajas y Uso.
Secciones y Segmentos STARTUP
LEGO. LEGO MINDSTORMS Plataforma para el diseño y desarrollo de robots. Sigue la filosofia Lego () armar y construir todo tipo de objetos uniendo bloques.
Raúl Heiras Andazola Edgar A. Robles Reyes Luis Alonso Ramos Fdez Diseño de Robots Dr. Carlos F. Pfeiffer Octubre 22, 2003.
AUTORES: Casa Douglas Coque Danilo
CONVERTIDOR ANALÓGICO DIGITAL (ADC)
Arduino en la Educación
P ROYECTO DE G RADUACIÓN I MPLEMENTACIÓN DE UN S ISTEMA DE C OMUNICACIÓN POR MEDIO DE LA RED GSM EN UN P ROCESADOR E MBEBIDO C ONFIGURABLE NIOS II Integrantes:
MICROCONTROLADORES NOCIONES BÁSICAS. ¿QUÉ ES UN MICROCONTROLADOR? MICROCONTROLADOR = MICROPROCESADOR + MEMORIA + PERIFERICOS.
Integrantes: Christian Blanco Raúl Bejarano
Unidad VI Documentación
Integrantes: David Miguel Martínez Rodríguez Diego David Bósquez Granja.
Gerardo Villagómez G. Rodrigo Jurado E.. Objetivo del Proyecto  Comandar nuestro robot pololu 3π acompañado del KIT AVR Butterfly, de forma que se llegue.
GUI para Control Inalámbrico de Movimiento de un Robot ELO-329 Diseño y Programación Orientados a Objetos Integrantes: Patricio Alegre Pablo Escalante.
Robótica Inteligente L. Enrique Sucar Leonardo Romero Marco López ITESM Cuernavaca.
Controlador PID de temperatura utilizando la tarjeta de desarrollo AVR Butterfly Andrés Lecaro José González.
Materia de Graduación Microcontroladores Avanzados
Sistemas Basados en Conocimiento (Knowledge Based Systems) Lic. Mario G. Oloriz Agosto 2004.
Control de Tiempo Real estricto en un robot móvil basado en MaRTE OS
CURSO DE ROBÓTICA.  Consideraciones Mecánicas.  Mantención de los componentes de KIT Mindstorm NXT  Se debe entender como son los componentes.
INTRODUCCIÓN A ARDUINO
PROGRAMAS INFORMATICOS
 Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. Se creó para.
El entorno de código abierto Arduino hace fácil escribir código y cargarlo a la placa E/S. Funciona en Windows, Mac OSX y Linux. El entorno está escrito.
LEGO Mindstroms.
Maximino.  Historia de la robótica La historia de la robótica va unida a la construcción de "artefactos", que trataban de materializar el deseo humano.
Robots Lynxmotion Marco Antonio López Trinidad Laboratorio de Sistemas Inteligentes Tec de Monterrey Campus Cuernavaca.
Programación Básica con NQC Patricio A. Castillo 12/04/2008.
NOCIONES BÁSICAS COMPUTO II
SOFTWARE Jennifer Giselle De Diego Romero NL:9
Elaboración de algoritmos usando lógica de programación
ARDUINO EN LA EDUCACIÓN Lección 2do Parcial Informática Avanzada Xavier Barrionuevo Burbano.
Posgrado en Sistemas Computacionales Heurísticas de usabilidad MC Luz María Moreno Aguilar Noviembre 2009.
DETECTOR DE MINAS ANTI PERSONALES
CORPOCIDES Ing. Emilio Medina Baquero
RESUMEN: Softmicro de 8 bits Xilinx
UNIDAD I INTRODUCCION A LOS S.O.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
Sistemas Operativos Universidad Politécnica Territorial de Mérida
MEMORIA DINÁMICA.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
UNIVERSIDAD DE LAS FUERZAS ARMADAS-ESPE DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA DE NAVEGACIÓN POR VOZ PARA ROBOTS MOVILES CON RUEDAS (RMR) UTILIZANDO LA.
SENSORIZACION Y CONTROL DE ROBOTS MOVILES. INTEGRANTES DEL EQUIPO. LIC. ISIDRO LOPEZ RUIZ LIC. GUILLERMO MATUS GARCIA LIC. OLIVIA SANTOS REGALADO. 19 DE.
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
Robot Cañón Integrantes: Felipe Riquelme Mario Leverone Gonzalo Flores Universidad de Chile - FCFM Desarrollo de Software para Robots 2010 Grupo 9 - Robot.
Transcripción de la presentación:

Viviana Baque Gutiérrez Lenin Gómez Romero   ROBOT POLOLU PROGRAMADO PARA SEGUIR REFERENCIA MOVIL Y OBEDECER COMANDOS INALAMBRICOS   Viviana Baque Gutiérrez Lenin Gómez Romero

OBJETIVO GENERAL Programar el Robot Pololu 3pi para que siga una referencia móvil y obedezca comandos inalámbricos a través del AVR Butterfly.

OBJETIVOS ESPECIFICOS Configurar los comandos que serán enviados por medio del Butterfly, usando el joystick. Seleccionar los comandos de comunicación que sean necesarios para seguir el móvil. Como son Avanzar Retroceder Girar a la derecha Girar a la izquierda

Descripción del Proyecto Este proyecto tiene como función principal programar el robot pololu 3pi que seguirá una referencia móvil que será controlada mediante comandos inalámbricos, para esto se necesita un circuito receptor que recibirá los comandos que serán enviados a través del Butterfly que es el que hará las veces de transmisor. EL sistema de control del proyecto será diseñado para que funcionen con los micro-controladores ATMEGA 328 y el ATMEGA 169 usando la interfaz del AVR Studio 4 que es un software que ofrece dos tipos de compiladores que son: ATMEL AVR assembler para lenguaje assembler y AVR GCC para lenguaje C.

Aplicaciones Como el robot es controlado a través de Joystick comando inalámbrico cualquier persona puede enviarle instrucciones. Por lo cual, se puede diseñar un robot explorador de zonas urbanas, al cual se le ingresen coordenadas y el robot se moverá hacia ellas. La principal aplicación de los robots tiene lugar en la industria, donde se necesitan repetir tareas, seguir cierto recorrido donde las personas no pueden llegar y estos robots llegarían a realizar ese trabajo . Un robot está programado para realizar los mismos movimientos con una buena precisión, por lo que es perfecto para aplicaciones industriales. Aunque todos los campos de la industria son susceptibles de emplear diferentes tipos de robots para determinadas operaciones.

Proyectos similares Pololu 3pi seguidor de pared. Este proyecto demuestra una posible configuración donde dos sensores de distancia Sharp analógicos están conectados al mismo con un mínimo de soldadura. Los dos sensores de distancia permiten explorar una habitación siguiendo la pared y evitando los obstáculos que encuentra en el recorrido. Este trata de mantener una distancia prudencial de la pared si ve a su lado izquierdo un obstáculo, éste gira a la derecha. Como medida de seguridad adicional, cada 15 segundos, el robot trata de una copia de seguridad en caso de que sin saberlo se ha atascado mientras explora.

Robot TRIC TRAC radio controlado por joystick de play station 2 TRI-TRAC es un robot todo terreno con orugas que puede ser usado mediante radio control o mediante control autónomo. Debido a su oruga el robot puede trabajar tanto en interior como exterior.

Robot controlado por comando Wii de cámara inalámbrica Este proyecto está basado en Arduino. Posee una cámara inalámbrica con alcance de 30 metros montada sobre un sistema Pan&Tilt que es usado en mini cámaras en el que va montado un sonar de ultrasonidos y un láser en cruz. Su diseño permite girar hasta 360º para tener una visión periférica completa. Ahora mismo, el control se realiza con un mando nunchuk de wii, El Nunchuk es una expansión para el mando inalámbrico de Wii. Con el acelerómetro para el movimiento de las orugas, el joystick para el control del Pan&Tilt y los botones para seleccionar entre modos y activar el láser.

Requerimientos para el proyecto Este proyecto se lo puede dividir en 2 secciones: Software y Hardware.

Requerimientos para el programa Para realizar la aplicación que gestionará el pololu y el butterfly con los datos que serán enviados y recibidos a través de ellos usaremos el programa AVR studio 4 usando el lenguaje más acorde ya sea lenguaje ensamblador o c. Estos compiladores son los que nos ayudarán a entender el código base del robot Pololu 3pi y permitirá implementar una variedad al mismo.

Requerimientos para el proyecto Robot Pololu 3π El robot Pololu 3π es un robot el cual fue diseñado para ser un seguidor de línea y éste es capaz de resolver laberintos de forma autónoma. Posee una alimentación de 4 baterías AAA los cuales alimentan a los motores con 9.25 V, este robot es capaz de alcanzar velocidades de 100cm/s. A continuación se mencionarán las características del robot: Posee 4 sensores reflectantes QTR-RC Microcontrolador ATmega328P Un sensor de luz Un display 8 x 2 2 Motores Leds para marcar alimentación de 5v al microcontrolador y 9.25v para los motores.

Requerimientos para el proyecto

AVR Butterfly El kit de evaluación del AVR Butterfly está diseñado para demostrar los beneficios y características claves. Se trata de un solo módulo microprocesador soporte que puede ser utilizado en numerosas aplicaciones: Diseño de bajo poder. Controlador LCD. -Interfaces de comunicación. - UART, SPI, USI. - Selfprogramming / gestor de arranque, SPI, en paralelo, JTAG. - Temporizadores / Contadores. - Reloj en Tiempo Real (RTC). - Modulación de Ancho de Pulso (PWM).

Diseño del Proyecto Diagrama de Bloques El diagrama de bloques del sistema se encuentra establecido por la etapa del transmisor (Butterfly )y la etapa del receptor (Robot Pololu 3pi ).

Diagrama de Bloque del Transmisor

Código del transmisor //Declaración de constantes #define Centro 0 #define Arriba 1 #define Abajo 2 #define Izquierda 3 #define Derecha 4 #define Otros 5 //Libreias a usar #include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <avr/delay.h> #include <inttypes.h> //Librerias a usar #include <pololu/3pi.h> #include <pololu/orangutan.h> //Librerias a usar que no pertenecen al entorno #include "mydefs.h" #include "LCD_functions.h" #include "LCD_driver.h" #include "button.h" #include "usart.h" //Prototipo de funciones int Obtener_Boton(void); //Programa principal int main(void) { //Se habilita las interrupciones globales sei(); //Se muestra un mensaje a través del LCD PGM_P statetext = PSTR("AVR BUTTERFLY"); // Disable Analog Comparator (power save) ACSR = (1<<ACD); // Disable Digital input on PF0-2 (power save) DIDR0 = (7<<ADC0D); // Enable pullups PORTB = (15<<PB0); PORTE = (15<<PE4);

// Initialize pin change interrupt on joystick Button_Init(); // initialize the LCD LCD_Init(); // set Clock Prescaler Change Enable CLKPR = (1<<CLKPCE); // set prescaler = 8, Inter RC 8Mhz / 8 = 1Mhz CLKPR = (0<<CLKPS1) | (1<<CLKPS0); //Configuración del USART a 52= 9600 baudios USART_Init(52); if (statetext) { LCD_puts_f(statetext, 1); LCD_Colon(0); statetext = NULL; } //Lazo infinito while (1) { _delay_ms(50); // TIEMPO MINIMO DE RETARDO DEL HM-TR ANTES DE ENVIAR OTRO DATO if (statetext) LCD_puts_f(statetext, 1); LCD_Colon(0); statetext = NULL; } //Se espera a que sea presionado un botón input = Obtener_Boton(); //Se realiza una determinada acción según el botón presionado switch (input) case Centro: // PRESIONO EL BOTON CENTRO statetext = PSTR("CENTRO"); Usart_Tx('S'); break;

/* Función que retorna un valor entero correspondiente al botón presionado en el JoyStick */ int Obtener_Boton(void) { int Temp1; //PB4-->O Centro //PB6-->A Arriba //PB7-->B Abajo //PE2-->C Izquierda //PE3-->D Derecha //Centro Temp1=(PINB) & 0b00010000; if(Temp1==0b00000000) { sei(); return Centro; } //Arriba Temp1=PINB & 0b01000000; return Arriba; case Derecha: // PRESIONO EL BOTON DERECHA statetext = PSTR("DERECHA"); Usart_Tx('R'); break; case Izquierda: // PRESIONO EL BOTON IZQUIERDA statetext = PSTR("IZQUIERDA"); Usart_Tx('L'); case Arriba: // PRESIONO EL BOTON ARRIBA statetext = PSTR("ARRIBA"); Usart_Tx('U'); case Abajo: // PRESIONO EL BOTON ABAJO statetext = PSTR("ABAJO"); Usart_Tx('D'); default: } return 0;

//Abajo Temp1=PINB & 0b10000000; if(Temp1==0b00000000) { sei(); return Abajo; } //Izquierda Temp1=PINE & 0b00000100; return Izquierda; //Derecha Temp1=PINE & 0b00001000; return Derecha; return Otros;

Diagrama de Bloque del Receptor

Código del receptor //Prototipo de procedimientos void USART_Init( unsigned int ); unsigned char ReceiveByte (void); //Parametros iniciales configuracion 3pi void inicializar(){ //registro puerto b DDRB = 0x08; // set PORTD for output PORTB = 0x00; // set LEDs off //registro puerto c DDRC &= ~(1<< PORTC5); PORTC &= ~(1<< PORTC5); //registro puerto d DDRD = 0xFE; PORTD |= PIND_MASK; //Configuración de USART a 9600 baudios USART_Init(130); /Declaración de constantes #define F_CPU 20000000UL #define PIND_MASK ((1<<PIND0)|(1<<PIND1)) //Librerias a usar #include <pololu/3pi.h> #include <avr/pgmspace.h> #include <pololu/orangutan.h> //Texto para la lcd const char welcome_line1[] PROGMEM = " Pololu"; const char welcome_line2[] PROGMEM = "3\xf7 Robot"; const char name_line1[] PROGMEM = "Wall"; const char name_line2[] PROGMEM = "Follower"; //Tiempo de refresco de la pantalla const int display_interval_ms = 100; #define MS_ELAPSED_IS(n) (get_ms() % n == 0) #define TIME_TO_DISPLAY (MS_ELAPSED_IS(display_interval_ms))

//Mostramos por pantalla "pololu 3pi robot" print_from_program_space(welcome_line1); lcd_goto_xy(0,1); print_from_program_space(welcome_line2); delay_ms(1000); //Mostramos por pantalla "wall follower" clear(); print_from_program_space(name_line1); print_from_program_space(name_line2); //Muestra el voltaje de la bateria hasta que se presiona el boton b while(!button_is_pressed(BUTTON_B)) { print_long(read_battery_millivolts()); print("mV"); print("Press B"); delay_ms(100); } //Se mantendra hasta que se halla dejado de presionar el boton b wait_for_button_release(BUTTON_B); clear(); print("Go!"); } //Programa principal int main () { //Configuracion del 3pi inicializar(); //Declaración de variable int i=0, j=0; // valores que se obtienen del sensor de proximidad // cerca da un valor superior a 350 // lejos da un valor menor a 10 const int set_point_f = 200; // distancia maxima const int set_point_l = 300; // distancia minima

//Lazo infinito en espera de caracter recibido while(1) { int front_proximity = analog_read(5); // lectura del sensor derecho int left_proximity = analog_read(7); // lectura del sensor izquierdo if(UCSR0A & (1 << RXC0)){ // pregunto si a llegado un dato por rx i = UDR0; } // rutina para obedecer las ordenes del butterfly, cuando se hallan presionado los botones siguientes // como prioridad 1 if(i == 'U') // ARRIBA clear(); print("FORWARD"); set_motors(100,100); }else if (i == 'D' ) //ATRÁS { clear(); print("BACK"); set_motors(-50,-50); }else if (i == 'L') //IZQUIERDA { clear(); print("LEFT"); set_motors(-50,50); }else if (i == 'R') //DERECHA { clear(); print("RIGHT"); set_motors(50, -50); }else if(i == 'S'){ //ALTO print("STOP"); set_motors(0,0); i=0;

//rutina para el uso del sensor sharp de proximidad, de acuerdo a las siguientes condiciones como prioriodad }else if( (front_proximity > set_point_l) && (left_proximity > set_point_l)){ // MUY CERCA set_motors(-75, -75); // retrocedo }else if( (front_proximity > set_point_f) && (left_proximity > set_point_f)){ // MUY LEJOS set_motors(100, 100); // me aproximo }else if(front_proximity > set_point_f){ // ESTA A LA DERECHA set_motors(75, -75); // roto a la derecha }else if(left_proximity > set_point_l){ // ESTA A LA IZQUIERDA set_motors(-75, 75); // roto a la izquierda }else if( (front_proximity > 10) && (left_proximity > 10)){ // no encuentra el objeto del rango deseado set_motors( 0, 0); // detengo el vehiculo } delay_ms(50); } } //Implementación de procedimiento /* Se configuran los registros para la transmisión por USART de manera que el dato recibido indica el BAUDRATE al cual se va a trabajar */ void USART_Init(unsigned int baudrate) { // Set baud rate UBRR0H = (unsigned char)(baudrate>>8); UBRR0L = (unsigned char)baudrate; //UCSR0A = (0<<U2X0); // Enable receiver and transmitter UCSR0B = (1<<RXEN0)|(1<<TXEN0); // Async. mode, 8N1 UCSR0C = (1<<USBS0)|(3<<UCSZ00); }

Simulación Y Pruebas del Proyecto Pruebas de simulación del Butterfly, que se encarga de transmitir los datos mediante RF

CONCLUSIONES Al realizar el proyecto nos hemos familiarizado con las herramientas que ofrece el AVR studio 4, para programar microcontroladores de la familia ATMEL conociendo las beneficios y limitaciones del robot pololu 3pi y el Butterfly. El Robot Pololu es un dispositivo muy útil en el campo de la Robótica ya que este puede realizar recorridos evitando obstáculos siguiendo a un móvil o no y puede ser controlado inalámbricamente o via remota. El Kit AVR Butterfly es una poderosa herramienta de aprendizaje, es práctico, eficaz y muy amigable; que con el desarrollo del proyecto se va descubriendo progresivamente las características del microcontrolador ATmega169.

RECOMENDACIONES Es necesario revisar las hojas de especificaciones antes de trabajar con los dispositivos y en el caso de el Butterfly y el Robot Pololu revisar su guía de usuario ya que ahí dan las recomendaciones para trabajar con ellos. Es recomendable que las baterías para que el pololu trabaje este bien cargadas ya que este puede no permitir grabar bien el programa o más aun que el programador se queme. Fijar bien las frecuencias de trabajo para que el buttetfly como para el pololu pueda transmitir.

Gracias