Sensores de Linea 2

10
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

Transcript of Sensores de Linea 2

Page 1: 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 

Page 2: Sensores de Linea 2

        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: 

 

Page 5: Sensores de Linea 2

 

 

Al analizar en desventajas: Al tener los SI4 o SD4 como sensores de avanzada    (así les

Page 6: Sensores de Linea 2

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 

Page 7: Sensores de Linea 2

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 

Page 8: Sensores de Linea 2

       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