Projeto

Geral

Perfil

Ações

Introdução

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 em ambas as modalidade.
!main corrida drawio.png!
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).

Noções sobre o software

O códigos atuais visam a implementação do seguinte diagrama de estados:
!main corrida drawio.png!
!main obstaculo drawio.png!
Tive problemas para inserir no corpo do texto, mas é possivel visualizá-los no anexo. Embora não mostrado, entre cada transição de estado e na tirada de fotos o robô passa pelo modo parar a fim de que a imagem não trema ou que o robô se desequilibre na mudança de estados.

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.

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.

Atualizado por André Vidalmais de 2 anos · 10 revisões