Sensores de Linea 2
-
Upload
ronal-lora-ver -
Category
Documents
-
view
214 -
download
0
Transcript of Sensores de Linea 2
Que tal muchachos este sistema, como comentó JPARDO parece sistema de un velocista (CONFIGURACIÓN TIPO TRICICLO) pero... no lo es , tampoco es la clásica CONFIGURACIÓN DIFERENCIAL , esta una variante la cual consta de no usar rueda loca sino una esfera omni-direccional para evitar el problema conocido de cabeceo de la configuración diferencial (mantener de modo horizontal al robot con respecto a la línea); luego de solucionar ese primer problema tocó agregar el alerón trasero como han visto en la foto, pues al acelerar en linea recta mi robot tendía a tomar vuelo se levantaba de la superficie (no pesa ni siquiera 500gr), quería pasar por ave ... así que mas que por detalle de acondicionamiento de señal ( tengo otro método de acondicionamiento por software) esa tarjeta me sirve para cortar aire. En la católica no use ni el 80% de su velocidad, pero hace poco logré hacer otras técnicas de rastreo para usar el 88% de velocidad y conseguí unas aceleraciones y recuperación de derrapes que ni un velocista logra alcanzar pero como estoy fuera de competencia pueden quedarse tranquilos... ese robot ya fue heredado a las nuevas generaciones (ahora de que ellos logren hacer eso esta un poco verde ).
Otra diferencia resaltaste es que hay modelos similares sin alerón y con rueda o 2 ruedas locas delanteras que son versiones normales de configuración diferencial. Cambie radicalmente el modelo de mi Robo3001 el 2009 debido a que muchos habían clonado o mejorado casi a par de mi versión anterior, así que tuve que evolucionar a otro modelo.
=============================================================================================================
Bien luego de esta pequeña reseña paso a explicar mis 3 técnicas mas básicas de rastreo:
RAS_DERECHA1, RAS_IZQUIERDA1, RAS_EXTERNO1
Las llamo con terminación 1 puesto de que al cabo de esta explicación en adelante explicaré las técnicas de 2do Orden... donde realizo cambios en el centro de giro del robot con respecto a la línea (tal cual hace un carro GP2, F1 en la pista de competencias) para así anticipar curvas y cortar camino solamente moviendo el cuerpo del robot (dentro de reglas).
Tal cual puse la disposición de mis sensores post arriba, mis sub-rutinas quedan así: Código: [Descargar] [Ocultar] [Seleccionar]RAS_IZQUIERDA1: IF SI2=1 AND SI1=0 THEN GOSUB DLT ENDIF IF SI2=0 THEN GOSUB IZD ENDIF IF SI2=1 AND SI1=1 THEN GOSUB DRH ENDIF RETURN RAS_DERECHA1: IF SD1=0 AND SD2=1 THEN GOSUB DLT ENDIF IF SD2=0 THEN GOSUB DRH ENDIF IF SD1=1 AND SD2=1 THEN GOSUB IZD ENDIF RETURN RAS_EXTERNO1: IF SI2=1 AND SD2=1 THEN
GOSUB DLT ENDIF IF SI2=1 AND SD2=0 THEN GOSUB DRH ENDIF IF SI2=0 AND SD2=1 THEN GOSUB IZD ENDIF RETURN
Gráficamente:
Al analizar en desventajas: Al tener los SI4 o SD4 como sensores de avanzada (así les
llamo) me permite anticipar un cambio brusco de camino, es ahí cuando empiezo a mezclar las técnicas básicas de rastreo de la siguiente forma:
EJEMPLO 1: Código: [Descargar] [Ocultar] [Seleccionar]D_I: REPEAT gosub ras_izquierda1 UNTIL (SI4=0) REPEAT gosub ras_derecha1 UNTIL (SD4=0) goto D_I
EJEMPLO 2: Código: [Descargar] [Ocultar] [Seleccionar]PARTE1: REPEAT gosub ras_izquierda1 UNTIL (SI4=0) REPEAT gosub ras_externo1 UNTIL (SD4=0) goto parte2
EJEMPLO 3: Código: [Descargar] [Ocultar] [Seleccionar]PARTE1: REPEAT gosub ras_izquierda1 UNTIL (SI4=0) REPEAT gosub ras_derecha1 UNTIL (SD4=0) PARTE2: REPEAT gosub ras_externo1 UNTIL (SI4=0 AND SD4=0) GOSUB ALT : END
FINALMENTE CUADRANDO TODO QUEDARÍA ASÍ (sin control de PWM)
Código: [Descargar] [Ocultar] [Seleccionar]'=============================================================================== DEFINE OSC 20 'CRYSTAL A 20Mhz '=============================================================================== DEFINE LOADER_USED 1 'Uso de Bootloader '=============================================================================== TRISA=255 : TRISE=7 'puertos: A & E como entrada ADCON1=7 'Todos los canales a modo digital '=============================================================================== SYMBOL SD4=PORTA.0 SYMBOL SD3=PORTA.1 SYMBOL SD2=PORTA.2 SYMBOL SD1=PORTA.3
SYMBOL SI1=PORTA.5 SYMBOL SI2=PORTE.0 SYMBOL SI3=PORTE.1 SYMBOL SI4=PORTE.2 '=============================================================================== LB VAR PORTD.6 'Declaraciones de LEDs LY VAR PORTD.7 TRISD.6=0 TRISD.7=0 '=============================================================================== IN1 VAR PORTD.0 'MOTOR IZQUIERDA SEÑAL 1 IN2 VAR PORTD.1 'MOTOR IZQUIERDA SEÑAL 2 EN1 VAR PORTC.2 'ENABLE MOTOR IZD CON PWM (CCP1) IN3 VAR PORTC.4 'MOTOR DERECHA SEÑAL 1 IN4 VAR PORTC.5 'MOTOR DERECHA SEÑAL 2 EN2 VAR PORTC.1 'ENABLE MOTOR DRH CON PWM (CCP2) TRISD.0=0 TRISD.1=0 TRISC.2=0 TRISC.4=0 TRISC.5=0 TRISC.1=0 '=============================================================================== SWD VAR PORTC.0 'Declaraciones de Switch SWI VAR PORTD.5 TRISC.0=1 TRISD.5=1 '=============================================================================== X VAR BYTE X=0
MAIN: GOSUB ALT REPEAT LY=~LY: LB=~LB PAUSE 100 UNTIL (swD=1) LY=0 LB=0 D_I: REPEAT gosub ras_izquierda1 UNTIL (SI4=0) REPEAT gosub ras_derecha1 UNTIL (SD4=0) goto D_I '=============================================================================== 'SUBRUTINAS DE MOVIMIENTOS SECUNDARIOS '=============================================================================== RAS_IZQUIERDA1: IF SI2=1 AND SI1=0 THEN GOSUB DLT ENDIF IF SI2=0 THEN GOSUB IZD ENDIF IF SI2=1 AND SI1=1 THEN GOSUB DRH ENDIF RETURN
RAS_DERECHA1: IF SD1=0 AND SD2=1 THEN GOSUB DLT ENDIF IF SD2=0 THEN GOSUB DRH ENDIF IF SD1=1 AND SD2=1 THEN GOSUB IZD ENDIF RETURN RAS_EXTERNO1: IF SI2=1 AND SD2=1 THEN GOSUB DLT ENDIF IF SI2=1 AND SD2=0 THEN GOSUB DRH ENDIF IF SI2=0 AND SD2=1 THEN GOSUB IZD ENDIF RETURN '=============================================================================== 'SUBRUTINAS DE MOVIMIENTOS PRIMARIOS '=============================================================================== DLT: 'ADELANTE IN1=1:IN2=0 IN3=0:IN4=1 RETURN DRH: 'DERECHA IN1=1:IN2=0 IN3=1:IN4=0 RETURN IZD: 'IZQUIERDA IN1=0:IN2=1 IN3=0:IN4=1 RETURN ALT: 'ALTO IN1=1:IN2=0:EN1=0 IN3=1:IN4=0:EN2=0 RETURN
Bien poco a poco la cosa se hace mas exquisita, espero haber podido plasmar de alguna forma cual es la base en todos los programas que utilizaba para mi robot, estas técnicas y formas de rastreo las hice aprox. el año 2007