Notas do estudo ROS (6): ROS laser SLAM

Diretório

7 ROS SLAM a laser

7.1 Mapa

7.2 Comparação de algoritmos SLAM a laser comumente usados

7.2.1 Gmapping SLAM chart chart

7.2.2 Gráfico de cálculo Karto SLAM

7.2.3 Gráfico de cálculo do Hector SLAM


7 ROS SLAM a laser

Os principais problemas da navegação por robôs podem ser divididos em três partes: mapeamento, localização e planejamento de caminhos. O problema do posicionamento e mapeamento simultâneos (SLAM) está na interseção do posicionamento e do mapeamento. O SLAM exige que o robô construa gradualmente um mapa em um ambiente desconhecido e determine sua própria posição com base no mapa para localizar ainda mais.

O SLAM pode ser dividido em três categorias: laser, visão, laser + visão. Este capítulo estuda principalmente o algoritmo SLAM a laser.

7.1 Mapa

O mapa no ROS é uma imagem comum em escala de cinza, geralmente no formato pgm. Pixels pretos nesta imagem indicam obstáculos, pixels brancos indicam áreas viáveis ​​e cinza são áreas inexploradas. Como mostrado abaixo:

 

O mapa é mantido e apresentado na forma de um tópico no ROS.O nome do tópico é / map e seu tipo de mensagem é nav_msgs / OccupancyGrid

Você pode visualizar o formato da mensagem através de rosmsg show nav_msgs / OccupancyGrid:

std_msgs/Header header #消息的报头
    uint32 seq
    time stamp
    string frame_id #地图消息绑定在TF的哪个frame上,一般为map
nav_msgs/MapMetaData info #地图相关信息
    time map_load_time #加载时间
    float32 resolution #分辨率 单位:m/pixel
    uint32 width #宽 单位:pixel
    uint32 height #高 单位:pixel
    geometry_msgs/Pose origin #原点
    geometry_msgs/Point position
        float64 x
        float64 y
        float64 z
    geometry_msgs/Quaternion orientation
        float64 x
        float64 y
        float64 z
        float64 w
int8[] data #地图具体信息

 

O item acima define a estrutura de dados do tópico / map, que contém três partes principais: cabeçalho, informações e dados. O cabeçalho é o cabeçalho da mensagem, que armazena informações gerais, como número de sequência, registro de data e hora, quadro, etc. , [] É adicionado após int8, que pode ser entendido como um contêiner do tipo vetor, que armazena dados do tipo width * height int8, que são cada pixel deste mapa.

Para o mapa da área desconhecida, o robô pode ser construído dinamicamente usando o algoritmo SLAM em movimento.

Para um mapa de uma área conhecida, você pode primeiro iniciar o nó do algoritmo SLAM, mover o robô para varrer o ambiente circundante e criar um mapa e, em seguida, usar map_server ( $ rosrun map_server map_saver -f map ) para salvar o mapa. Use o mapa salvo para navegação futura.

7.2 Comparação de algoritmos SLAM a laser comumente usados

Os algoritmos SLAM a laser comumente usados ​​no ROS são Gmapping, Karto, Hector e outros algoritmos.

A comparação específica é mostrada na tabela a seguir:

 

gmapping

Karto

Hector

Sensor necessário

Lidar

Odômetro

Lidar

Odômetro

Lidar (requer radar de alta frequência)

Inserir tópico

  • / tf e / tf_static: transformação de coordenadas, tf / tfMessage ou tf2_msgs / TFMessage. Dois tf devem ser fornecidos, um é o tf entre o chassi base e o laser, ou seja, a transformação entre o chassi do robô e o lidar; o outro é o tf entre o chassi base e o odom_frame, ou seja, as coordenadas entre o chassi e a origem do odômetro Transformar. odom_frame pode ser entendido como o sistema de coordenadas em que a origem do odômetro está localizada.
  • / scan: dados Lidar, digite sensor_msgs / LaserScan
  • / tf e / tf_static: transformação de coordenadas, tf / tfMessage ou tf2_msgs / TFMessage. Dois tf devem ser fornecidos, um é o tf entre o chassi base e o laser, ou seja, a transformação entre o chassi do robô e o lidar; o outro é o tf entre o chassi base e o odom_frame, ou seja, as coordenadas entre o chassi e a origem do odômetro Transformar. odom_frame pode ser entendido como o sistema de coordenadas em que a origem do odômetro está localizada.
  • / scan: dados Lidar, digite sensor_msgs / LaserScan
  • / tf e / tf_static: transformação de coordenadas, tf / tfMessage ou tf2_msgs / TFMessage. Dois tf devem ser fornecidos, um é o tf entre o chassi base e o laser, ou seja, a transformação entre o chassi do robô e o lidar; o outro é o tf entre o chassi base e o odom_frame, ou seja, as coordenadas entre o chassi e a origem do odômetro Transformar. odom_frame pode ser entendido como o sistema de coordenadas em que a origem do odômetro está localizada.
  • / scan: dados Lidar, digite sensor_msgs / LaserScan
  • / syscommand: Quando a mensagem de redefinição é recebida, as posições do mapa e do robô são inicializadas em suas posições originais.

Tópico de saída

  • / tf: produz principalmente a transformação entre map_frame e odom_frame
  • / slam_gmapping / entropy: std_msgs / tipo Float64, refletindo o grau de dispersão da estimativa de pose do robô
  • / map: o mapa criado por slam_gmapping
  • / map_metadata: informações sobre o mapa
  • / tf: produz principalmente a transformação entre map_frame e odom_frame
  • / map: o mapa criado por slam_gmapping
  • / map_metadata: informações sobre o mapa
  • / tf: produz principalmente a transformação entre map_frame e odom_frame
  • / map: o mapa criado por slam_gmapping
  • / map_metadata: informações sobre o mapa
  • / poseupdate: estimativa de pose de robô com covariância
  • / slam_out_pose: Pose de estimativa sem covariância.

Serviço prestado

/ dynamic_map: o tipo é nav_msgs / GetMap, usado para obter o mapa atual

/ dynamic_map: o tipo é nav_msgs / GetMap, usado para obter o mapa atual

/ dynamic_map: o tipo é nav_msgs / GetMap, usado para obter o mapa atual

Realização técnica

Filtro de partículas

Otimização baseada em gráficos

correspondência de varredura (equação de Gaussian-Newton)

Efeito

Efeitos maduros, confiáveis ​​e estáveis, muitos robôs baseados em ROS executam gmapping_slam

Semelhante ao mapeamento gmap, mais adequado para ambientes de mapas grandes

O efeito não é tão bom quanto o Gmapping e o Karto, porque ele usa apenas informações do lidar

      (1) O odômetro inclui uma roda de código fotoelétrico na roda, uma unidade de navegação inercial (IMU) e um odômetro visual. Você pode usar apenas um deles para odom ou selecionar vários para fusão de dados, e o resultado da fusão é usado como odom.

      (2)https://blog.csdn.net/dddxxxx/article/details/78460636

      (3) Consulte 《Uma avaliação das técnicas 2D SLAM disponíveis no sistema operacional do robô》

7.2.1 Gmapping SLAM chart chart

7.2.2 Gráfico de cálculo Karto SLAM

7.2.3 Gráfico de cálculo do Hector SLAM

 

Publicado 31 artigos originais · Gosto 3 · Visitas 2028

Acho que você gosta

Origin blog.csdn.net/lclfans1983/article/details/105399567
Recomendado
Clasificación