Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Integrado

Facilitando o desenvolvimento de aplicativos SLAM visuais


Localização e mapeamento simultâneos (SLAM) descreve o processo pelo qual um dispositivo, como um robô, usa dados do sensor para construir uma imagem de seu ambiente circundante e, simultaneamente, determinar sua posição nesse ambiente. Existem muitas formas diferentes de implementar o SLAM, tanto em termos de algoritmos de software implantados, quanto dos sensores utilizados, que podem incluir câmeras, sonar, radar, LiDAR e dados posicionais básicos, utilizando uma unidade de medida inercial (IMU).

A disponibilidade de câmeras pequenas e baratas impulsionou a popularidade dos sistemas SLAM visuais monoculares, que usam um único camerato padrão para realizar as funções de localização e mapeamento. Esses sistemas SLAM visuais podem ser encontrados em uma ampla gama de robôs, incluindo rovers e landers de Marte , robôs de campo na agricultura, drones e, potencialmente, veículos autônomos. Os sistemas Visual SLAM também oferecem vantagens onde o GPS não está disponível, por exemplo, em áreas internas ou em grandes cidades, onde a obstrução por edifícios reduz a precisão do GPS.

Este artigo descreve o processo SLAM visual básico, cobrindo os módulos e os algoritmos envolvidos no reconhecimento e rastreamento de objetos e correção de erros. As vantagens de descarregar a computação e funcionalidade SLAM para DSPs dedicados são discutidas e o kit de desenvolvimento CEVA-SLAM SDK é usado como uma ilustração dos benefícios que podem ser obtidos seguindo esta rota de desenvolvimento.

SLAM direto e baseado em recursos

Existem muitas abordagens diferentes para a implementação de SLAM visual, mas todas usam o mesmo método geral, rastreando pontos de ajuste através de quadros de câmera consecutivos para triangular sua posição 3D enquanto usa simultaneamente essas informações para aproximar a pose da câmera. Em paralelo, os sistemas SLAM estão continuamente usando algoritmos complexos para minimizar a diferença entre os pontos projetados e reais - o erro de reprojeção.

Os sistemas visuais SLAM podem ser classificados como diretos ou baseados em recursos, de acordo com a forma como utilizam as informações de uma imagem recebida. Os sistemas Direct SLAM comparam imagens inteiras entre si, fornecendo informações valiosas sobre o ambiente, permitindo a criação de um mapa mais detalhado, mas à custa do esforço e da velocidade de processamento. Este artigo concentra-se em métodos SLAM baseados em recursos, que procuram na imagem por recursos definidos, como cantos e “manchas” e baseiam a estimativa de localização e arredores apenas nesses recursos. Embora os métodos SLAM baseados em recursos descartem quantidades significativas de informações valiosas da imagem, a compensação é um processo simplificado que é computacionalmente mais fácil de implementar.


