Projeto Stratus

Projeto Stratus

Olá caros leitores, neste artigo vamos tratar de um projeto desenvolvido por alunos de graduação na University of Colorado, Denver, nos Estados Unidos. Os alunos Skyler Saleh, Antonio Duarte, Bruno Mary e Xin Li compõem um grupo de estudantes, liderado pelo professor Dr. Dan Connors, que estão participando da Intel-Cornell Cup 2015, competição que estimula o desenvolvimento de sistemas embarcados, em particular, utilizando tecnologias da Intel, porém não limitadas a elas. Entre nós, eu, Antonio, sou o único brasileiro dentre as 22 equipes participantes da final da competição, a qual acontecerá nos dias 1 e 2 de Maio, no Kennedy Space Center da NASA, na Florida. Sou estudante de Engenharia de Controle e Automação na Universidade Federal de Santa Catarina e atualmente participo do programa Ciência sem Fronteiras nos EUA.

O projeto Stratus

Agora, vamos tratar das tecnologias que nós desenvolvemos. O projeto Stratus objetiva a rápida construção de robôs customizáveis, através de um módulo que integra os sistemas de visão, navegação e controle, impactando assim no rápido desenvolvimento de robôs e tecnologias úteis à sociedade.

O principal foco é no quesito visão, onde ainda hoje robôs são muito limitados. O Team Stratus criou uma nova implementação do SLAM (Simultaneous Localization and Mapping), conseguindo dar ao robô a capacidade de criar um mapa 3D e utilizá-lo para navegação, como por exemplo no processo de evitar obstáculos. Mas o que é SLAM afinal? Os conceitos básicos do SLAM são: 

  • Mapas podem ser construídos a partir de uma localização e uma câmera (Mapping);
  • A câmera pode ser localizada com um mapa (Localization).

E por isso, como o nome sugere, o SLAM proporciona mapeamento e localização ao mesmo tempo (Simultaneous Localization and Mapping). Atualmente existem muitas implementações que reproduzem o SLAM abertas à comunidade (OpenSLAM), porém todos se encaixam em uma das seguintes categorias: 

  • Não são 3D: CEKF-SLAM, DP-SLAM, GMapping, tinySLAM, COP-SLAM, GridSLAM, OpenRatSLAM;
  • Não são denso: CEKF-SLAM, Linear SLAM, OpenSeqSLAM, LSD-SLAM, COP-SLAM, EKFMonoSLAM, GridSLAM, ro-SLAM;
  • Não são em larga escala: RGBD-SLAM, GMapping, EKFMonoSLAM, GridSLAM, OpenRatSLAM, KinectFusion.

Como a equipe definiu como parte de sua especificação a utilização de um algoritmo que proporcione um mapa 3D, denso e em larga escala, todos os métodos acima foram descartados e um novo método foi criado, chamado Stratus Dense SLAM (Figura 1).

Diferenças_metodos_SLAM

Figura 1 - Diferenças entre métodos para SLAM.

O mapeamento 3D ainda pode ser utilizado para fins de digitalização 3D de objetos. Por exemplo, o módulo pode ser enviado junto a um drone para uma região onde o ser humano não tem acesso e digitalizar a área ou objetos que podem oferecer algum nível de risco, dando aos responsáveis a capacidade de tomar medidas de prevenção de catástrofes, como o desmoronamento de rochas.

O SLAM é um algoritmo pesado e iterativo que possui diversos loops, por isso na medida do possível a equipe tentou mover o processamento para a GPU, prioritariamente através de bibliotecas em OpenCV. Para rodar os algorítimos a equipe conta com uma Intel HD Graphics e Intel Core (Figura 2).

intel_1 intel_2

Figura 2 - Tecnologias Intel.

Devido à capacidade limitada de robôs em carregar muito peso (e, por isso, capacidade computacional limitada) e os custos do projeto, a alternativa utilizada engloba uma câmera 3D, nesse caso um Structure Sensor, desenvolvido pela startup Occipital, e através do módulo transmite as imagens a uma base remota, que roda os algoritmos, entre eles o SLAM, e envia comandos de volta ao robô. Para o mapeamento 3D a velocidade com que a transmissão de informações é feita não é tão relevante, porém quando o assunto é evitar obstáculos, o tempo é limitado. Por isso, outra área muito explorada nesse projeto é a comunicação.

Baseada no conceito “Internet of Things“, o projeto Stratus conta com uma biblioteca de comunicação via WiFi (IEEE 802.11g) desenvolvida para dar aos diferentes componentes do projeto a capacidade de se conectarem sem a necessidade de intervenção humana. Uma vez que os dispositivos estão na mesma rede wireless, tudo acontece. Não há a necessidade de configuração de IP ou portas. A StratusNet utiliza tanto o protocolo UDP como TCP e garante o envio de imagens ou comandos de controle entre os dispositivos. No início o servidor distribui suas informações (peer information) através do UDP e aguarda a resposta de algum cliente. Após receber as informações do cliente eles se conectam através do protocolo TCP e o envio de informações é garantido. Os diagramas (Figura 3.1 e 3.2) ilustram as etapas executadas pelo servidor e cliente, respectivamente.

