BR112021004229A2 - dispositivo e método para realizar localização e mapeamento simultâneos - Google Patents

dispositivo e método para realizar localização e mapeamento simultâneos Download PDF

Info

Publication number
BR112021004229A2
BR112021004229A2 BR112021004229-6A BR112021004229A BR112021004229A2 BR 112021004229 A2 BR112021004229 A2 BR 112021004229A2 BR 112021004229 A BR112021004229 A BR 112021004229A BR 112021004229 A2 BR112021004229 A2 BR 112021004229A2
Authority
BR
Brazil
Prior art keywords
graph
frame
sequence
processing stage
image
Prior art date
Application number
BR112021004229-6A
Other languages
English (en)
Inventor
Miguel CRISTOBAL
Panji Setiawan
Original Assignee
Huawei Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co., Ltd. filed Critical Huawei Technologies Co., Ltd.
Publication of BR112021004229A2 publication Critical patent/BR112021004229A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/579Depth or shape recovery from multiple images from motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/74Determining position or orientation of objects or cameras using feature-based methods involving reference images or patches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Image Analysis (AREA)
  • Navigation (AREA)
  • Studio Devices (AREA)
  • Control Of Position, Course, Altitude, Or Attitude Of Moving Bodies (AREA)

Abstract

DISPOSITIVO E MÉTODO PARA REALIZAR LOCALIZAÇÃO E MAPEAMENTO SIMULTÂNEOS. As modalidades da invenção referem-se ao campo técnico de localização e mapeamento simultâneos (SLAM). Em particular, um dispositivo e método são fornecidos para realizar SLAM. O dispositivo compreende pelo menos um processador configurado para realizar o SLAM, particularmente para: pré-processar, em um primeiro estágio de processamento, uma sequência de dados recebida incluindo múltiplas imagens gravadas por uma câmera e leituras de sensor a partir de múltiplos sensores, a fim de obter uma sequência de quadros. Cada quadro da sequência de quadros inclui um conjunto de recursos visuais relacionado a uma das imagens em uma determinada instância de tempo e leituras de sensor a partir dessa instância de tempo. Além disso, para processar sequencialmente, em um segundo estágio de processamento, cada quadro da sequência de quadros com base no conjunto de recursos visuais e as leituras de sensor incluídas nesse quadro, a fim de gerar um gráfico de mapeamento de sequência. Por fim, fundir, em um terceiro estágio de processamento, o gráfico de mapeamento de sequência com pelo menos um outro gráfico, a fim de gerar ou atualizar um gráfico completo.

Description

