[[cursos:introrobotica:2010-2:grupo01:index|voltar]] ===== Trabalho Prático 2 ===== {{:cursos:introrobotica:2010-2:grupo01:caolho_1_.png|}} Link para o relatório do trabalho 2 : {{:cursos:introrobotica:2010-2:grupo01:tprob_2.pdf|}} === Objetivo ==== O Objetivo do primeiro trabalho prático foi a familiarização dos alunos com as principais características do ambientes de programação Interactive C, por meio da utilização de sensores, avaliando montagem e processamento dos sinais medidos. === Construção do robô === Nome do ROBO: CEGUETA VX-2 Neste trabalho, utilizamos a estrutura do primeiro robô adicionando apenas as melhorias que foram sugeridas pelo professor, como apoiar duplamente o eixo dos motores e reforçar sua estrutura. Foi definido que para realizar as tarefas propostas, utilizariamos três sensores LDR e um LED. Dois sensores LDR foram colocados a frente do robô para que ele identifique as bordas da linha preta e possa corrigir o traçado. O outro sensor LDR foi colocado no lado de trás do robô junto de um LED para que ele possa distinguir as cores. O LED foi necessário para reduzir a interferência da iluminação ambiente na tarefa de identificar as cores. {{:cursos:introrobotica:2010-2:grupo01:tp2_1.jpg|}} (Os motores com o eixo duplamente apoiado) {{:cursos:introrobotica:2010-2:grupo01:tp2_2.jpg|}} (Os dois sensores LDR que foram colocados para identificar a faixa preta) {{:cursos:introrobotica:2010-2:grupo01:tp2_4.jpg|}} (Adição do terceiro sensor para identificar cores) {{:cursos:introrobotica:2010-2:grupo01:tp2_3.jpg|}} (O robô em seus estágios finais) === Programação da HandyBoard === Como já havíamos desenvolvido uma interface interativa para a calibração do primeiro trabalho, não precisamos de desenvolver novamente a interface, apenas a adaptamos para as funções do segundo trabalho. Desenvolvemos inicialmente o trecho do código para fazer as medições pedidas nas tarefas, e utilizamos a biblioteca encontrada no site da disciplina e o programa hyperterminal para capturar os dados armazenados na handyboard. Após todas as medidas tomadas, desenvolvemos o trecho do código que trata de fazer o robô seguir a linha preta. Na implementação, consideramos que o robô sempre iniciaria já alinhado com a faixa preta, por isso a correção que ele faz é bem suave. Como descobrimos durante a execução do trabalho, caso o robô não inicie alinhado com a faixa preta, ele não consegue se corrigir a tempo e ele sai da linha preta. O último método implementado é o método de reconhecimento de cores. Para esta função inicialmente deve ser calibrar as cores no robô, após colocar um bloco colorido em frente ao sensor LDR iluminado pelo LED, o programa faz uma média durante 5 segundos, para encontrar o valor médio deste bloco. Após todos os blocos calibrados o programa tenta encontrar a cor continuamente, ele avalia a cor do bloco no momento e compara com a média de cores definido anteriormente para informar a cor do bloco atual. === Tarefas === Os resultados iniciais mostram que uma iluminação controlada diminui bastante a variação do sinal, mas ele continua inconstante. Os testes de distância, mostram que quanto mais distante, menor o valor só sinal recebido, e quanto mais distante maior a interferência gerada pela iluminação ambiente. {{:cursos:introrobotica:2010-2:grupo01:1e.jpg|}} (Bloco de lego com iluminação ambiente a 3mm) {{:cursos:introrobotica:2010-2:grupo01:1f.jpg|}} (Bloco de lego com iluminação constante a 3mm) {{:cursos:introrobotica:2010-2:grupo01:1g6.jpg|}} (Bloco de lego a 6 cm de distancia) {{:cursos:introrobotica:2010-2:grupo01:1g10.jpg|}} (Bloco de lego a 10 cm de distancia) {{:cursos:introrobotica:2010-2:grupo01:1g16.jpg|}} (Bloco de lego a 16 cm de distancia) {{:cursos:introrobotica:2010-2:grupo01:1g20.jpg|}} (Bloco de lego a 20 cm de distancia) {{:cursos:introrobotica:2010-2:grupo01:1g24.jpg|}} (Bloco de lego a 24 cm de distancia) {{:cursos:introrobotica:2010-2:grupo01:1g32.jpg|}} (Bloco de lego a 32 cm de distancia) === Resultados Obtidos === O método desenvolvido para seguir a faixa preta, é capaz de corrigir a posição do robô caso ele já esteja inicialmente alinhado com a faixa preta. Caso o robô não esteja alinhado inicialmente ele não é capaz de se corrigir a tempo e os dois sensores encontram o chão branco, e neste caso os motores param. O método desenvolvido para reconhecer cores é competente caso os blocos sejam calibrados bem próximos do sensor (1cm). E para que o robô identifique as cores corretamente eles devem estar na mesma distância em que foi realizada a calibração. === Conclusão === A conclusão que chegamos é que trabalhar com sensores é mais trabalhoso do que aparentava inicialmente. As condições da iluminação ambiente influenciam muito nos resultados, por isso para se obter os melhores resultados deve se reduzir a influência da iluminação ambiente o máximo possível. Utilizando um LED amarelo, conseguimos reduzir a influência, mas para um reconhecimento de cores mais competente deveremos utilizar mais LEDs de cores diferentes. E para evitar com que sombras atrapalhem ao robô distinguir a faixa preta do chão branco é interessante também adicionar um LED voltado para o chão.