QTR 8RC Detección de línea blanca

4

Estoy usando una matriz de sensores qtr8-rc en una línea que sigue al robot. Cuando lo uso en una línea negra en una superficie blanca, funciona, pero cuando intento usarlo en una superficie negra con una línea blanca no puedo obtuve los resultados correctos, extraje el siguiente código de mi robot para probarlo por separado, pero no importa lo que haga, no puedo hacer que detecte una línea blanca en una superficie negra ...



include "PololuQTRSensors.h"

PololuQTRSensorsRC qtr;

void setup(){ Serial.begin(9600); qtr.init((unsigned char[]) {2,3,4,5,6,7,9}, 7);

int i; for (i = 0; i < 250; i++){ // make the calibration take about 5 seconds qtr.calibrate(QTR_EMITTERS_ON); delay(20); } }

void loop(){

unsigned int val[7]; qtr.readCalibrated(val); int line = qtr.readLine(val,QTR_EMITTERS_ON,true);

Serial.print(line); Serial.print(" R< "); Serial.print(val[0]); Serial.print(" "); Serial.print(val[1]); Serial.print(" "); Serial.print(val[2]); Serial.print(" "); Serial.print(val[3]); Serial.print(" "); Serial.print(val[4]); Serial.print(" "); Serial.print(val[5]); Serial.print(" "); Serial.print(val[6]); Serial.print(" "); Serial.print(val[7]); Serial.print(" "); Serial.println(" >L ");

}

Algunas muestras de lectura que estoy obteniendo,


3200 R< 553 473 397 113 120 533 304 104  >L
3432 R< 567 514 474 113 120 393 82 104  >L
3494 R< 572 625 544 94 100 487 69 104  >L
3418 R< 543 421 506 88 93 305 64 104  >L
3407 R< 529 403 487 69 73 290 50 104  >L
3403 R< 524 397 480 62 67 284 46 104  >L
3506 R< 538 561 474 37 40 264 27 104  >L
3503 R< 538 543 455 18 20 248 13 104  >L
3519 R< 558 567 474 44 46 269 32 104  >L
3537 R< 577 590 500 69 73 290 50 104  >L
3545 R< 577 614 532 94 100 310 69 104  >L
3466 R< 611 497 397 94 100 310 69 104  >L
3534 R< 572 584 500 62 67 284 46 104  >L
3534 R< 572 584 500 62 67 284 46 104  >L

Todos los números están demasiado cerca, por lo que readLine no devuelve una posición correcta. Uno de los pines de mi arduino no funciona, así que me salté conectando uno de los sensores (sensor 7)

    
pregunta Hamza Yerlikaya

1 respuesta

3

No he usado los sensores QTR, pero noté que la principal diferencia entre su código y los ejemplos de Descubrí que flotar por ahí es que estás llamando readCalibrated (val) antes de readLine y los ejemplos no. Busqué en la fuente para la biblioteca y lea las llamadas readLine en la primera pareja De líneas de todos modos. ¿Tal vez el valor de precarga es con los valores de calibración que están causando el problema?

Además, ¿está pasando el sensor sobre las superficies blanca y negra durante la calibración? Un truco podría ser lograr que el robot gire lentamente en el lugar durante la calibración, mientras está sentado en la línea, permitiendo que el sensor vea tanto la línea como el área circundante.

    
respondido por el thisismyrobot

Lea otras preguntas en las etiquetas