Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mapeamento da pista com inteligência artificial #44

Open
Matheus-de-Sousa opened this issue Jul 7, 2022 · 4 comments
Open

Mapeamento da pista com inteligência artificial #44

Matheus-de-Sousa opened this issue Jul 7, 2022 · 4 comments
Assignees
Labels
feature Novo Recurso

Comments

@Matheus-de-Sousa
Copy link
Collaborator

No description provided.

@Matheus-de-Sousa Matheus-de-Sousa added the feature Novo Recurso label Jul 7, 2022
@Matheus-de-Sousa
Copy link
Collaborator Author

Mapeamento da pista utilizando uma câmera

@giovannirdias
Copy link
Collaborator

giovannirdias commented Jul 13, 2022

Fase 0: Concepção do Projeto

  • Objetivo: descrição da pista através de dados do encoders ou outros sensores no Braia, porém utilizando alguma abordagem que possua algum algoritmo de inteligência artificial.

  • Inicialmente pesquisei algumas referências de projetos de seguidor de linha que utilizaram alguma abordagem de mapeamento com algoritmos de inteligência artificial, porém encontrei pouca coisa e na maioria das vezes as implementações eram feitas dentro de um ambiente simulado. Para mapeamento tem aquelas abordagens muito utilizadas no campo de robótica como SLAM ("Localização e Mapeamento Simultâneo") que utiliza uma grande quantidade de dados a partir de sensores (geralmente câmeras, sensores lasers ou LIDARs) para gerar um mapa 2D ou 3D do local onde agente está inserido e ao mesmo tempo localizá-lo nesse mapa; outra abordagem é utilizar algoritmos puramente de mapeamento como rtap_mapping ou elevation_mapping.

  • Desvantagens dessa abordagem: são algoritmos complexos que envolve utilização de odometria e aplicação do algoritmo SLAM.

  • Vantagens: no ROS (Robot Operating System) há bibliotecas prontas com essas aplicações, necessitam de poucas adaptações para cada projeto, nesse caso teríamos um plataforma de simulação legal para testar, mas também descobrir uma forma de comunicar o robô diretamente com ROS.

ROS + ESP32 = BRAIA + VISUALIZAÇÃO DE PISTA SIMULADA

  • Descobri que o esp32 tem aporte para o micro-ROS [1], com isso podemos enviar informações do próprio robô para o ROS e através do RVIZ, que a plataforma de visualização padrão do ROS, podemos gerar um mapa da pista. Para isso podemos utilizar os dados dos encoders e de uma câmera estéreo como esp cam [2] aplicados em algoritmos de odometria, para utilizar esses dados de "movimento" para estimar a posição do robô durante o tempo. Achei algumas pesquisadores que realizarm isso para robótica móvel diferencial, como [3] que utiliza um SLAM dinâmico com RGB-D e Encoders, e também esse vídeo onde ele demonstra o robô funcionando em tempo real e gerando um mapa no RVIZ [4].

  • Outra forma seria melhorar nosso algoritmo de mapeamento, trazendo algum conceito de odometria para auxiliar e tornar mais eficiente a identificação dos estados da pista.

  • Dificuldades com as simulação: acredito que esse mapa gerada no RVIZ não considera a física do ambiente. Então teríamos que modificá-lo para atender objetivos, como por exemplo, a sintonização de PID na issue Procurar métodos para sintonizar o PID #46 , porém não consegui, até agora, identificar alternativas para isso;

  • Encontrei algumas simulações de seguidores de linha utilizando ROS com diversos ambientes de simulação, como GAZEBO, Webots e V-Rep (CoppeliaSIM), adicionei eles na referência caso alguém queira ver. Em todos eles a pista tem que ser construído ou modificada manualmente, sendo bem complicado transferir o formato de pistas de competições para esse ambientes virtuais de forma automática. Estou tentando procurar um jeito de escrever um código que retira as informações de uma imagem com OpenCV e mande para um script de descrição do mundo no ROS, porém não conseguir pensar em um método viável ainda.

Referências

  1. https://micro.ros.org/blog/2020/08/27/esp32/
  2. https://discourse.ros.org/t/micro-ros-esp32-cam/18827
  3. https://github.com/ydsf16/dre_slam
  4. https://www.youtube.com/watch?v=eSeLW9Hkjhc
  5. https://github.com/DrakerDG/Webotz
  6. https://www.youtube.com/watch?v=SR25QkmcN6g
  7. https://github.com/arjunskumar/Line-Follower--ROS
  8. https://github.com/sudrag/line_follower_turtlebot
  9. https://www.researchgate.net/publication/333582331_Line_Detector_ROS_Node
  10. https://www.youtube.com/watch?v=Wkmph0HfUNM

