Cartographer系統

1. 系統組成

  • 它由以下兩個系統組成:
  • Local SLAM (Frontend) :產生好的Submap
    創建局部一致的Submap集合,並把它們連在一起,會隨着時間漂移
  • Global SLAM(Backend):把Submap以最一致的方式連接在一起
    在後端運行,尋找閉環約束(通過掃描匹配來實現scans->submap),也使用其它傳感器數據以獲得更好的全局一致性,在3D中,它盡力尋找重力方向

1.1 Local SLAM

1.2 Global SLAM

2. 配置參數

2.1 adaptive_voxel_filter (體素濾波)

  • 體素濾波用於爲Local SLAM匹配或爲Global SLAM閉環計算Sparser Point Cloud.
  • AdaptiveVoxelFilterOptions
    • 定義
syntax = "proto3";

package cartographer.sensor.proto;

message AdaptiveVoxelFilterOptions {
  // 'max_length' of a voxel edge.
  float max_length = 1;

  // If there are more points and not at least 'min_num_points' remain, the
  // voxel length is reduced trying to get this minimum number of points.
  float min_num_points = 2;

  // Points further away from the origin are removed.
  float max_range = 3;
}
  • 實例
  adaptive_voxel_filter = {
    max_length = 0.5,
    min_num_points = 200,
    max_range = 50.,
  },

  loop_closure_adaptive_voxel_filter = {
    max_length = 0.9,
    min_num_points = 100,
    max_range = 50.,
  },

2.2 RealTimeCorrelativeScanMatcherOptions

  • 定義
syntax = "proto3";

package cartographer.mapping.scan_matching.proto;

message RealTimeCorrelativeScanMatcherOptions {
  // Minimum linear search window in which the best possible scan alignment
  // will be found.
  double linear_search_window = 1;

  // Minimum angular search window in which the best possible scan alignment
  // will be found.
  double angular_search_window = 2;

  // Weights applied to each part of the score.
  double translation_delta_cost_weight = 3;
  double rotation_delta_cost_weight = 4;
}
  • 實例
  use_online_correlative_scan_matching = false,
  real_time_correlative_scan_matcher = {
    linear_search_window = 0.1,
    angular_search_window = math.rad(20.),
    translation_delta_cost_weight = 1e-1,
    rotation_delta_cost_weight = 1e-1,
  },
  • a

參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章