====== Trabalho Prático 2 ====== ===== Controle de trajetória e programação multi-tarefas ===== Data de apresentacao: 29/09/09 01/10/2009 ===== Objetivos ===== * Avaliação experimental dos erros de atuação * Desenvolvimento de controle simples para o robô * Programação de tarefas concorrentes ===== Material para consulta ===== * {{:cursos:introrobotica:2007-2:hbmanual.pdf|The Handy Board Technical Reference}} * Diversos links na página do curso. ===== Instruções ===== - Registre no site suas idéias, metodologias utilizadas na realização dos experimentos. - O trabalho desenvolvido deve ser mostrado em funcionamento na data marcada para a apresentação e todo grupo deve estar presente e ser capaz de responder perguntas. - O relatório deve ser entregue para o monitor do curso via email e postado na página do grupo até a data de apresentação. O relatório deve conter as principais decisões tomadas e desafios encontrados, assim como uma pequena explicação do funcionamento da robô. Fotos e videos podem ser de grande ajuda para ilustrar determinados pontos. ===== Tarefas ===== - **Estrutura e Controle**: Desenvolva um robô apenas com peças do kit Lego (**incluindo as rodas**) e dois motores. Esse robô será controlado apenas pela HandyBoard. - **Menu**: Todas as tarefas devem ser acessadas facilmente por meio de um menu, do potenciômetro e dos botões. A usabilidade dessa interface será avaliada. - **Erros de translação e rotação**: Para auxiliá-lo nessas tarefas, crie um dispositivo que levante e abaixe uma marcador (pincel atômico, marcador de quadro branco, caneta hidrográfica, etc.) sobre uma cartolina ou papel, no qual o robô trafegará (lembre-se de levar um idêntico para a apresentação). Dessa forma as trajetórias ficarão claramente marcadas e poderão ser medidas e verificadas com maior facilidade e precisão. - **Calibração**: para determinar a distância percorrida ou o ângulo de rotação em função do tempo de acionamento dos motores, realize uma "calibração" prévia. Para isso faça, pelo menos, **10 testes** para cada valor de potência **P**. Apresente uma tabela onde para cada tempo //t// haja, pelo menos, 10 colunas com valores das distâncias (ângulos) percorridas. Plote um gráfico //t x d// (t-tempo; d-distância percorrida pelo robô ou theta - ângulo de rotação do robô). (//P// e //t// devem ser selecionados no menu). O gráfico deve mostrar o valor médio e a barra de erro correspondente de um desvio padrão em torno da média, como mostrado abaixo: {{ :cursos:introrobotica:2007-2:grafico.jpg }} Com as tabelas de calibração, é possível ajustar curvas (polinômios) que possam ser utilizados para se obter distâncias e ângulos quaisquer (interpolação). ==== Experimentos ==== * **Translação linear** - O valor de distância desejado deve ser informado por meio do potenciômetro e o valor correspondente mostrado no display. Para cada um dos 3 valores de distância: 10cm, 20cm e 30cm, meça a distância real e plote em um gráfico como na etapa de calibração. Estime o erro médio e o desvio padrão de suas medidas. * **Rotação** - O valor de ângulo desejado deve ser informado por meio do potenciômetro e o valor correspondente mostrado no display. Para cada um dos 3 valores de ângulo: 30 graus, 60 graus e 90 graus, meça o ângulo real com um transferidor e plote em um gráfico como na etapa de calibração. Estime o erro médio e o desvio padrão de suas medidas. **Dica**: para medir o ângulo, monte uma haste próxima ao nível do piso. * **Leds**: Escreva um programa que faça um grupo de 4 leds funcionar em seqüência. Utilize os botões start e stop para inicializar e parar a seqüência dos leds. A cada 'start' o robô deve executar uma seqüência diferente. Dica: Utilize as //Digital Outputs// da Handyboard através do SPI para acionar os Leds. * **Multitarefa**: Utilize a característica multitarefa do IC para ligar os leds enquanto o robô se move (trajetória livre) . O robô e os leds devem ficar em execução durante exatos 30 segundos, interrompendo ambas tarefas após esse tempo. * **Tarefa a ser mostrada no dia da apresentação**: Fazer o robô realizar autonomamente uma trajetória quadrada de 30cm de lado. Logo após, uma trajetória circular de 25 cm de raio, ambos por 3 vezes consecutivas. O robô deve desenhar numa cartolina sobre o chão a trajetória (cada grupo deve trazer sua própria cartolina no dia). As tarefas também serão avaliadas no dia da apresentação. * ** OBS **: Não devem ser utilizados sensores.