====== TRABALHO PRÁTICO 3 ====== ====== Objetivo ====== O presente trabalho prático tem por objetivo a introdução e a aplicação de sensoreamento, tratamento de informações para controle e atuação de um robô móvel e aquisão de dados através da porta serial. ===== Construção dos sensores===== Para realizar as taferas solicitadas para o trabalho prático foi nessário a construção de alguns sensores que têm a função de detectar e mensurar a distância entre o robô e a parede, a a rotação e velocidade das rodas. ==== Sensor Ópto Reflexivo ==== O sensor opto-reflexivo consiste de um emissor e de um receptor infra-vermelho encapsulados em um invólucro plástico e posicionados em um alinhamento ideal para para tal apliação. O emissor emite um feixe de luz que é refletido pelo obejto e captado pelo receptor que gera um sinal elétrico em função da intensidade do feixe de luz recebido. Tais sensores são muito utilizados comercialmente em diversas aplicações como detecção de ojetos, caracterização de superfícies, medição de distâncias, construção de shaft encoders, detecção de códigos de barras. Para detectar e mensurar a distância de objetos posicionados de frete ao robô, bem como a detecção das linhas escuras no solo foi implementado no robô sensores opto-reflexivos, CHAVE OPTICA REFLEXIVA TRIANGULAR do fabricante CROMATEK. {{:cursos:introrobotica:2010-2:grupo04:tp2-1a.png|}} Para a implementação foi necessário fazer a interface dos sensores com a handy-board. Para cada elemento do sensor, emissor e receptor, foi contruído um circuitos para interface como mostrado. {{:cursos:introrobotica:2010-2:grupo04:tp2_2.png|}} **Emissor:** Segundo o data-sheet do sensor a tensão de operação do emissor (LED1) varia entre 1,2 e 1,7V, e a corrente de operação entre 20 e 100mA. Assim, analisando a malha do emissor, foi dimensionado o resistor R1 do circuito apresentado. 5V=1,2V+Rmax*Imin 5V=1,2V+Rmin*Imax 3,8V=R(20*10^-3) 3,8V=Rmin*(100*10^-3) Rmax=190 Rmin=38 Foi escolhido um resistor de 100 Ohms por ser um valor comercial e estar centralizado dentro da faixa calculada para R1. **Receptor:** Conforme apresentado no circuito o receptor (Q1) teve um de seus terminais conectado no barramento de terra e outro no terminal Vsens da handy-board que é uma entrada analógica do circuito controlador do robô. **Implementação Física:** Para implementação fisica soldamos os terminais de terra do emissor e do receptor em um mesmo condutor. No terminal do emissor foi soldado um condutor com a resistência R1 em série, e no terminal de sinal do receptor foi soldado um condutor sem associação de resistências. Todos as conecções foram isoladas com tubos termo-retráteis e conectadas com barramento de pinos para facilitar a ligação no barramento da handy-board. Para facilitar a organização dos sensores padronizamos os fios condutores conforme mostrado: {{:cursos:introrobotica:2010-2:grupo04:tp2_4.png|}} ==== Shaft Encoders:==== Para efetuar as medidas de rotação e velocidade das rodas foi construído um shaft-encoder, atravé de um break-beam sensor. O princípio de funcionamento desse sensor se baseia no movimento de rotação de uma engrenagem LEGO (14 dentes) no espaçamento do sensor break-beam, fazendo com que haja um sinal elétrico pulsante de acordo com a rotação da engrenagem nos terminais do break-beam. A montagem do shaft-encoder foi seguida conforme modelo exemplificado abaixo: {{:cursos:introrobotica:2010-2:grupo04:digitalizar0005.jpg|}} {{:cursos:introrobotica:2010-2:grupo04:digitalizar0002.jpg|}} Esquema de Montagem Shaft-Encoder {{:cursos:introrobotica:2010-2:grupo04:104_0076.jpg|}} Fixação do Saht Encoder no Robô ====Aquisição de dados:==== Após montagem e fixação dos shaft-encoders no robô, iniciamos a aquisição de dados através do uso de duas rotinas, uma para envio de dados por hiper-terminal e outra para processamento dos sinais dos shaft-encoders para obtermos os dados relativos a velocidade e rotação das rodas. Com essas rotinas criamos um programa que acionava um dos motores em 50% da sua potencia e capturava diretamente da porta analógica o sinal do shaft-encoder. O sinal observado tem característica pulsante, devido às interrupções feitas pela engrenagem no sensor break-beam. O espaçamento entre as bordas é relativamente uniforme uma vez que se manteve um valor constante na potência que acionava o motor. {{:cursos:introrobotica:2010-2:grupo04:grafico1.jpg|}} A posição na qual foi fixada o shaft-encoder foi considerada ideal, uma vez que não se encontrava muito perto dos motores aonde a rotação é consideravelmente alta, e nem próximo as rodas local aonde se verificaria baixa rotação na engrenagem do shaft-encoder. Essa última situação nos daria valores baixos para velocidade das rodas, o que dificultaria a realização do controle de velocidade do robô. A coleta de dados do sensor opto-reflexivo foi feita na análise do algorítmo de seguir paredes, e será apresentada mais a frente. ====Simple Feedback Control:==== Foi proposto que o robô seguisse uma parede através que um algoritmo de controle que utilizase o conceito de controle por realimentação. Para isso utilizou-se o sensor opto-reflexivo para medir a distância entre o robô e a parede. Foi definida experimentalmente a distância na qual o robô deveria se manter da parede, com essa informação do sensor opto-reflexivo foi possível o algorítmo saber o quão longe o robô estava da parede, de modo que possa corrigir a tragetória do robô para continuar seguindo a parede a uma distancia próxima da ideal. Os algorítmos criados eram do tipo Three States, que permite ao o robô poder se curvar para direita ou para esquerda no caso de estar afastado ou muito próximo da parede ou ainda seguir em frente caso esteja à distancia ideal da mesma. Ainda foram implementados dois algorítmos diferentes, um algoritmo denomidado HARD, no qual para se curvar acionava-se somente uma roda de cada vez, e um algorítmo denominado GENTLE, no qual se aciona as duas rodas ao mesmo tempo com potências relativas ao movimento de curva dejado. ====Aquisição de Dados:==== Verificamos que o algorítmo GENTLE segue a parede de forma mais suave que o algorítmo HARD. isso pode ser observado através da aquisição de dados feita no sensor opto-reflexivo enquanto robô seguia uma parede sem curvas ou interrupçõs e uma parede de formato circular. Verificamos que no algorítmo GENTLE os valores medidos para distância tendem a estar mais próximos do valor setado. O valor setado foi de 120 para a pararede plana e de 200 para a curva (valores de conversão do sinal analógico do sensor). {{:cursos:introrobotica:2010-2:grupo04:grafico2.jpg|}} Distancia com a Parede Plana GENTLE {{:cursos:introrobotica:2010-2:grupo04:grafuco3.jpg|}} Distancia com a Parede Plana HARD {{:cursos:introrobotica:2010-2:grupo04:grafico4.jpg|}} Distancia com a Parede Circular GENTLE {{:cursos:introrobotica:2010-2:grupo04:grafico5.jpg|}} Distancia com a Parede Circular HARD ====Controle PD:==== Uma vez com os shaft-encoders instalados no robô foi possível fazer controle de velocidade e deslocamento do robô. Seguindo o modelo de controle PD introduzido por FRED MARTIN [pag 190-189] e conhecendo empiricamente a relação contagens de pulso Vs. deslocamento do nosso robô, desenvolvemos o controle PD para deslocamento do robô. O controle PD trabalha atuando sobre uma das rodas do robô, sendo assim desenvolvemos um algorítmo para controle de velocidade da outra roda baseada na primeira. Para tal foi necessário fazer uso da capacidade de mult-tasking da handy-board, uma vez desse estamos fazendo controle de múltiplas saídas alimentadas por múltiplas o que requer que o processador opere mais de um processo simultaneamente. ====Aquisição de Dados:==== Para verificar a eficiência do nosso algorítmo de controle, rodamos o controle PD associado ao controle de velocidade para que o robô transladasse linearmente 37cm, e adquirindo dados das rotinas de controle podemos ver que seu coportamento foi bastante robusto conforme pode ser visto no gráfico abaixo. {{:cursos:introrobotica:2010-2:grupo04:grafico6.jpg|}} (V-E-Velocidade roda Esquerda, V-D- Velocidade Roda Direita, Dist- Deslocamento) ====Funções de Deslocamento:==== Desenvolvidos os métodos de controle de deslocamento e velocidade foi possível desenvolver funções para deslocamento linear controlado, com distância passada como parâmetro, bem como funções para rotação, com o ângulo de rotação passado como parâmetro. {{ youtube>large:ThlKwI_Dw94 }} ====Controle Deliberativo (Wave-front):==== No atual estágio de desenvolvimento, com os controles de distância e de rotação, nosso robô possui todas as competências para a implementação do algorítmo wave-front. O algortimo foi implmentento e os testes foram efetuados com sucesso conforme exemplos apresentados abaixo. {{:cursos:introrobotica:2010-2:grupo04:wave-frontj.jpg|}} {{ youtube>large:C35Czp6Vv7c }} ====Conclusão:==== Consideramos que o TP3 foi realizado com sucesso, uma vez que conseguimos implementar no robô as tarefas de seguir parede, o algorítmo de controle de deslocamento PD e de velocidade através da realimentação dos shaft-encoders, bem como o algorítmo wave-front para locomoção. ====Videos:==== {{ youtube>large:IAzS6MdFAec }} {{ youtube>large:lhSAtx8xcsU }} ====Bibliografia:==== Martin. FredG. Robotic explorations: a hands-on introduction to engineering.