@giovannirdias
Copy link
Collaborator

giovannirdias commented Jul 13, 2022

Ideia de mapeamento com fusão de dados (Câmera+encoders)

  • A ideia que pretendo seguir no projeto que estou começando a fazer para Introdução à controle discreto é utilizar a câmera para identificação dos trechos da pista utilizando OpenCV, aplicando algum modelo de redes convolucionais· Mas uma coisa que estavam vendo é de utilizar é fusão de sensores, onde combina-se dados de diversosr sensores para obter uma informação final com menos incerteza que utilzando os sensores de erro, basicamente "uma correção de erros" por comparação dos dados, aí acredito que podemos ter um mapeamento mais preciso e confiável.
  • No caso para fusão de dados podemos utilizar alguns algoritmos geralmente empregados para essas tarefas como filtro Kalman, redes bayesianas ou CNNs, em geral algoritmos com carácter probabilístico.
  • A tarefa seria alinhar e avaliar os dados, com algo de reastreamento e detecção.

Descrição das etapas

OpenCV

  • A ideia de utilizar o OpenCV é retirar informações da pista e talvez das marcações laterais, tanto para controle quanto para classificação do estado da pista, identificando os ângulos e caso seja maior que um valor estabelecido, classificá-lo como curva.
  • Imagem com ideia de classificação de ângulo:

https://s3.us-west-2.amazonaws.com/secure.notion-static.com/fee77fb8-a6a6-46b7-ba71-df6c6161ccc8/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220713%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220713T221714Z&X-Amz-Expires=86400&X-Amz-Signature=7cf1d86a08759538f38e928afcad9bdd86fcc10c7b9e5da83519932b38a155ee&X-Amz-SignedHeaders=host&response-content-disposition=filename%20%3D%22Untitled.png%22&x-id=GetObject

  • Ideia de controle do carrinho a partir dos frames da câmera:

https://s3.us-west-2.amazonaws.com/secure.notion-static.com/82cb4b22-8ff2-4ca8-ba5d-95036b460b34/2-Figure2-1.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220713%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220713T224738Z&X-Amz-Expires=86400&X-Amz-Signature=831a2f213522d7e018fde683b7ff38153a05bf6e88ea39277b9c681c1d5d0219&X-Amz-SignedHeaders=host&response-content-disposition=filename%20%3D%222-Figure2-1.png%22&x-id=GetObject

  • Minhas principais referências são esses dois modelos [1] e [2], o segundo em especial utiliza redes neurais profundas mais PID para criar um seguidor de linha que também desvia de objetos.
  • Imagem com a descrição da etapa de processamento do video com esp cam:

https://s3.us-west-2.amazonaws.com/secure.notion-static.com/80de6b7f-0764-480f-b16d-f36358b5da3b/OpenCV-Line.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220713%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220713T221724Z&X-Amz-Expires=86400&X-Amz-Signature=ba165aed2a02e70792efc67646260081bf8e9d1e8ed7f43e408b30e236a1f67e&X-Amz-SignedHeaders=host&response-content-disposition=filename%20%3D%22OpenCV-Line.png%22&x-id=GetObject

  • Diagrama do projeto com conceito de fusão de dados:

https://s3.us-west-2.amazonaws.com/secure.notion-static.com/712ad15c-b0b9-4815-bdc0-cc9688343126/Untitled.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIAT73L2G45EIPT3X45%2F20220713%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20220713T221731Z&X-Amz-Expires=86400&X-Amz-Signature=3f44ba1d386831afdf9bb7f60546d8a08a5033c1ad53e37f331b1ede65d13714&X-Amz-SignedHeaders=host&response-content-disposition=filename%20%3D%22Untitled.png%22&x-id=GetObject

Referências

  1. https://hackaday.io/project/163799/gallery#128ff571bee60788f57097b06d87e0ad
  2. https://www.techscience.com/cmc/v68n1/41862/html

@raphera
Copy link
Contributor

raphera commented Jul 16, 2022

Verificar se a issue será continuada em um período breve, caso contrário mover para Backlog.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Novo Recurso
Projects
None yet
Development

No branches or pull requests

3 participants