diagrama_servidor_1

 Figura 3.1 - Diagrama do servidor.

diagrama_servidor_2

Figura 3.2 - Diagrama do cliente.

O framework de comunicação foi primeiramente desenvolvido na linguagem C, porém para atender outros dispositivos, uma segunda versão em Python foi elaborada.

Através dessa tecnologia eles conseguem fazer o envio de imagens dos robôs para a base remota. Em se tratando de uma câmera 3D, as imagens são tanto a intensidade (color image), como as imagens de profundidade (depth image), que indicam o quanto um objeto está próximo da câmera, ambas com 320 x 240, enviadas em 30 frames por segundo. Contudo, como nem tudo é flores, eles também precisaram desenvolver métodos de compressão e descompressão para a transmissão, devido à banda limitada.

color_image Figura 4.1 - Color Image

depth_image

Figura 4.2 -Depth Image

A equipe desenvolveu diferentes métodos de compressão para tentar reduzir ao máximo o tamanho das imagens a serem enviadas. Primeiramente, para a imagem colorida foram utilizados RGB565 e JPEG, sendo o segundo mais expressivo e mantido na versão final. Para as imagens de profundidade (depth), depois de analisar diferentes publicações, a equipe resolveu desenvolver seu próprio método, chamado Stratus Depth Compression. Esse novo método utiliza a precisão do sensor, uma transformação logarítmica e o Run-Length Encoding. Analisando inicialmente o mapa linear e posteriormente o logaritmo, nas Figuras 5.1 e 5.2, é possível notar o maior aproveitamento da precisão do sensor. Na primeira, no mapeamento linear, o sensor não possui precisão suficiente para objetos próximos, porém oferece muita precisão para objetos distantes. Após a transformação logarítmica os dados mapeados aproveitam bem a precisão do sensor para objetos próximos e distantes.

map_linear

 Figura 5.1 - Mapeamento Linear

map_log

Figura 5.2 - Mapeamento Logaritmo

Devido às características da imagem de profundidade, essa imagem possui muitos valores repetidos e é uma boa candidata ao RLE, que é um método simples onde ao invés de salvar os valores repetidos, salva uma amostra do valor e a quantidade de vezes que o mesmo se repete.

A Figura 6 mostra a comparação dos diferentes métodos e o resultado final, combinando a compressão JPEG de imagens coloridas e a Stratus Depth Compression, reduzindo a taxa de transmissão em aproximadamente 90%.

comparacao_stratus

Figura 6 - Comparação entre diferentes métodos de compressão.

O módulo Stratus (Figura 8) inclui baterias próprias, um Structure Sensor (não ilustrado) e uma placa Intel® Edison (Figura 7), ainda recente no mercado, com as seguintes características:

  • Intel® Atom™ system-on-a-chip (SoC) baseado na microarquitetura Silvermont 22 nm, incluindo dual-core CPU e microcontrolador com core único;
  • Wi-Fi, Bluetooth* LE, memória e armazenamento integrados;
  • Suporte para mais de 30 interfaces I/O através de 70 pinos.

intel_edison

Figura 7 - Intel Edison Board

stratus_module

Figura 8 - Stratus Module - Intel Inside

O projeto Stratus representa o desenvolvimento não apenas de uma nova tecnologia, mas também de toda infraestrutura de fácil uso e baixo custo, criada para suportar os objetivos globais (Figura 9).

stratus

Figura 9 - Diagrama de blocos com tecnologias desenvolvidas.

Todas essas tecnologias seriam apenas promessas se não colocadas em prática, por isso a equipe desenvolveu robôs que carregam o módulo e provam seu objetivo. Um deles é o Stratuscopter, hexcopter construído em cima de uma plataforma pré desenvolvida. O outro, Stratusrover, é um pequeno robô desenvolvido com uma placa de Arduíno. Ambos são ilustrados na Figura 10, a qual também ilustra a última versão do Stratus módulo. 

Stratuscopter_Stratusrover

Figura 10 - Stratuscopter & Stratusrover.

Como o objetivo é facilitar o desenvolvimento de robôs, a equipe também pensou na facilidade em navegá-los. Diferente de controles remotos complexos com diversos botões, os robôs contam com um controle simples de PlayStation. Essa área de navegação foi principalmente explorada para o Stratuscopter, devido a sua maior complexidade, onde a equipe realizou testes outdoor e indoor. Ainda, para expor os itens e dados importantes em tempo real, a equipe desenvolveu um pôster digital que será transmitido durante a competição resumindo as informações mais relevantes dos módulos em operação (Figura 11).

stratus_control_center

Figura 11 - Poster digital.

Sobre o prêmio Intel Media Award

