Projeto

Geral

Perfil

Introdução » Histórico » Revisão 9

Revisão 8 (André Vidal, 03/11/2021 16:17 h) → Revisão 9/10 (André Vidal, 03/11/2021 18:12 h)

h1. Introdução 

 h2. Projeto Humanoide RoboIME 2020/2021 

 O objetivo da intel do humanoide é prover a inteligência necessária para um robô que possui algumas características mecânicas de um humano possa cumprir certas tarefas. As características mecânicas    principais são ele ser bípede e dever obedecer certas proporções entre as pernas e as demais partes. As regras detalhadas sobre a pista, os obstáculos e as proporções do robô se encontram no pdf em anexo. 

 Há 3 desafios possíveis: percorrer uma pista sem obstáculos, percorrer uma pista com obstáculos no menor tempo possível, e percorrer uma pista com um degrau, sendo o desempate a máxima distancia conseguida no caso de o robô não concluir a pista e o tempo que levou. Caso o robô cometa alguma infração, como sair das margens da pista, ele pode recomeçar, não sendo infinitas o número de tentativas. Em 2020 e em 2021 as tomadas que serviam para efeito de premiação eram filmadas ao vivo. 

 No momento, o projeto do robô se dedica a completar as duas primeiras modalidades descritas. A intel é decisivamente atuante na segunda modalidade, sendo cogitadas aplicações também para a primeira, que no momento não se encontra implementada. 

 h2. Noções sobre o hardware 

 Os códigos são rodados em uma RaspiberryPI 4, que roda o SO Linux. O controle dos motores é feito por uma outra placa, a myRIO, que recebe da Raspberry um char respectivo ao estado desejado (andar em frente, parar, girar) através de comunicação serial e faz com que os motores realizem os movimentos necessários. Esse sinal é fornecido rodando um script em Python. A ideia inicial era o código ser feito em C++, porém isso não foi feito com a justificativa de no momento a velocidade de execução ser satisfatória e ser mais fácil encontrar documentação das bibliotecas utilizadas em Python. 


 O programa pode trabalhar com o feedback de 3 sensores, que ficam localizados na cabeça. Eles são uma câmera, um giroscópio (MPU9250), e um sensor de distância(TF Mini Lidar). O sensor lidar fornece a distância ao objeto mais próximo localizado a frente do robô, enquanto o giroscópio pode funcionar como bussola (ele informa a inclinação referente a qualquer ângulo tridimensional, mas no momento queremos saber apenas a inclinação no plano do chão). 

 h2. Noções sobre o software 

 Para a modalidade de desvio de obstáculos, códigos atuais visam a implementação do seguinte diagrama de estados: 
 !main-corrida-drawio.png! !main corrida drawio.png! 

 Nele, as ramificações de verificar se há obstáculo são feitas antes das de corrigir direção. Esses processos são feitos usados estruturas de decisão padrão, cujo a lógica foi feita manualmente sem nenhum uso de machine learning (uma das metas para o futuro). Para a extração de informações uteis das imagens foi utilizada a biblioteca OpenCV. 
 Não está feito um diagrama de estados para a função de andar e linha reta, embora possa ser derivável do acima (nenhum obstáculo será detectado). Não é descartada a criação de diagramas de estados que implementem estratégias diferentes. O código atual ainda não foi testado com o robô em movimento independente, portanto provavelmente ele sofrerá alguns ajustes.  

 h2. Metas 

 As metas principais para esse ano de 2021 é gerar uma documentação satisfatória e tutoriais para todo o projeto e garantir que os programas forneçam feedbacks adequados a myRIO para o desvio de obstáculos e para o alinhamento na pista. Para o futuro, as metas são a implementação de aprendizado de máquina com as imagens a fim de obter a direção para a qual desviar, gerar o código para a implementação da terceira tarefa - a de subir degrais -, e, com menos prioridade, começar a trabalhar com vídeo para facilitar o debug em tempo real.