LusoRobótica - Robótica em Português
Robótica => Projectos de robótica => Projectos em desenvolvimento => Tópico iniciado por: rkixa em 06 de Fevereiro de 2012, 18:39
-
Boas,
Depois de umas brincadeiras com o arduino estou a pensar começar o meu primeiro robot, que será um robot seguidor de linha e como a criação de um robot já é um passo mais difícil gostaria que me ajudassem um pouco neste projecto.
O material a utilizar vai ser o seguinte:
- Tamiya 70097 Twin-Motor Gearbox Kit (tenho)
- Ponte H l293d (tenho)
- Bateria (tenho)
- Tamiya 70098 Universal Plate Set
- Tamiya 70100 Track and Wheel Set
- Pololu QTR-8RC Reflectance Sensor Array
Já tenho os motores ligados à ponte e a funcionar.
O que precisava nesta fase e com alguma urgência pois o meu tempo livre está-se a acabar era que me indicassem uma loja que tenha em stock todo o material que tenho em falta e que me orientassem alguma leitura sobre o funcionamento do QTR-8RC com o arduino para me preparar enquanto não o tenho em minha posse.
Agradeço desde já toda a ajuda que puderem dar.
Cumps,
rkixa
-
Sobre o QTR-8RC nada melhor como a página da Pololu sobre o mesmo, que até tem uma biblioteca para Arduino.
-
Sobre o QTR-8RC nada melhor como a página da Pololu sobre o mesmo, que até tem uma biblioteca para Arduino.
Já estive a ler sobre o sensor e é fácil de implementar recorrendo à biblioteca que falaste.
Agora queria só que me dessem uma linha de pensamento (não quero código) de como programar o robot para seguir uma linha sabendo que já tenho as funções de andar para trás e para a frente e para virar.
Já agora se souberes uma loja online que tenha todo o material que tenho em falta em stock agradecia bastante.
Peço desculpa tanta pergunta mas sou mesmo iniciante em electrónica/robótica, no que toca a programação estou à vontade falho é nesse ponto.
-
Talvez a inMotion tenha isso, as lagartas talvez tenham, e o QTR-8RC.
A programação, o melhor é começares com uma folha de papel e pensar o que tu terias de fazer se tivesses de seguir uma linha.
Algo do género:
Ler QTR:
Se linha estiver num dos dois sensores do meio ou até mesmo nos dois, depende da largura da linha, continuar em frente.
Se linha aparecer á esquerda, virar á direita
Se linha aparecer á direita, virar á esquerda
Se não tiver linha parar.
O QTR-8RC retorna os valores de uma maneira meio estranha, do que me recordo, mas podes usar esses valores para determinar quanto tens de virar á esquerda ou á direita, pois não fazes logo uma curva a 90º, provavelmente o que te vai oferecer o movimento mais fluido será um loop de controlo PID, que terá como set point o centro da linha, como input o valor do QTR, limitado entre 0 e 255 para aplicar pwm aos motores e mais um bocadinho de código para meter os valores na mesma escala para bater tudo certo, mas isso podes deixar para a versão 2.
Uma outra boa fonte de inspiração é como sempre a internet, pesquisa um pouco pelo google por line follower Arduino, ou visita o Lets Make Robots.
-
Muito obrigado pela ajuda ;)
Mandei mail à inmotion eles vão fazer uma encomenda de material à Polulu e já terão o stock para a semana e logo que tiver o material começarei com os testes, se surgir algum problema que não consiga utrapassar, pois não gosto de estar a perguntar sem tentar, voltarei aqui aos gurus.
-
Engracado, a tua lista de material é basicamente o que utilizei no meu projecto :)
Se quiseres da uma vista de olhos neste topico: http://lusorobotica.com/index.php?topic=2566.0 (http://lusorobotica.com/index.php?topic=2566.0) no fim tens o codigo para seguir linhas com o QTR-8RC e PID Control.
Abraço.
-
Engracado, a tua lista de material é basicamente o que utilizei no meu projecto :)
Se quiseres da uma vista de olhos neste topico: http://lusorobotica.com/index.php?topic=2566.0 (http://lusorobotica.com/index.php?topic=2566.0) no fim tens o codigo para seguir linhas com o QTR-8RC e PID Control.
Abraço.
Obrigado irei dar uma vista de olhos mas passo o código à frente porque não quero spoilers xD
-
Boas,
Já recebi o meterial em falta!!
Estou agora a testar o QTR-8RC mas estou com alguns problemas, já o liguei, confirmei que está a funcionar com a camera do telemóvel porém não estou a conseguir ler quaisquer valores.
Estou a usar o exemplo da biblioteca da polulu.
#include <PololuQTRSensors.h>
#define NUM_SENSORS 2
#define TIMEOUT 2500
#define EMITTER_PIN 12
PololuQTRSensorsRC qtrrc((unsigned char[]) {2, 3}, NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
void setup()
{
delay(500);
int i;
pinMode(13, OUTPUT);
digitalWrite(13, HIGH); // turn on LED to indicate we are in calibration mode
for (i = 0; i < 400; i++) // make the calibration take about 10 seconds
{
qtrrc.calibrate(); // reads all sensors 10 times at 2500 us per read (i.e. ~25 ms per call)
}
digitalWrite(13, LOW); // turn off LED to indicate we are through with calibration
// print the calibration minimum values measured when emitters were on
Serial.begin(9600);
for (i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMinimumOn[i]);
Serial.print(' ');
}
Serial.println();
// print the calibration maximum values measured when emitters were on
for (i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMaximumOn[i]);
Serial.print(' ');
}
Serial.println();
Serial.println();
delay(1000);
}
void loop()
{
unsigned int position = qtrrc.readLine(sensorValues);
unsigned char i;
for (i = 0; i < NUM_SENSORS; i++)
{
Serial.print(sensorValues[i] * 10 / 1001);
Serial.print(' ');
}
Serial.print(" ");
Serial.println(position);
delay(250);
}
Serial Monitor:
2500 2500
2500 2500
0 0 0
0 0 0
0 0 0
0 0 0
...
Alguém meconsegue ajudar e dizer o porquê disto?
-
Continuo com o mesmo problema e não vejo maneira de resolver conseguem ajudar-me por favor??