Uma das premiações da competição é o Intel Media Award, que irá dar prêmios para as melhores equipes em termos de mídia, levando em consideração o blog atualizado pela equipe durante o desenvolvimento e uma votação aberta ao público, por meio da qual você pode me ajudar a representar o Brasil, e a vencer! Vote usando o link. Basta selecionar o Team Stratus e pressionar “submit”.

Para aprender Mais

Quer saber mais detalhes sobre esse projeto e a competição? Aprender mais sobre as tecnologias envolvidas? Confira alguns links:

Referências

http://carbon.ucdenver.edu/~dconnors/

http://www.systemseng.cornell.edu/se/intel/news/blogsurvey.cfm

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Antonio Duarte
Estudante de Engenharia de Controle e Automação pela Universidade Federal de Santa Catarina e atualmente em intercâmbio no Colorado, EUA. Amante de integrações hardware/software, programação paralela, processamento de sinais/imagens, otimização, tecnologia e inovações. Nas horas vagas pratica esportes, viagens e passa tempo com amigos.

9
Deixe um comentário

avatar
 
2 Comment threads
7 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
Caio PereiraAntonio DuarteCleiton Bueno Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Caio Pereira
Visitante
Caio Pereira

Antonio , Parabéns pelo projeto. Particularmente nunca ouvi falar sobre SLAM e achei bastante interessante incluindo as áreas de aplicação. Quando você comentou do sensor da Occiptal lembrei do projeto http://structure.io/ .
Boa sorte na competição!

Antonio Duarte
Visitante
Antonio Duarte

Olá Caio, muito obrigado pelo comentário. O Structure Sensor é exatamente esse (http://structure.io), inclusive como um dos primeiros protótipos, usamos um iPhone e criarmos um App em cima de um dos App disponíveis do site deles. Como o iPhone tem capacidade computacional, Wi-Fi etc., no primeiro momento ele ajudou muito a acelerar o processo de desenvolvimento. Depois de várias coisas funcionando migramos para o protótipo com a Intel Edison e evoluímos o projeto para algo mais barato, leve e específico para o nosso objetivo. Abraços!

Caio Pereira
Visitante
Caio Pereira

Antonio, Que Bacana!
Essa é a vantagem de estar ai nos EUA, você consegue em menos tempo e mais barato testar outras ideias. Abraços!

Cleiton Bueno
Visitante

Muito bacana o projeto Antônio, show de bola mesmo. Sucesso na compteção irão participar.

Muito legal ter usado Python e a parte de PDI com OpenCV.

PS: Lembro quando tive aulas de robótica e um professor havia comentado sobre o SLAM, mas não era pra gente ainda, mas de algoritmo com robôs eu implementei um wavefront, para traçar a "melhor" rota alternativa.

Antonio Duarte
Visitante
Antonio Duarte

Olá Cleiton, Primeiramente desculpe pela demora, no último final de semana participei da competição para defender o projeto. O fato de termos integrado usado mais de uma linguagem é pela portabilidade. O projeto ainda inclui outras tecnologias que não consegui mencionar nesse artigo, como path/mission planning com Python script, e por isso as bibliotecas de comunicação precisam ter essa característica. Legal sobre sua experiência, eu particularmente nunca ouvi falar de SLAM na universidade no Brasil, apenas por conta mesmo. No primeiro semestre da UFSC nós trabalhamos com robôs mindstorms da Lego, onde você faz projetos. É muito legal e motivador… Leia mais »

Antonio Duarte
Visitante
Antonio Duarte

Olá Cleiton, Primeiramente desculpe pela demora, no último final de semana participei da competição para defender o projeto. O fato de termos usado mais de uma linguagem é pela portabilidade. O projeto ainda inclui outras tecnologias que não consegui mencionar nesse artigo, como path/mission planning com Python script, e por isso as bibliotecas de comunicação precisam ter essa característica. Legal sobre sua experiência, eu particularmente nunca ouvi falar de SLAM na universidade no Brasil, apenas por conta mesmo. No primeiro semestre da UFSC nós trabalhamos com robôs mindstorms da Lego, onde você faz projetos. É muito legal e motivador como… Leia mais »

Cleiton Bueno
Visitante

Que legal Antonio, e com foi na competição? Então, como eu mencionei, ele apenas citou hehe, eu nem imaginava isso.

Antonio Duarte
Visitante
Antonio Duarte

A competição foi excelente! Nós apresentamos o projeto 3x para três grupos diferentes de juízes, um deles tinha dois membros da Intel que participaram do projeto da Edison (um de hardware e um de software). Além de outras empresas como Altera etc. Conquistamos a categoria de primeiro lugar, o que pode-se dizer que ficamos entre os 7 melhores projetos da competição (eram 22 no total). Além disso, a janta de premiação foi dentro de um prédio no Kennedy Space Center, olhando para o Atlantis, nave espacial que realizou 33 missões. Foi um experiência muito legal.

Cleiton Bueno
Visitante

Poxa vida, que bacana Antonio, parabéns! É algo de grande responsabilidade e desafio. Tem grandes historias já para os netos hehe.