Figura 1:SLAM direto vs baseado em recursos. (Fonte:https://vision.in.tum.de/research/vslam/lsdslam)

O processo SLAM visual

As principais etapas no SLAM baseado em recursos são a extração de um conjunto de recursos esparsos das imagens de entrada, correspondência dos recursos obtidos a partir de diferentes poses de câmera e resolução do problema SLAM, minimizando o erro de reprojeção de recursos (a diferença entre a localização rastreada de um ponto e onde se espera que seja dada a estimativa de pose da câmera, em todos os pontos).

Essas etapas são realizadas usando um conjunto de blocos de construção, descritos abaixo, que são comuns a todas as implementações SLAM baseadas em recursos. Visual SLAM é uma área em evolução que gera uma quantidade significativa de pesquisas e vários algoritmos foram desenvolvidos e propostos para cada módulo, cada um dos quais com prós e contras, dependendo da natureza exata da implementação do SLAM. A descrição abaixo menciona um subconjunto dos algoritmos mais populares atuais.

Extração de feições, figura 2, é um processo que representa com eficiência informações úteis em uma imagem, como cantos, bordas, manchas e objetos mais complexos, como portas e janelas, como um vetor de feições compacto. Os algoritmos de extração de recursos populares incluem Diferença de Gaussiano (DoG) e Recursos do Teste de Segmento Acelerado (FAST9), um método de detecção de canto que é adequado para processamento de vídeo em tempo real devido à sua eficiência computacional.


Figura 2:Extração de recurso SLAM. (Fonte:https://medium.com/towards-artificial-intelligence/oriented-fast-and-rotated-brief-orb-1da5b2840768)

Na descrição do recurso, a região em torno de cada recurso extraído é convertida em um descritor compacto que pode ser comparado a outros descritores. Os recursos podem ser descritos, por exemplo, por sua aparência ou pela intensidade dos pixels em um patch ao redor do ponto do recurso. ORB e FREAK são exemplos de algoritmos de descritores de recursos populares.

Na correspondência de recursos, os recursos extraídos (descritores) são combinados em vários quadros. Os recursos são combinados em duas imagens, comparando todos os recursos da primeira imagem com todos os recursos da segunda imagem. A função de distância de Hamming é comumente usada na correspondência de recursos, pois pode ser executada de forma eficiente em hardware usando o XoR e as funções de contagem de bits em conjuntos de bits de dados, como vetores. A distância de Hamming dá uma indicação de quantos bits em dois vetores são diferentes, o que significa que quanto menor a pontuação, mais próxima é a correspondência.

O fechamento de loop é a etapa final no processo SLAM e garante uma solução SLAM consistente, especialmente quando as operações de localização e mapeamento são conduzidas por um longo período de tempo. O fechamento de loop observa a mesma cena por quadros não adjacentes e adiciona uma restrição entre eles para reduzir o desvio acumulado na estimativa de pose. Tal como acontece com os outros módulos SLAM visuais, uma variedade de algoritmos foram desenvolvidos para fechamento de loop, com os mais populares sendo Bundle Adjustment, filtragem de Kalman e filtragem de partículas.

Os algoritmos VSLAM são uma área de pesquisa ativa e os acima são exemplos de um número crescente de técnicas que surgiram nos últimos anos. Os métodos SLAM baseados em recursos são preferíveis para soluções incorporadas, pois permitem velocidades de processamento mais rápidas e fazem uso mais eficiente da largura de banda da memória. Além disso, as soluções baseadas em recursos exibem níveis mais altos de robustez em uma variedade de condições, incluindo mudanças rápidas no brilho, níveis baixos de luz, movimentos rápidos da câmera e oclusões.

A escolha do algoritmo específico é orientada pelas características da aplicação particular, incluindo tipos de mapas, tipos de sensores, grau de precisão exigido e muito mais. Muitos sistemas SLAM incorporam uma combinação de algoritmos que melhor atendem à mais ampla gama de cenários.

Desafios de implementação SLAM

O processamento Visual SLAM é extremamente computacionalmente intensivo, colocando altas cargas em implementações tradicionais baseadas em CPU, levando a um consumo excessivo de energia e baixas taxas de quadros, com conseqüentes impactos na precisão e na vida útil da bateria. Os desenvolvedores de aplicativos SLAM emergentes exigem soluções que ofereçam níveis mais altos de integração e menor consumo de energia. Eles estão cada vez mais usando unidades de processamento de visão dedicadas (VPUs) em seus projetos. Um VPU é um tipo de microprocessador com uma arquitetura projetada especificamente para a aceleração de tarefas de visão de máquina, como SLAM, e que pode ser usado para descarregar o processamento de visão da CPU do aplicativo principal. VPUs, como CEVAs CEVA-XM6, figura 3, incluem recursos como baixo consumo de energia, ALUs fortes, recursos MAC poderosos, acesso à memória de alto rendimento e instruções de visão dedicadas. Os dispositivos também suportam os poderosos recursos de ponto flutuante exigidos pelos aplicativos de processamento de imagem.


Figura 3:Unidade de processamento de visão CEVA XM6. (Fonte:CEVA)

Mesmo com VPUs, no entanto, o desenvolvedor de SLAM visual ainda deve superar vários desafios, pois a criação de código eficiente para os diferentes módulos SLAM é uma tarefa não trivial e também pode ser difícil fazer a interface da VPU com o processador principal.

A criação de código eficiente é crucial em aplicativos incorporados, onde a velocidade de execução e o consumo de energia devem ser otimizados. A codificação de módulos SLAM visuais é uma tarefa complexa, exigindo potencialmente a busca, armazenamento e manipulação de grandes quantidades de dados. Na correspondência de recursos, por exemplo, os descritores são armazenados na memória como vetores de 128 bits e, para combinar recursos em quadros consecutivos, 200 recursos devem ser comparados com 2.000 candidatos, levando a 400.000 operações de correspondência. A operação de correspondência obviamente requer uma grande quantidade de memória, mas também, onde o tamanho dos dados amostrados é pequeno, a alta sobrecarga de busca e formatação dos dados pode comprometer a eficiência do algoritmo codificado.

O ajuste de pacote é outro algoritmo que envolve álgebra linear complexa, envolvendo a manipulação de grandes matrizes. Existem várias técnicas para otimizar a codificação para esses e outros módulos VSLAM, mas a implementação dessas técnicas requer um alto nível de especialização em codificação de visão específica.

O gerenciamento de memória é outro desafio no processamento de imagens. Os dados capturados de uma imagem são normalmente carregados em locais de memória consecutivos e trabalhar com patches aleatórios em uma imagem significa lidar com dados que não estão armazenados em locais de memória consecutivos. As rotinas de software, que executam a correspondência de recursos, devem recuperar descritores de locais de memória não consecutivos, aumentando ainda mais a sobrecarga de configuração.

Ferramentas de desenvolvimento VSLAM

Com a velocidade de entrada no mercado crítica no ambiente de hoje, nem sempre é prático para um desenvolvedor reservar um tempo para adquirir as habilidades e o conhecimento necessários para implementar um código de processamento de visão eficiente. Felizmente, existem várias ferramentas para facilitar a aceleração de aplicativos SLAM de baixo custo; kits de desenvolvimento de aplicativos estão disponíveis, os quais fornecem uma combinação de bibliotecas de software específicas para visão, hardware otimizado e ferramentas de integração para permitir ao desenvolvedor descarregar facilmente as tarefas específicas de visão da CPU para a VPU.

O CEVA SLAM SDK, figura 4, é um exemplo importante desse conjunto de ferramentas de desenvolvimento de aplicativos.


Figura 4:O CEVA SLAM SDK. (Fonte:CEVA)

Com base no hardware de processador CEVA XM6 DSP e CEVA NeuPro AI, o CEVA SLAM SDK permite a integração eficiente de implementações SLAM em sistemas embarcados de baixo consumo de energia. O SDK apresenta uma série de blocos de construção, incluindo bibliotecas de processamento de imagem que fornecem código eficiente para detecção e correspondência de recursos, bem como ajuste de pacote. Ele também fornece suporte para álgebra linear, resolução de equações lineares, resolução rápida de equações esparsas e manipulação de matrizes.

O hardware CEVA XM6 é otimizado para processamento de imagens com recursos inovadores, como a instrução de carregamento paralelo, que trata do problema de acesso à memória não consecutiva, e também uma instrução exclusiva e dedicada para executar o cálculo da Distância de Hamming. O SDK também inclui uma interface de CPU detalhada, permitindo ao desenvolvedor integrar facilmente a funcionalidade de processamento de visão com a CPU do aplicativo principal.

Como ilustração do desempenho do SDK como ferramenta de desenvolvimento, uma implementação de referência de um módulo de rastreamento SLAM completo rodando a 60 quadros por segundo foi medida para ter um consumo de energia de apenas 86mW.

Conclusão

Os sistemas Visual SLAM estão ganhando popularidade em uma ampla gama de aplicações, como robôs agrícolas e drones. Existem vários métodos alternativos para a implementação de SLAM visual, mas, com a crescente implementação em aplicativos embarcados, a eficiência da codificação e o baixo consumo de energia são fatores críticos.

Embora seja comum que os desenvolvedores usem VPUs para descarregar da CPU principal as tarefas de processamento de visão com uso intensivo de computação, desafios significativos permanecem para produzir código eficiente e também para gerenciar a interface entre VPU e CPU.

Com o tempo de lançamento no mercado como um fator importante, os desenvolvedores podem acelerar o desenvolvimento do produto aproveitando os recursos integrados aos kits de ferramentas de desenvolvimento específicos do SLAM, como o CEVA SLAM SDK.

Integrado

  1. O papel da extrusão em aplicativos de impressão 3D
  2. Aplicações de IA na cadeia de suprimentos global
  3. Todas as aplicações dos pigmentos de ftalocianina
  4. Todas as aplicações de corantes básicos
  5. Todas as aplicações do pigmento azul
  6. O Desenvolvimento de Plásticos Modernos
  7. Como selecionar um controlador
  8. As aplicações de vibradores industriais
  9. Indústria 4.0:o desenvolvimento de segurança cibernética exclusiva
  10. O impacto do gerenciamento visual no setor