DISPOSITIVO E MÉTODO PARA REALIZAR LOCALIZAÇÃO E MAPEAMENTO SIMULTÂNEOS CAMPO TÉCNICO
[001]A presente invenção se refere ao campo técnico de Localização e Mapeamento Simultâneos (SLAM). Em particular, a invenção fornece um dispositivo e método para realizar SLAM. Desse modo, o dispositivo e o método são capazes de combinar imagens de câmera com múltiplas leituras de sensor para realizar o SLAM.
FUNDAMENTOS
[002]A próxima geração de segurança e automação de veículos dependerá do posicionamento ou localização precisa, mas o posicionamento baseado no Sistema de Posicionamento Global (GPS) é dificultado por bloqueios frequentes do sinal do GPS, mesmo em situações normais de direção. Um dos principais problemas técnicos enfrentados pelo posicionamento é a criação do mapa, ou então conhecido como mapeamento. Para ter um mapeamento bem-sucedido, é necessário um posicionamento ou localização. Portanto, é obrigatório realizar o chamado SLAM.
[003]Os métodos de SLAM convencionais com câmeras estéreo são, por exemplo, o ORB-SLAM2 e o Stereo LSD-SLAM, que pertencem aos métodos baseados em recurso e diretos, respectivamente (https://medium.com/@j.zijlmans/lsd-slam- vs-orb-slam2-a-literature-based-comparison-20732df431d). A presente invenção se refere ao método baseado em recurso.
[004]A extensão dos sensores de combinação de SLAM ainda é um tópico de pesquisa aberto. Por exemplo, em uma primeira abordagem (R. Mur-Artal e JD Tardós, "Visual-Inertial Monocular SLAM With Map Reuse", IEEE Robotics and Automation
Letters, vol. 2, no. 2, pp. 796-803, abril de 2017) um ORB- SLAM monocular foi combinado com uma Unidade de Medição Inercial (IMU). Em uma segunda abordagem (M. Lhuillier, "Incremental Fusion of Structure-from-Motion and GPS Using Constrained Bundle Adjustments", IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 34, no. 12, pp. 2489-2495, dezembro de 2012), uma técnica de ajuste de pacote (BA) - semelhante ao ORB-SLAM - foi combinada com um GPS.
[005]Na primeira abordagem acima, a arquitetura ORB-SLAM é modificada para incluir a leitura de IMU no Rastreamento, Ajuste de Pacote Local (LBA) e Ajuste de Pacote Completo. Os resultados mostram que o ORB-SLAM monocular com escala conhecida tem um desempenho melhor do que o ORB-SLAM monocular visual-inercial.
[006]Na segunda abordagem acima, existem dois BAs, ou seja, o BA padrão e o BA de Fusão. O BA Padrão minimiza o erro de reprojeção de recursos de ponto 3D, e os resultados deste BA são usados no BA de Fusão, onde o GPS está incorporado. A abordagem inclui três métodos propostos, cada um com seu próprio foco. O primeiro método é minimizar a reprojeção e os erros de GPS como uma soma das diferenças quadradas, os outros dois métodos estão usando a otimização de termo de barreira para ou o erro de reprojeção ou o erro do GPS. Os resultados mostram que a otimização de termo de barreira funciona melhor do que o primeiro método.
[007]No entanto, até agora o problema de combinar múltiplos sensores (por exemplo, GPS e IMU) com SLAM não foi resolvido. Além disso, uma arquitetura de processamento distribuída para SLAM ainda não foi explorada.
Consequentemente, até agora nenhuma vantagem dos chamados algoritmos de contribuição colaborativa (“crowdsourcing”) foi aproveitada.
SUMÁRIO
[008]Tendo em vista o problema acima mencionado, as modalidades da invenção visam melhorar as abordagens de SLAM convencionais. Um objetivo é melhorar o processo de mapeamento baseado em recurso em termos de modularidade e estendê-lo para incluir múltiplos sensores, particularmente para incluir GPS e IMU. Outro objetivo é a operação distribuída em tempo real. Em particular, deve ser aproveitado um algoritmo de contribuição colaborativa, no qual, por exemplo, múltiplos dispositivos (por exemplo, veículos) contribuem para a criação do mapa, carregando as respectivas leituras de sensor, por exemplo, para uma nuvem.
[009]O objetivo é alcançado por modalidades da invenção, conforme fornecido nas reivindicações independentes anexas. Implementações vantajosas das modalidades da invenção são ainda definidas nas reivindicações dependentes.
[0010]Um primeiro aspecto da invenção fornece um dispositivo para realizar SLAM, o dispositivo compreendendo pelo menos um processador configurado para: pré-processar, em um primeiro estágio de processamento, uma sequência de dados recebida incluindo múltiplas imagens gravadas por uma câmera e leituras de sensor a partir de múltiplos sensores, a fim de obter uma sequência de quadros, em que cada quadro inclui um conjunto de recursos visuais relacionado a uma das imagens em uma determinada instância de tempo e as leituras de sensor dessa instância de tempo, processam sequencialmente, em um segundo estágio de processamento,
cada quadro da sequência de quadros com base no conjunto de recursos visuais e as leituras de sensor incluídas nesse quadro, a fim de gerar um gráfico de mapeamento de sequência, e mesclar, em um terceiro estágio de processamento, o gráfico de mapeamento de sequência com pelo menos um outro gráfico, a fim de gerar ou atualizar um gráfico completo.
[0011]Uma "instância de tempo" pode ser um ponto determinado ou um intervalo no tempo, ou pode ser um ponto no tempo ou intervalo de tempo em relação a algum ponto de partida no tempo. Por exemplo, a “instância de tempo” pode ser um intervalo de tempo entre imagens consecutivas na sequência de dados. Ou seja, uma primeira imagem na sequência de dados pode ser obtida em um primeiro ponto no tempo e uma segunda imagem na sequência de dados pode ser obtida em um segundo ponto no tempo, e uma terceira imagem em um terceiro ponto no tempo. Nesse caso, a "instância de tempo" da segunda imagem pode ser o intervalo de tempo entre o primeiro ponto no tempo e o segundo ponto no tempo. As leituras de sensor daquela “instância de tempo”, ou seja, da mesma “instância de tempo” da segunda imagem, neste caso incluem todas as leituras de sensor entre o primeiro ponto no tempo e o segundo ponto no tempo. Notavelmente, é possível que não haja leitura do sensor durante uma “instância de tempo”, por exemplo, se os sensores trabalham em uma frequência mais lenta do que uma câmera tirando as imagens. Mais adiante, a “instância de tempo” da terceira imagem começa no segundo ponto no tempo.
[0012]A modularidade do dispositivo, ou seja, a separação em três estágios de processamento, permite a implementação de SLAM em tempo real e distribuído. A separação particular do segundo e terceiro estágios de processamento permite a obtenção de informações a partir de múltiplas sequências de dados. O terceiro estágio de processamento pode corrigir as leituras de sensor, por exemplo, pode corrigir a polarização de GPS, uma vez que múltiplas sequências de dados sobrepostas (por exemplo, de diferentes dispositivos) estão disponíveis. As leituras de sensor permitem fundir, por exemplo, leituras de GPS e IMU com as informações visuais obtidas por uma ou mais câmeras. A estrutura dos quadros resulta ainda em menos dados que precisam ser passados para o próximo estágio de processamento (em comparação com a passagem de toda a imagem).
[0013]Em uma forma de implementação do primeiro aspecto, um conjunto de recursos visuais inclui um conjunto de recursos de imagem que compreende um ou mais pontos chave 2D extraídos a partir da imagem relacionada, descritores correspondentes aos pontos chave 2D, e informações de disparidade e/ou profundidade da pontos chave 2D.
[0014]Assim, os quadros incluem menos informações do que a imagem inteira, mas incluem informações visuais características suficientes para permitir a realização do mapeamento de sequência. A vantagem é que os quadros pré- processados, que serão usados no segundo estágio de processamento, podem ser armazenados, o que facilita, por exemplo, os processos de depuração. Além disso, menos informações precisam ser transmitidas, por exemplo, em um dispositivo distribuído a partir de um processador para outro. As informações de disparidade e/ou profundidade permitem o cálculo de pontos chave 3D com base nos respectivos pontos chave 2D.
[0015]Em uma forma de implementação adicional do primeiro aspecto, o pelo menos um processador é configurado para, no primeiro estágio de processamento: extrair uma imagem a partir da sequência de dados, retificar a imagem, extrair pontos chave 2D a partir da imagem retificada, e gerar um conjunto de recursos de imagem com base nos pontos chave 2D extraídos.
[0016]Em uma forma de implementação adicional do primeiro aspecto, o pelo menos um processador é configurado para, no primeiro estágio de processamento: atribuir um ou mais rótulos semânticos aos pixels da imagem retificada, e filtrar o conjunto de recursos de imagem com base nos rótulos semânticos para remover pontos chave 2D a partir do conjunto de recursos de imagem relacionados a objetos rotulados como objetos dinâmicos.
[0017]Isso remove pontos chave 2D indesejados e, consequentemente, ajuda a reduzir a carga de processamento.
[0018]Em uma forma de implementação adicional do primeiro aspecto, o pelo menos um processador é ainda configurado para, no primeiro estágio de processamento: gerar um conjunto de recursos visuais por adicionar um descritor de saco de palavras ao conjunto de recursos de imagem filtrado e, opcionalmente, uma tabela hash para pesquisar os pontos chave 2D, e gerar um quadro por combinar o conjunto de recursos visuais com leituras de sensor a partir da mesma instância de tempo da imagem.
[0019]Isso adiciona mais informações ao conjunto de recursos visuais. A tabela hash pode aumentar ainda mais a velocidade e a robustez do processo. Além disso, as informações de sensor podem ser implementadas desta forma.
[0020]Em uma forma de implementação adicional do primeiro aspecto, o pelo menos um processador é configurado para, no segundo estágio de processamento: realizar rastreamento de câmera com base em um conjunto de recursos visuais incluído em um quadro por corresponder pontos chave 2D no conjunto de recursos visuais para pontos chave 3D localmente armazenados, a fim de obter uma pose de câmera associada ao quadro.
[0021]Em uma forma de implementação adicional do primeiro aspecto, o pelo menos um processador é configurado para: determinar se o quadro é um quadro chave com base em um número de pontos chave 2D correspondentes.
[0022]Em uma forma de implementação adicional do primeiro aspecto, o pelo menos um processador é ainda configurado para, no segundo estágio de processamento, se determinar que o quadro é um quadro chave: realizar um primeiro Ajuste de Pacote Local, LBA, com base na pose de câmera, a fim de obter informações de odometria visual e um gráfico de LBA, calcular uma pose de câmera fundida com base nas informações de odometria visual e as leituras de sensor incluídas no quadro, e realizar um segundo LBA com base na pose de câmera fundida e o gráfico de LBA, a fim de obter o gráfico de mapeamento de sequência.
[0023]Um processo de correspondência de recursos no primeiro LBA não é afetado, por exemplo, por leituras de sensor ruidosas, o que evita perdas internas e falhas de rastreamento. O segundo LBA permite a fusão, por exemplo, de GPS e/ou IMU com dados de odometria visual.
[0024]Em uma forma de implementação adicional do primeiro aspecto, o pelo menos um processador é ainda configurado para, no terceiro estágio de processamento: detectar a presença de um ou mais loops e/ou áreas de sobreposição compartilhadas entre o gráfico de mapeamento de sequência e o pelo menos um gráfico adicional, mesclar o gráfico de mapeamento de sequência e o pelo menos um gráfico adicional, a fim de obter um gráfico intermediário, e realizar uma otimização de gráfico no gráfico intermediário com base nos loops e/ou áreas sobrepostas detectados, a fim de obter o gráfico completo.
[0025]Por exemplo, uma polarização de GPS pode ser corrigida, se loops ou áreas sobrepostas estiverem disponíveis.
[0026]Em uma forma de implementação adicional do primeiro aspecto, pelo menos dois dos três estágios de processamento são realizados em processadores diferentes.
[0027]Isso permite um processamento distribuído do SLAM.
[0028]Em uma forma de implementação adicional do primeiro aspecto, o dispositivo é um dispositivo distribuído e inclui pelo menos um dispositivo terminal e pelo menos um dispositivo de rede, um processador do dispositivo terminal é configurado para realizar o primeiro estágio de processamento e transmitir a sequência de quadros obtida para o dispositivo de rede, e um processador do dispositivo de rede é configurado para realizar o segundo e o terceiro estágios de processamento.
[0029]Isso permite a implementação, por exemplo, de um sistema de automação de veículo. O pré-processamento pode ser feito em tempo real em um veículo.
[0030]Em uma forma de implementação adicional do primeiro aspecto, o processador do dispositivo terminal é ainda configurado para: realizar uma localização em tempo real com base na sequência de quadros obtida no primeiro estágio de processamento.
[0031]Assim, a localização em tempo real é separada da atualização de gráfico (mapa). Notavelmente, por uma questão de simplicidade, uma vez que geralmente há uma transformação rígida entre uma pose de câmera e uma pose de carro (se a câmera estiver instalada no carro), ambos os termos podem ser usados alternadamente porque qualquer uma das poses pode ser obtida diretamente dada a outra pose por meio da transformação rígida.
[0032]Em uma forma de implementação adicional do primeiro aspecto, o processador do dispositivo terminal é ainda configurado para: realizar a localização em tempo real de acordo com o segundo estágio de processamento descrito acima, em que o segundo LBA é substituído por um procedimento de rastreamento de fusão com base na pose de câmera fundida, o gráfico de LBA e um gráfico completo atual, a fim de obter uma pose de câmera atual.
[0033]Em uma forma de implementação adicional do primeiro aspecto, o dispositivo terminal está localizado em um veículo e o veículo inclui pelo menos uma câmera e múltiplos sensores.
[0034]Um segundo aspecto da invenção fornece um método para realizar SLAM, o método compreendendo: pré-processar, em um primeiro estágio de processamento, uma sequência de dados recebida incluindo múltiplas imagens gravadas por uma câmera e leituras de sensor a partir de múltiplos sensores, a fim de obter uma sequência de quadros, em que cada quadro inclui um conjunto de recursos visuais relacionado a uma das imagens em uma determinada instância de tempo e leituras de sensor a partir dessa instância de tempo, processar sequencialmente, em um segundo estágio de processamento, cada quadro da sequência de quadros com base no conjunto de recursos visuais e as leituras de sensor incluídas nesse quadro, a fim de gerar um gráfico de mapeamento de sequência, e mesclar, em um terceiro estágio de processamento, o gráfico de mapeamento de sequência com pelo menos um outro gráfico, a fim de gerar ou atualizar um gráfico completo.
[0035]Em uma forma de implementação do segundo aspecto, um conjunto de recursos visuais inclui um conjunto de recursos de imagem que compreende um ou mais pontos chave 2D extraídos a partir da imagem relacionada, descritores correspondentes aos pontos chave 2D, e informações de disparidade e/ou profundidade da pontos chave 2D.
[0036]Em uma forma de implementação adicional do segundo aspecto, o método compreende, no primeiro estágio de processamento: extrair uma imagem a partir da sequência de dados, retificar a imagem, extrair pontos chave 2D a partir da imagem retificada, e gerar um conjunto de recursos de imagem com base nos pontos chave 2D extraídos.
[0037]Em uma forma de implementação adicional do segundo aspecto, o método compreende, no primeiro estágio de processamento: atribuir um ou mais rótulos semânticos aos pixels da imagem retificada, e filtrar o conjunto de recursos de imagem com base nos rótulos semânticos para remover pontos chave 2D a partir do conjunto de recursos de imagem relacionado a objetos rotulados como objetos dinâmicos.
[0038]Em uma forma de implementação adicional do segundo aspecto, o método compreende ainda, no primeiro estágio de processamento: gerar um conjunto de recursos visuais por adicionar um descritor de saco de palavras ao conjunto de recursos de imagem filtrado e, opcionalmente, uma tabela hash para pesquisar os pontos chave 2D, e gerar um quadro por combinar o conjunto de recursos visuais com leituras de sensor a partir da mesma instância de tempo da imagem.
[0039]Em uma forma de implementação adicional do segundo aspecto, o método compreende, no segundo estágio de processamento: realizar rastreamento de câmera com base em um conjunto de recursos visuais incluído em um quadro por corresponder pontos chave 2D no conjunto de recursos visuais para pontos chave 3D armazenados localmente, a fim de obter uma pose de câmera associada ao quadro.
[0040]Em uma forma de implementação adicional do segundo aspecto, o método compreende: determinar se o quadro é um quadro chave com base em um número de pontos chave 2D correspondentes.
[0041]Em uma forma de implementação adicional do segundo aspecto, o método compreende ainda, no segundo estágio de processamento, se determinar que o quadro é um quadro chave: realizar um primeiro LBA com base na pose de câmera, a fim de obter informações de odometria visual e um gráfico de LBA, calcular uma pose de câmera fundida com base nas informações de odometria visual e as leituras de sensor incluídas no quadro, e realizar um segundo LBA com base na pose de câmera fundida e o gráfico de LBA, a fim de obter o gráfico de mapeamento de sequência.
[0042]Em uma forma de implementação adicional do segundo aspecto, o método compreende ainda, no terceiro estágio de processamento: detectar a presença de um ou mais loops e/ou áreas de sobreposição compartilhadas entre o gráfico de mapeamento de sequência e o pelo menos um gráfico adicional, mesclar o gráfico de mapeamento de sequência e o pelo menos um outro gráfico, a fim de obter um gráfico intermediário, e realizar uma otimização de gráfico no gráfico intermediário com base nos loops e/ou áreas sobrepostas detectados, a fim de obter o gráfico completo.
[0043]Em uma forma de implementação adicional do segundo aspecto, pelo menos dois dos três estágios de processamento são realizados em processadores diferentes.
[0044]Em uma forma de implementação adicional do segundo aspecto, o método é realizado em um dispositivo distribuído incluindo pelo menos um dispositivo terminal e pelo menos um dispositivo de rede, em que o dispositivo terminal realiza o primeiro estágio de processamento e transmite a sequência de quadros obtida para o dispositivo de rede, e o dispositivo de rede realiza o segundo e o terceiro estágios de processamento.
[0045]Em uma forma de implementação adicional do segundo aspecto, o dispositivo terminal realiza ainda uma localização em tempo real com base na sequência de quadros obtida no primeiro estágio de processamento.
[0046]Em uma forma de implementação adicional do segundo aspecto, o terminal realiza ainda a localização em tempo real de acordo com o segundo estágio de processamento descrito acima, em que o segundo LBA é substituído por um procedimento de rastreamento de fusão com base na pose de câmera fundida, o gráfico de LBA e um gráfico completo atual, a fim de obter uma pose de câmera atual.
[0047]Em uma forma de implementação adicional do segundo aspecto, o dispositivo terminal está localizado em um veículo e o veículo inclui pelo menos uma câmera e múltiplos sensores.
[0048]Com o método do segundo aspecto e suas formas de implementação, as vantagens e efeitos descritos acima para o dispositivo do primeiro aspecto e suas respectivas formas de implementação são alcançados.
[0049]Em resumo, as modalidades da invenção baseiam-se em várias melhorias, conforme descrito abaixo: • Arquitetura de software: A arquitetura de processamento do dispositivo (separação em três estágios de processamento) permite uma abordagem modular que pode ser usada para SLAM distribuído em tempo real. Desta forma, o gráfico completo (mapa global) pode sempre ser atualizado enquanto fazendo localização, e apenas os recursos extraídos precisam ser transmitidos em vez de toda a imagem (ou seja, menor taxa de dados). • A separação do mapeamento de sequência e otimização de gráfico final: o processo de mapeamento de uma sequência, que se concentra em ter uma saída precisa com base em informações visuais, é separado da atualização de gráfico completo (mapa global), que realizará a otimização geral final levando em consideração a disponibilidade de múltiplas sequências sobrepostas. Desta forma, todas as informações a partir de todas as sequências podem ser utilizadas de forma adequada devido à separação de processo em vez de haver um único processo na realização da atualização de gráfico. Além disso, a atualização de gráfico pode corrigir a polarização de GPS, uma vez que isso é observável devido à disponibilidade de múltiplas sequências sobrepostas.
• Múltipla fusão de sensor: dois ajustes de feixe durante o mapeamento de sequência são usados, em que o primeiro LBA é chamado de LBA padrão e o segundo funde a saída do primeiro LBA e uma pose de câmera fundida com base em, por exemplo, GPS, leituras de IMU e informações de odometria visual. O objetivo é garantir dois processos independentes separados de otimização de erro de reprojeção (feito no primeiro LBA) e a fusão de GPS/IMU antes de outra otimização no segundo LBA. Desta forma, o processo de correspondência de recursos no primeiro LBA não é afetado por leituras de GPS/IMU ruidosas. Em contraste com a segunda abordagem descrita acima, também as leituras de IMU são fundidas.
[0050]Deve ser notado que todos os dispositivos, elementos, unidades e meios descritos no presente pedido podem ser implementados nos elementos de software ou hardware ou qualquer tipo de combinação dos mesmos. Todos os passos que são realizados pelas várias entidades descritas no presente pedido, bem como as funcionalidades descritas a serem realizadas pelas várias entidades, pretendem significar que a respectiva entidade está adaptada ou configurada para realizar os respectivos passos e funcionalidades. Mesmo se, na seguinte descrição de modalidades específicas, uma funcionalidade ou passo específico a ser realizado por entidades externas não for refletido na descrição de um elemento detalhado específico dessa entidade que realiza esse passo ou funcionalidade específica, deve ficar claro para um versado na técnica que esses métodos e funcionalidades podem ser implementados nos respectivos elementos de software ou hardware, ou qualquer tipo de combinação dos mesmos.
BREVE DESCRIÇÃO DOS DESENHOS
[0051]Os aspectos descritos acima e as formas de implementação da presente invenção serão explicados na seguinte descrição de modalidades específicas em relação aos desenhos anexos, nos quais A Figura 1 mostra um dispositivo de acordo com uma modalidade da invenção.
[0052]A Figura 2 mostra um primeiro estágio de processamento de um dispositivo de acordo com uma modalidade da invenção.
[0053]A Figura 3 mostra um segundo estágio de processamento de um dispositivo de acordo com uma modalidade da invenção.
[0054]A Figura 4 mostra um terceiro estágio de processamento de um dispositivo de acordo com uma modalidade da invenção.
[0055]A Figura 5 mostra um dispositivo para processamento distribuído de acordo com uma modalidade da invenção.
[0056]A Figura 6 mostra a localização em tempo real em um dispositivo para processamento distribuído de acordo com uma modalidade da invenção.
[0057]A Figura 7 mostra um método de acordo com uma modalidade da invenção.
DESCRIÇÃO DETALHADA DAS MODALIDADES
[0058]A Figura 1 mostra um dispositivo 100 de acordo com uma modalidade da invenção. O dispositivo 100 é configurado para realizar SLAM, particularmente um método de SLAM baseado em recurso. A Figura 1 mostra a modularidade deste método de SLAM, que pode ser realizado em um processo de mapeamento off-line. Presume-se que múltiplas sequências de gravações estão disponíveis para serem processadas. O método de SLAM baseado em recurso realizado pelo dispositivo 100 é especificamente dividido em três estágios de processamento: um primeiro estágio de processamento 102 ("Pré- processamento"), um segundo estágio de processamento 104 ("Mapeamento de Sequência") e um terceiro estado de processamento 106 ("Atualização de gráfico”, também conhecida como “Atualização de mapa global”).
[0059]O dispositivo 100 compreende pelo menos um processador configurado para realizar os estágios de processamento 102, 104 e 106, respectivamente. Pelo menos dois dos três estágios de processamento 102, 104 e 106 podem ser realizados em diferentes processadores do dispositivo
100. O dispositivo 100 pode, neste caso, ser um dispositivo de distribuição (por exemplo, dispositivo terminal e dispositivo de rede). Também é possível que cada estágio de processamento 102, 104 e 106 seja realizado em um processador diferente.
[0060]No primeiro estágio de processamento 102, uma sequência de dados recebida 101 é pré-processada. A sequência de dados 101 inclui pelo menos múltiplas imagens gravadas por uma câmera (ou gravadas por múltiplas câmeras) e leituras de sensor a partir de múltiplos sensores 501 (ver, por exemplo, Figura 5), a fim de obter uma sequência de quadros
103. Os múltiplos sensores podem incluir GPS e IMU. A sequência de quadros 103 compreende um ou mais quadros, que são dispostos em uma sequência. Cada quadro da sequência de quadros 103 inclui um conjunto de recursos visuais, que está relacionado a uma das imagens na sequência de dados 101, a saber, uma imagem tirada em uma determinada instância de tempo, e inclui ainda leituras de sensor 502 (ver, por exemplo, Figura 5) a partir dessa instância de tempo. Ou seja, a sequência de dados 101 inclui imagens que são correlacionadas no tempo com as leituras de sensor 502. Uma instância de tempo pode, assim, ser um ponto determinado ou um intervalo no tempo, ou pode ser um ponto ou intervalo de tempo em relação a algum ponto de partida.
[0061]No segundo estágio de processamento 104, cada quadro da sequência de quadros 103 é sequencialmente processado com base no conjunto de recursos visuais e nas leituras de sensor 502 incluídas nesse quadro, a fim de gerar um gráfico de mapeamento de sequência 105. Um conjunto de recursos visuais pode incluir um conjunto de recursos de imagem compreendendo um ou mais pontos chave 2D extraídos a partir da imagem relacionada, descritores correspondentes aos pontos chave 2D, e informações de disparidade e/ou profundidade dos pontos chave 2D.
[0062]No terceiro estágio de processamento 106, o gráfico de mapeamento de sequência 105 é mesclado com pelo menos um outro gráfico 400 (ver, por exemplo, Figura 4, onde é mesclado com um "Gráfico Inicial"), a fim de gerar ou atualizar um gráfico completo 107 (também referido como “Mapa completo” ou “Mapa global”).
[0063]A Figura 2 mostra um exemplo do primeiro estágio de "Pré-processamento" 102 em mais detalhes. Este estágio de processamento 102 tem o objetivo de processar uma certa sequência de dados gravada 101 (sequência de dados i) para emitir uma sequência de quadros 103. Assim, por exemplo, a cada tempo discreto t um quadro consiste em um conjunto de recursos visuais correspondente a uma imagem na sequência de dados 101 no tempo t e as leituras de sensor 502 (por exemplo, leituras de GPS e IMU) entre, por exemplo, os tempos (t-1, t] incluídos na sequência de dados 101. Pode ser assumido que a sequência de dados 101 contém imagens estéreo. Um conjunto de recursos visuais pode consistir em um conjunto de recursos de imagem (por exemplo, um conjunto de recursos estéreo no caso de imagens estéreo) e um descritor de saco de palavras (BoW) após a remoção de pontos correspondentes aos objetos dinâmicos. Além disso, uma tabela hash pode ser criada para permitir a pesquisa de pontos chave em uma região específica da imagem. Um conjunto de recursos estéreo pode incluir pontos chave 2D estéreo e seus descritores correspondentes extraídos a partir da imagem estéreo por meio de um método de extrator de recurso, como ORB, e pode incluir ainda a disparidade e profundidade para cada combinação estéreo, que forma os pontos chave 3D. A vantagem é ser capaz de armazenar os quadros pré-processados da sequência de quadros 103 a serem usados no próximo estágio de processamento 104. Isso facilitará o processo de depuração e permite armazenar apenas informações relevantes em vez de toda a imagem.
[0064]O processo no primeiro estágio de processamento 102 começa extraindo uma imagem (aqui exemplarmente uma imagem estéreo) de uma sequência de dados gravada 101 por meio de uma unidade de extrator de imagem 200. A imagem estéreo é então processada por uma unidade de retificação 201, a fim de transformar a imagem em um plano de imagem comum para produzir aqui uma imagem estéreo retificada. Em uma ramificação de processamento, a imagem estéreo retificada é então alimentada para uma unidade de extrator de recurso 204 para extrair pontos chave 2D em cada imagem (ou seja, esquerda e direita). Esses pontos chave 2D são então adicionalmente processados por um procedimento de correspondência estéreo para encontrar os pontos chave 2D que têm correspondência estéreo. Finalmente, um procedimento de reconstrução 3D é feito, a fim de colocar esses pontos chave 2D em um sistema de coordenadas 3D com base nas informações de disparidade/profundidade obtidas a partir da correspondência estéreo. Pontos chave 2D, que não têm correspondência estéreo, ainda podem ser mantidos. Notável, ao extrair os pontos chave 2D, os descritores de recurso correspondentes também podem ser extraídos e podem ser incluídos na saída, ou seja, no conjunto de recursos estéreo.
[0065]Na outra ramificação de processamento, a imagem retificada é alimentada em uma unidade de classificador 203 usando um conceito convencional para emitir um conjunto de rótulos semânticos atribuídos a pixels de imagem da imagem retificada. Pode ser útil realizar uma redução da resolução da imagem retificada de entrada para permitir um processamento mais rápido.
[0066]Além disso, uma unidade de filtragem de objeto dinâmica 205, então, processa o recurso estéreo de entrada definido por remover pontos chave 2D, que correspondem aos rótulos semânticos pertencentes a objetos dinâmicos, como carros, bicicletas, motocicletas. Além disso, uma unidade de descritor de aparência 206 é usada para adicionar mais informações ao conjunto de recursos estéreo filtrado de entrada, particularmente anexando o descritor BoW e, opcionalmente, uma tabela hash, que é construída para aumentar ainda mais a velocidade e robustez, para finalmente completar o conteúdo do conjunto de recursos visuais. Se houver uma restrição no tamanho dos dados da sequência do quadro de saída, o descritor de aparência pode ser uma unidade de processamento opcional. O processamento real pode simplesmente ser feito diretamente na unidade que requer as informações, por exemplo, a tabela hash pode ser feita no rastramento de câmera 301 na Figura 3 e o descritor BoW em detecção e mesclagem de loop 401 na Figura 4.
[0067]Como o último passo, as leituras de sensor extraídas (aqui exemplarmente leituras de GPS e IMU) entre duas imagens consecutivas conforme processadas por um analisador de GPS/IMU 202, e são anexadas ao recurso visual definido por uma unidade de contêiner 207 para formar um quadro de saída. Uma vez que um processamento off-line pode envolver o uso de processamento de múltiplas rotinas em algumas ou todas as unidades de processamento acima, a sequência de saída pode ser garantida para formar uma sequência de quadros ordenada 103 com base em horodatas.
[0068]A Figura 3 representa um exemplo do segundo estágio de processamento 104, ou seja, "mapeamento de sequência", em mais detalhes, em que os quadros da sequência de quadros 103 devem ser processados sequencialmente. O objetivo deste estágio de processamento 104 é criar um "gráfico parcial" (ou "mapa parcial") ou "gráfico de mapeamento de sequência" a partir de uma sequência de quadros de entrada 103. Um gráfico consiste geralmente em vértices e arestas, e existem dois tipos de vértices do gráfico de mapeamento de sequência, ou seja, a câmera posa com os quadros chave e os pontos chave 3D correspondentes. Um quadro chave simplesmente se refere a um quadro que foi selecionado para fazer parte do gráfico. As arestas estão simplesmente mostrando uma relação entre esses dois tipos de vértices. Tecnicamente, cada aresta relaciona um ponto chave 3D a uma pose de câmera por calcular o erro de reprojeção do ponto para uma determinada pose de câmera. Se o erro de reprojeção estiver abaixo de um certo limiar, a aresta é estabelecida.
[0069]Em uma ramificação de processamento do segundo estágio de processamento 104, o conjunto de recursos visuais do quadro no tempo t é extraído por uma unidade analisador de recurso visual 300, cujo conjunto de recursos visuais é então processado localmente pelo rastreamento de câmera 301. Aqui, a correspondência entre os pontos chave 2D do quadro atual e os pontos chave 3D de mapa local armazenados são feitos por reprojetar os pontos chave 3D de mapa local no plano 2D de imagem atual. Para habilitar isso, a pose de câmera de imagem atual é prevista (por exemplo, empregando um modelo de movimento para as poses de câmera anteriores) e um algoritmo iterativo é então realizado para modificar lentamente a pose de câmera a partir de uma pose inicial prevista para minimizar o erro de reprojeção. A filtragem de discrepâncias também pode ser feita durante esta iteração, por exemplo, rejeitando pontos que têm seus erros mínimos de reprojeção acima de um certo limiar de erro de reprojeção. Isso fará com que a saída final seja um conjunto de recursos visuais filtrado e uma pose de câmera otimizada. O conjunto de recursos visuais filtrado pode conter informações adicionais, que podem ser a correspondência entre os pontos chave 2D do quadro e os pontos chave 3D de mapa local.
[0070]Uma vez obtida a pose de câmera otimizada, a decisão de inserir um quadro no gráfico de LBA padrão pode ser tomada considerando o número de pontos rastreados e não rastreados. Quando uma determinada condição é atendida, o quadro é inserido no gráfico e denominado quadro chave, que possui uma pose de câmera correspondente. Os pontos chave 2D no quadro, que não têm correspondência com os pontos chave 3D de mapa local, são inseridos no gráfico como novos pontos chave 3D de mapa local e suas localizações 3D são retiradas dos pontos chave 3D do quadro. Notavelmente, aqueles pontos chave 2D do quadro, que não têm nenhum ponto chave 3D (correspondência estéreo) podem ser descartados. A pose de câmera otimizada correspondente está formando a estimativa de pose inicial para o próximo passo em que o gráfico é otimizado localmente por meio do ajuste de pacote local padrão 303. "Local" aqui implica que há uma janela de observação temporal, que se estende ao passado, e “padrão” aqui implica o uso de um sensor de câmera apenas, e BA é um método que encontra poses de câmera e localizações de pontos chave 3D otimizados, que minimizam o erro de reprojeção devido às informações de conjunto de recursos visuais filtradas.
[0071]A saída final é um gráfico otimizado localmente e a pose de câmera otimizada do novo quadro chave é enviada a uma unidade de filtro Kalman estendido (EKF) 305 como uma informação de odometria visual (alterações de pose de câmera relativas). A informação de odometria visual é então fundida com as leituras de sensor (aqui a partir do GPS e IMU conforme obtido a partir da sequência de quadros 103 por uma unidade de analisador de GPS/IMU 302), que são tomadas entre as imagens passadas e atuais, pela unidade de EKF 305, a fim de produzir uma pose de câmera fundida.
[0072]Quando o quadro não é considerado como um quadro chave, o processo continua por contornar a unidade de LBA padrão 303 e encaminha a pose de câmera otimizada como a informação de odometria visual para a unidade de EKF 304. A unidade de EKF 304 usa esta informação para atualizar seu estado interno e nenhum processo adicional é necessário (nenhum LBA de fusão 305 também). Todo o processo de mapeamento de sequência 104 continua com o processamento do próximo quadro t + 1.
[0073]A pose de câmera fundida e o gráfico de LBA padrão obtidos anteriormente são alimentados no LBA de fusão 305 para emitir um gráfico de LBA de fusão otimizado ou gráfico de mapeamento de sequência 105. Este gráfico 105 é diferente em comparação com o gráfico de ORB-SLAM e o gráfico de LBA padrão mencionado acima, uma vez que seus quadros chave correspondem às poses de câmera otimizadas em vez de poses de câmera depois de levar em conta as leituras de sensor, enquanto ainda mantém as informações de pontos chave 3D. Então, como na segunda abordagem mencionada acima, um termo de barreira é usado para o erro de reprojeção. Isso evita que o sistema se ajuste demais a, por exemplo, dados de GPS e IMU, e esteja sujeito a perdas internas e falhas de rastreamento. Em contraste com a segunda abordagem, a unidade de EKF 304 processa múltiplas leituras de sensor, isto é, aqui exemplarmente ambas as leituras de GPS e IMU, em vez de apenas GPS.
[0074]A otimização de LBA de fusão (FLBA) proposta na unidade 305 pode ser a seguinte: ∗ = argmin + −
∗ em que é os parâmetros otimizados, ou seja, poses de câmera locais e pontos chave 3D locais, é uma variável constante, é o termo de limiar de barreira que é ligeiramente maior do que o LBA padrão de erro residual , é o termo de erro de reprojeção geral e é o termo de erro de EKF. = Δ Δ %∈&' ∪&) !∈#$
[0075]Em que * é um conjunto de quadros chave local, * é um conjunto de quadros chave covisíveis (quadros chave que também estão observando os pontos chave locais), +% é um conjunto de pontos chaves 3D observados a partir de um quadro chave k, é a norma de Huber, Δ é o termo de erro de reprojeção individual para ponto chave i, é o inverso da covariância de erro de pixel, e denota uma operação de transposição, =, , ,≥0 >? D = 1log 4 5 6789:;,< = 8@A % B1
C %∈&' em que log 4 5 é o logaritmo de grupo Euclidiano padrão 3D retornando uma representação de álgebra de Lie como um vetor 6-dimensional, 89:;,< é a matriz de transformação entre a origem de mapa e a pose de câmera estimada pelo EKF para o quadro chave k, k, 8@A % é a matriz de transformação entre o mapa de origem e a pose de câmera prevista dependendo de %, Σ é a covariância de erro de EKF e ‖G‖DC = G Σ >? G.
[0076]Em uma modalidade, um segundo estágio de processamento simplificado 104 pode ser obtido excluindo a unidade de LBA padrão 303, portanto, nenhuma entrada de odometria visual para a unidade de EKF 304 é necessária.
Além disso, a saída da unidade de rastreamento de câmera 301, ou seja, conjunto de recursos visuais filtrado e pose de câmera otimizada, vai diretamente para a unidade de LBA de fusão 305 que realizará a otimização sem o termo de barreira da seguinte forma: ∗ = argmin +
[0077]A unidade de LBA de fusão 305 emite adicionalmente os pontos chave 3D de mapa local que serão alimentados na unidade de rastreamento de câmera 301. Este processamento simplificado pode ter um benefício computacional em troca de uma desvantagem que torna o processamento sujeito a perda interna e falhas de rastreamento.
[0078]Um exemplo do estágio final de processamento 106, ou seja, a "Atualização de gráfico" ou " Atualização de mapa global", é mostrado em mais detalhes na Figura 4, com o objetivo de permitir a fusão de múltiplos gráficos de mapeamento de sequência 105 em um gráfico completo unificado 107 (também conhecido como "Mapa Global"). A principal tarefa deste estágio de processamento 106 é detectar a presença de loops ou áreas de sobreposição compartilhadas entre vários gráficos de mapeamento de sequência de entrada 105 em uma unidade de detecção e mesclagem de loop 401 e realizar uma otimização nessas áreas detectadas em uma unidade de otimização de gráfico completa 402. O descritor BoW junto com as leituras de sensor são usados para extrair os quadros chave candidatos para habilitar a detecção de loop. O gráfico intermediário é simplesmente um gráfico não otimizado como resultado da fusão dos pontos chave 3D em outro gráfico 400 (aqui "Gráfico Inicial") e o gráfico de mapeamento de sequência 105. A disponibilidade de múltiplas sequências sobrepostas facilita a correção de, por exemplo, polarização de GPS.
[0079]A equação de otimização de gráfico completa proposta pode ser a seguinte: { &I , J} = argmin +L ,J ,J onde b é o termo de polarização e L é uma constante, = Δ Δ %∈&'MMN !∈#$ onde * OOP é um conjunto de quadros chave na área de gráfico de sobreposição estendida, −1 D J% − J%>? D ,J = QRlog4 5 789:; J% = 8TU V R W + X? R R C Y+1 % ∈*Z[[\ + XD ‖J% ‖D onde T^_` bb é a matriz de transformação entre a origem de mapa e a pose de câmera estimada por EKF depois de considerar a polarização para o quadro chave k, α? e αD são constantes, e n é o número de quadros ignorados entre o quadro chave atual e anterior.
[0080]De preferência, os quadros chave redundantes são removidos, a fim de evitar que a complexidade do gráfico aumente substancialmente. Notavelmente, o termo de barreira não foi usado para esta otimização devido à razão de complexidade computacional, no entanto, ele poderia ser facilmente introduzido como no LBA de fusão quando permitido.
[0081]Agora que o processo de mapeamento off-line foi descrito, um SLAM distribuído em tempo real proposto pode ser derivado como mostrado na Figura 5. Para facilitar a operação em tempo real do método de SLAM proposto realizado pelo dispositivo 100, a arquitetura descrita anteriormente utilizável para o mapeamento off-line (ou seja, os estágios de processamento 102, 104 e 106) pode ser reorganizada na seguinte arquitetura.
[0082]Em primeiro lugar, o primeiro estágio de processamento 102 ("Pré-processamento") pode ser modificado para receber entradas diretamente dos sensores 501 (por exemplo, câmera estéreo, GPS e IMU) e para realizar o processo em tempo real ("Pré-processamento em tempo real”). O primeiro estágio de processamento 102 pode ser realizado em um dispositivo terminal 500, por exemplo, em um veículo.
[0083]A sequência de quadros de saída 103, que é obtida após um certo período de tempo, pode então ser transmitida pelo dispositivo terminal 500 através de uma rede para um dispositivo de rede 510, por exemplo, um servidor de nuvem, para realizar o segundo e terceiro estágios de processamento 104 e 106 (“Mapeamento de sequência” e “Atualização de gráfico global”). Dado o fato de que pode haver várias entradas coletadas simultaneamente pelo dispositivo de rede 510 de diferentes dispositivos terminais 500 (ou seja, processamento distribuído e métodos de contribuição colaborativa (“crowdsourcing”)), um processo inteligente pode ser iniciado, o qual é capaz de atribuir processos de alta prioridade às sequências que contêm nova informação. A saída de gráfico completo atualizado 107 (Mapa Global) pelo terceiro estágio de processamento 106 pode então ser armazenada em um servidor de mapa 511, e pode estar disponível para ser baixada por qualquer dispositivo terminal 510, cliente ou veículo que deseja realizar, por exemplo, a Localização.
[0084]Em um estágio de processamento de localização em tempo real 503, assim que o "Pré-processamento" 102 emite um quadro t da sequência de quadros 103 como resultado do processamento das leituras de sensor 502 correspondentes ao tempo t, como mostrado na Figura 6, a análise de dados pode ser realizada como no segundo estágio de processamento 104, a saber por uma unidade de GPS/IMU e de analisador de recurso visual 300. Esta análise de dados também pode ser ignorada, se o primeiro estágio de processamento 102 emitir diretamente os dados separadamente. A principal mudança no estágio de processamento de localização em tempo real 503 (em comparação com o segundo estágio de processamento 104) é a presença de rastreamento de fusão 600 (ver Figura 6) em vez do LBA de fusão 305 (ver Figura 3). O rastreamento de fusão 600 produz uma pose de câmera otimizada levando em consideração todas as entradas, ou seja, pose de câmera fundida, “Mapa global” (ou gráfico completo) e o gráfico de LBA padrão local. Para cada quadro de entrada, o rastreamento de fusão 600 sempre produz uma pose estimada de câmera, independentemente de o quadro ser considerado um quadro chave ou não.
[0085]Na prática, não é necessário usar toda a região do Mapa Global para realizar uma localização, uma região particular de interesse deve ser suficiente, por exemplo, uma região dentro de uma leitura de sensor atual (por exemplo, leitura de GPS). A obtenção do último gráfico completo 107 (também referido como Mapa Global) correspondente à região particular de interesse a partir do servidor de mapa 511 deve manter o dispositivo terminal 500 bem-informado com as últimas atualizações ou alterações, que podem ser úteis em situações como congestionamentos de tráfego, acidentes, obras de construção de estradas.
[0086]Neste caso, a polarização de GPS atual também pode ser corrigida durante a localização. O rastreamento de fusão 600 pode ser descrito como: {d∗ , J∗ } = argmin + d, J d,J − d Onde d∗ é uma pose de câmera otimizada, d = Δ d Δ d ! fg89:; J h−1 8TU d ie B + X? ‖J − J>? ‖D + XD ‖J‖D
D d, J = 6elog 4 5 C onde J>? é o termo de polarização anterior, = , fd i, , ≥ 1
[0087]Outra possibilidade seria realizar a otimização sem o termo de barreira: {d∗ , J∗ } = argmin d +L d, J d,J
[0088]A Figura 7 mostra um método 700 de acordo com uma modalidade da invenção. O método 700 é para realizar SLAM e pode ser o método de SLAM realizado pelo dispositivo 100. O método em conformidade inclui: Um passo 701, como um primeiro estágio de processamento 102, de pré-processamento de uma sequência de dados recebida 101 incluindo múltiplas imagens gravadas por uma câmera e leituras de sensor a partir de múltiplos sensores 501, a fim de obter uma sequência de quadros 103, em que cada quadro inclui um conjunto de recursos visuais relacionado a uma das imagens em uma determinada instância de tempo e leituras de sensor 502 a partir dessa instância de tempo. Um passo 702, como um segundo estágio de processamento 104, de processamento sequencial de cada quadro da sequência de quadros com base no conjunto de recursos visuais e as leituras de sensor 502 incluídas nesse quadro, a fim de gerar um gráfico de mapeamento de sequência 105. Um passo 703, como um terceiro estágio de processamento 106, de mesclar o gráfico de mapeamento de sequência 105 com pelo menos um outro gráfico 400, a fim de gerar ou atualizar um gráfico completo 107.
[0089]A presente invenção foi descrita em conjunto com várias modalidades como exemplos, bem como implementações. No entanto, outras variações podem ser compreendidas e realizadas por aqueles versados na técnica e praticando a invenção reivindicada, a partir dos estudos dos desenhos, desta divulgação e das reivindicações independentes. Nas reivindicações, bem como na descrição, a palavra "compreendendo" não exclui outros elementos ou passos e o artigo indefinido "um" ou "uma" não exclui uma pluralidade. Um único elemento ou outra unidade pode cumprir as funções de várias entidades ou itens citados nas reivindicações. O mero fato de que certas medidas são citadas nas diferentes reivindicações dependentes mútuas não indica que uma combinação dessas medidas não possa ser usada em uma implementação vantajosa.

Claims (15)

REIVINDICAÇÕES
1. Dispositivo (100) para realizar localização e mapeamento simultâneos, SLAM, caracterizado pelo fato de que o dispositivo (100) compreende pelo menos um processador configurado para: - pré-processar, em um primeiro estágio de processamento (102), uma sequência de dados recebida (101) incluindo múltiplas imagens registradas por uma câmera e leituras de sensor a partir de múltiplos sensores (501), a fim de obter uma sequência de quadros (103), em que cada quadro inclui um conjunto de recursos visuais relacionado a uma das imagens em uma determinada instância de tempo e leituras de sensor (502) a partir dessa instância de tempo, - processar sequencialmente, em um segundo estágio de processamento (104), cada quadro da sequência de quadros (103) com base no conjunto de recursos visuais e as leituras de sensor (502) incluídas nesse quadro, a fim de gerar um gráfico de mapeamento de sequência (105), e - fundir, em um terceiro estágio de processamento (106), o gráfico de mapeamento de sequência (105) com pelo menos um outro gráfico (400), a fim de gerar ou atualizar um gráfico completo (107).
2. Dispositivo (100), de acordo com a reivindicação 1, caracterizado pelo fato de que um conjunto de recursos visuais inclui um conjunto de recursos de imagem que compreende um ou mais pontos chave 2D extraídos a partir da imagem relacionada, descritores correspondentes aos pontos chave 2D, e informações de disparidade e/ou profundidade dos pontos chave 2D.
3. Dispositivo (100), de acordo com a reivindicação 2, caracterizado pelo fato de que o pelo menos um processador é configurado para, no primeiro estágio de processamento (102): - extrair (200) uma imagem da sequência de dados (101), - retificar (201) a imagem, - extrair (204) pontos chave 2D a partir da imagem retificada, e - gerar (206) um conjunto de recursos de imagem com base nos pontos chave 2D extraídos.
4. Dispositivo (100), de acordo com a reivindicação 3, caracterizado pelo fato de que o pelo menos um processador é configurado para, no primeiro estágio de processamento (102): - atribuir (203) um ou mais rótulos semânticos aos pixels da imagem retificada, e - filtrar (205) o conjunto de recursos de imagem com base nos rótulos semânticos para remover pontos chave 2D a partir do conjunto de recursos de imagem relacionados a objetos rotulados como objetos dinâmicos.
5. Dispositivo (100), de acordo com a reivindicação 4, caracterizado pelo fato de que o pelo menos um processador é ainda configurado para, no primeiro estágio de processamento (102): - gerar (206) um conjunto de recursos visuais por adicionar um descritor de saco de palavras ao conjunto de recursos de imagem filtrado e, opcionalmente, uma tabela hash para pesquisar os pontos chave 2D, e - gerar (207) um quadro por combinar o conjunto de recursos visuais com leituras de sensor (502) a partir da mesma instância de tempo da imagem.
6. Dispositivo (100), de acordo com uma das reivindicações 1 a 5, caracterizado pelo fato de que o pelo menos um processador é configurado para, no segundo estágio de processamento (104): - realizar (301) rastreamento de câmera com base em um conjunto de recursos visuais incluído em um quadro por corresponder pontos chave 2D no conjunto de recursos visuais com pontos chave 3D armazenados localmente, a fim de obter uma pose de câmera associada ao quadro.
7. Dispositivo (100), de acordo com a reivindicação 6, caracterizado pelo fato de que o pelo menos um processador é configurado para: - determinar se o quadro é um quadro chave com base em um número de pontos chave 2D correspondentes.
8. Dispositivo (100), de acordo com a reivindicação 7, caracterizado pelo fato de que o pelo menos um processador é ainda configurado para, no segundo estágio de processamento (104), se determina que o quadro é um quadro chave: - realizar (303) um primeiro Ajuste de Pacote Local, LBA, com base na pose de câmera, a fim de obter informações de odometria visual e um gráfico de LBA, - calcular (304) uma pose de câmera fundida com base nas informações de odometria visual e as leituras de sensor (502) incluídas no quadro, e - realizar (305) um segundo LBA com base na pose de câmera fundida e o gráfico de LBA, a fim de obter o gráfico de mapeamento de sequência (105).
9. Dispositivo (100), de acordo com uma das reivindicações 1 a 8, caracterizado pelo fato de que o pelo menos um processador é ainda configurado para, no terceiro estágio de processamento (106): - detectar (400) a presença de um ou mais loops e/ou áreas de sobreposição compartilhadas entre o gráfico de mapeamento de sequência (105) e o pelo menos um gráfico adicional (400), - mesclar (400) o gráfico de mapeamento de sequência (105) e o pelo menos um gráfico adicional (400), a fim de obter um gráfico intermediário, e - realizar (401) uma otimização de gráfico no gráfico intermediário com base nos loops e/ou áreas de sobreposição detectados, a fim de obter o gráfico completo (107).
10. Dispositivo (100), de acordo com uma das reivindicações 1 a 9, caracterizado pelo fato de que o pelo menos dois dos três estágios de processamento (102, 104, 106) são realizados em processadores diferentes.
11. Dispositivo (100), de acordo com uma das reivindicações 1 a 10, caracterizado pelo fato de que o dispositivo (100) é um dispositivo distribuído e inclui pelo menos um dispositivo terminal (500) e pelo menos um dispositivo de rede (510), um processador do dispositivo terminal (500) é configurado para realizar o primeiro estágio de processamento (102) e transmitir a sequência de quadros obtida (103) para o dispositivo de rede (510), e um processador do dispositivo de rede (510) é configurado para realizar o segundo e o terceiro estágios de processamento (104, 106).
12. Dispositivo (100), de acordo com a reivindicação 11,
caracterizado pelo fato de que o processador do dispositivo terminal (500) é ainda configurado para: - realizar (503) uma localização em tempo real com base na sequência de quadros (103) obtida na primeiro estágio de processamento (102).
13. Dispositivo (100), de acordo com a reivindicação 12, caracterizado pelo fato de que o processador do dispositivo terminal (500) é ainda configurado para: - realizar (503) a localização em tempo real de acordo com o segundo estágio de processamento (106) conforme definido na reivindicação 8, em que o segundo LBA é substituído por um procedimento de rastreamento de fusão com base na pose de câmera fundida, o gráfico de LBA e um gráfico completo atual, a fim de obter uma pose atual da câmera.
14. Dispositivo (100), de acordo com uma das reivindicações 11 a 13, caracterizado pelo fato de que o dispositivo terminal (500) está localizado em um veículo e o veículo inclui pelo menos uma câmera e múltiplos sensores (501).
15. Método (700) para realizar Localização e Mapeamento Simultâneos, SLAM, caracterizado pelo fato de que o método compreende: - pré-processar (701), em um primeiro estágio de processamento (102), uma sequência de dados recebida (101) incluindo múltiplas imagens gravadas por uma câmera e leituras de sensor a partir de múltiplos sensores (501), a fim de obter uma sequência de quadros (103), em que cada quadro inclui um conjunto de recursos visuais relacionado a uma das imagens em uma determinada instância de tempo e leituras de sensor (502) a partir dessa instância de tempo, - sequencialmente processar (702), em um segundo estágio de processamento (104), cada quadro da sequência de quadros (103) com base no conjunto de recursos visuais e as leituras de sensor (502) incluídas nesse quadro, a fim de gerar um gráfico de mapeamento de sequência (105), e - mesclar (703), em um terceiro estágio de processamento (106), o gráfico de mapeamento de sequência (105) com pelo menos um outro gráfico (400), a fim de gerar ou atualizar um gráfico completo (107).
BR112021004229-6A 2018-09-07 2018-09-07 dispositivo e método para realizar localização e mapeamento simultâneos BR112021004229A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2018/074205 WO2020048618A1 (en) 2018-09-07 2018-09-07 Device and method for performing simultaneous localization and mapping

Publications (1)

Publication Number Publication Date
BR112021004229A2 true BR112021004229A2 (pt) 2021-05-25

Family

ID=63557457

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112021004229-6A BR112021004229A2 (pt) 2018-09-07 2018-09-07 dispositivo e método para realizar localização e mapeamento simultâneos

Country Status (5)

Country Link
US (1) US11410322B2 (pt)
EP (1) EP3818499A1 (pt)
JP (2) JP2021508393A (pt)
BR (1) BR112021004229A2 (pt)
WO (1) WO2020048618A1 (pt)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019164498A1 (en) * 2018-02-23 2019-08-29 Sony Mobile Communications Inc. Methods, devices and computer program products for global bundle adjustment of 3d images
CN108717710B (zh) * 2018-05-18 2022-04-22 京东方科技集团股份有限公司 室内环境下的定位方法、装置及系统
US11372115B2 (en) * 2018-05-24 2022-06-28 Cyngn, Inc. Vehicle localization
CN110986968B (zh) * 2019-10-12 2022-05-24 清华大学 三维重建中实时全局优化和错误回环判断的方法及装置
WO2021106388A1 (ja) * 2019-11-29 2021-06-03 ソニー株式会社 情報処理装置、情報処理方法および情報処理プログラム
US11435756B2 (en) * 2019-12-01 2022-09-06 Nvidia Corporation Visual odometry in autonomous machine applications
CN113701766B (zh) * 2020-05-20 2024-09-20 浙江欣奕华智能科技有限公司 一种机器人地图的构建方法、机器人的定位方法及装置
CN112114966B (zh) * 2020-09-15 2024-08-13 杭州未名信科科技有限公司 一种视觉slam的光束平差计算方法
US20220172386A1 (en) * 2020-11-27 2022-06-02 Samsung Electronics Co., Ltd. Method and device for simultaneous localization and mapping (slam)
CN112446846A (zh) * 2020-11-27 2021-03-05 鹏城实验室 融合帧获得方法、装置、slam系统以及存储介质
KR20220090597A (ko) * 2020-12-22 2022-06-30 한국전자기술연구원 특징 매칭을 이용한 위치추적장치 및 방법
CN112985404A (zh) * 2021-02-09 2021-06-18 广州小鹏自动驾驶科技有限公司 一种停车场众包地图生成方法、装置、设备和介质
GB202110950D0 (en) * 2021-07-29 2021-09-15 Five Ai Ltd Perception of 3d objects in sensor data
CN114013449B (zh) * 2021-11-02 2023-11-03 阿波罗智能技术(北京)有限公司 针对自动驾驶车辆的数据处理方法、装置和自动驾驶车辆
CN114429495B (zh) * 2022-03-14 2022-08-30 荣耀终端有限公司 一种三维场景的重建方法和电子设备
CN114862949B (zh) * 2022-04-02 2024-05-17 华南理工大学 一种基于点线面特征的结构化场景视觉slam方法
US20240013485A1 (en) * 2022-07-08 2024-01-11 Jonathan James Millin System and methods for improved aerial mapping with aerial vehicles

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9400930B2 (en) 2013-09-27 2016-07-26 Qualcomm Incorporated Hybrid photo navigation and mapping
US9811756B2 (en) * 2015-02-23 2017-11-07 Mitsubishi Electric Research Laboratories, Inc. Method for labeling images of street scenes
JP2017208038A (ja) * 2016-05-20 2017-11-24 株式会社リコー 画像処理装置、画像処理方法、画像処理システム及びプログラム
US11064178B2 (en) * 2018-06-16 2021-07-13 Artisense Corporation Deep virtual stereo odometry

Also Published As

Publication number Publication date
JP2021508393A (ja) 2021-03-04
US20200334841A1 (en) 2020-10-22
WO2020048618A1 (en) 2020-03-12
JP7472235B2 (ja) 2024-04-22
US11410322B2 (en) 2022-08-09
EP3818499A1 (en) 2021-05-12
CN112567429A (zh) 2021-03-26
JP2023017924A (ja) 2023-02-07

Similar Documents

Publication Publication Date Title
BR112021004229A2 (pt) dispositivo e método para realizar localização e mapeamento simultâneos
Li et al. Pose graph optimization for unsupervised monocular visual odometry
Lee et al. Loosely-coupled semi-direct monocular slam
Yang et al. Learning to segment rigid motions from two frames
Bustos et al. Visual SLAM: Why bundle adjust?
JP4985516B2 (ja) 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
KR101926563B1 (ko) 카메라 추적을 위한 방법 및 장치
Usenko et al. Reconstructing street-scenes in real-time from a driving car
US11847802B2 (en) System and method for computing the 3D position of a semantic landmark in images from the real world
Arrigoni et al. Camera motion from group synchronization
US10843068B2 (en) 6DoF inside-out tracking game controller
Tang et al. Gslam: Initialization-robust monocular visual slam via global structure-from-motion
Younes et al. FDMO: feature assisted direct monocular odometry
Xie et al. Semi-direct multimap SLAM system for real-time sparse 3-D map reconstruction
Mo et al. Stereo frustums: a siamese pipeline for 3d object detection
Karrer et al. Towards globally consistent visual-inertial collaborative SLAM
Wadud et al. DyOb-SLAM: Dynamic object tracking SLAM system
Beauvisage et al. Multimodal tracking framework for visual odometry in challenging illumination conditions
Rahman et al. Svin2: Sonar visual-inertial slam with loop closure for underwater navigation
GB2500384A (en) Generating navigation data in long term autonomous robotic systems
Mu et al. Visual navigation features selection algorithm based on instance segmentation in dynamic environment
Andersson et al. Simultaneous localization and mapping for vehicles using ORB-SLAM2
Amarasinghe et al. U-VIP-SLAM: Underwater Visual-Inertial-Pressure SLAM for Navigation of Turbid and Dynamic Environments
Chakraborty et al. Jorb-slam: A Jointly Optimized Multi-Robot Visual Slam
Shen et al. Emv-lio: An efficient multiple vision aided lidar-inertial odometry