cartographer 优化参数

TRAJECTORY_BUILDER_2D.voxel_filter_size:平均误差在0.1 和0.2时发生起伏,虽然0.1的误差比0.2的更大,但由于0.2时绘图偏差严重,建议选择小于0.1的值。
submaps.resolution:平均误差在0.1时达到顶峰,建议小于0.1较为良好。
submaps.num_range_data:可以接受的调整参数范围在90 - 60之间,在80左右效果较为优秀。
TRAJECTORY_BUILDER_2D.max_range:可以接受的调整参数范围在30 - 15之间,推荐20-25误差较小。
adaptive_voxel_filter.max_range:可以接受的调整参数范围在50 - 20之间,在30左右效果较为优秀。
adaptive_voxel_filter.max_length:可以接受的调整参数范围在0.5 - 4之间,在2 - 4左右效果较为优秀。
adaptive_voxel_filter.min_num_points:可以接受的调整参数范围在100 - 200之间,100以上的效果较为优秀。

optimize_every_n_nodes:推荐参数修改范围为30-70,官方文档中建议减少该值来提高速度,推荐30左右配置较为良好

MAP_BUILDER.num_background_threads:建议优化至每个机器的CPU线程数量

global_sampling_ratio:在0.001,0.002时平均误差处于较小位置,优化时可以考虑的值为0.001和0.002

constraint_builder.sampling_ratio:该参数在0.2-0.25左右平均误差处于相对低位。最小方差的位置在在0.25左右,推荐参数修改范围为0.2-0.3

constraint_builder.min_score:该参数在0.75-0.95误差的方差和最大误差处于相对低位,推荐0.75-0.95为修改参数范围

search_windows_sizes.linear_xy_search_window:该参数在10-20左右误差的方差和最大误差上升较快,在10左右时处于较低点,推荐5-10为修改参数范围

search_windows_sizes.linear_z_search_window:该参数在4以后误差的方差和最大误差上升较快,在4左右时仍处于较低点,推荐1-4为修改参数范围

search_windows_sizes.angular_search_window:该参数随着角度的增加,误差的方差和最大误差减小,推荐60左右为修改参数范围

global_constraint_search_after_n_seconds:该参数随着间隔时间的增加误差的方差和最大误差逐渐下降,但最大误差逐渐上升,在30-40时处于两者的平衡点。推荐30-40为修改参数范围

ceres_scan_matcher.max_num_iterations:该参数误差波动较大,平均误差大时最大误差小,平均误差小时最大误差大,在7左右处于相对平衡点,推荐7-10为修改参数范围

各个工程与实际使用的雷达,传感器各有差异。


include "map_builder.lua"
include "trajectory_builder.lua"

options = {
  map_builder = MAP_BUILDER,
  trajectory_builder = TRAJECTORY_BUILDER,
  map_frame = "map",
  tracking_frame = "gyro_link",
  published_frame = "base_footprint",
  odom_frame = "odom",
  provide_odom_frame = true,
  publish_frame_projected_to_2d = false,
  use_pose_extrapolator = true,
  use_odometry = true,
  use_nav_sat = false,
  use_landmarks = false,
  num_laser_scans = 1,
  num_multi_echo_laser_scans = 0,
  num_subdivisions_per_laser_scan = 1,
  num_point_clouds = 0,
  lookup_transform_timeout_sec = 0.5,
  submap_publish_period_sec = 0.2,
  pose_publish_period_sec = 5e-3,
  trajectory_publish_period_sec = 30e-3,
  rangefinder_sampling_ratio = 1.,
  odometry_sampling_ratio = 1.,
  fixed_frame_pose_sampling_ratio = 1.,
  imu_sampling_ratio = 1.,
  landmarks_sampling_ratio = 1.,
}

MAP_BUILDER.use_trajectory_builder_2d = true
MAP_BUILDER.num_background_threads =2

TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 1 --积累几帧激光数据作为一个标准单位scan
TRAJECTORY_BUILDER_2D.min_range = 0.1  --激光的最近有效距离
TRAJECTORY_BUILDER_2D.max_range = 12.   --激光最远的有效距离
TRAJECTORY_BUILDER_2D.missing_data_ray_length = 5. --无效激光数据设置距离为该数值
TRAJECTORY_BUILDER_2D.use_imu_data = false  --是否使用imu数据

TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.linear_search_window = 0.1 
--线距离搜索框,在这个框的大小内,搜索最佳scan匹配  减小该参数可以增强实时的建图效果,降低闭环优化的效果,形成闭环时,产生的重影较多
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher. angular_search_window = math.rad(10.) --角度搜索框的大小
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.translation_delta_cost_weight = 20.
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.rotation_delta_cost_weight = 2e-1  
--影响的是过程中的效果,间接会影响最后的优化时间长

TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight = 30.
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.rotation_weight = 30.
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.ceres_solver_options.max_num_iterations = 20


TRAJECTORY_BUILDER_2D.submaps.num_range_data = 40
--num_range_data设置的值与CPU有这样一种关系,值小(10),CPU使用率比较稳定,整体偏高,值大时,CPU短暂爆发使用(插入子图的时候),平时使用率低,呈现极大的波动状态。
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.probability_grid_range_data_inserter.hit_probability = 0.55
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.probability_grid_range_data_inserter.miss_probability = 0.49

TRAJECTORY_BUILDER_2D.motion_filter.max_distance_meters = 0.05   //尽量小点  // 如果移动距离过小, 或者时间过短, 不进行地图的更新
TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians = math.rad(0.3)
TRAJECTORY_BUILDER_2D.motion_filter.max_time_seconds = 0.5

POSE_GRAPH.optimization_problem.huber_scale = 1e2  --鲁棒核函数,去噪

POSE_GRAPH.optimize_every_n_nodes = 35   --后端优化节点
POSE_GRAPH.global_constraint_search_after_n_seconds = 10 

POSE_GRAPH.optimization_problem.ceres_solver_options.max_num_iterations = 15  --优化迭代步数
POSE_GRAPH.optimization_problem.ceres_solver_options.num_threads = 1

POSE_GRAPH.constraint_builder.max_constraint_distance = 15.
POSE_GRAPH.constraint_builder.sampling_ratio = 0.3
POSE_GRAPH.constraint_builder.min_score = 0.50
POSE_GRAPH.constraint_builder.global_localization_min_score = 0.6
POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher.linear_search_window = 3.
POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher.branch_and_bound_depth = 5. --搜索方法,界定分支法,求解问题构成一个搜索树,depth是构造树的深度
POSE_GRAPH.global_sampling_ratio = 0.001

return options

  • 6
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: cartographer参数配置是指在进行地图绘制和制图过程中,根据具体需求对cartographer(地图绘制软件)进行设置和调整的过程。通过合理配置参数,可以达到更好的绘图效果和符合实际需求的地图制作。参数配置涉及到包括投影方式、坐标系统、地形高程、符号样式等多个方面。 首先,投影方式是参数配置中重要的一部分,可以选择不同的投影方式,比如等距圆柱投影、等面积投影、等角圆柱投影等,以适应实际应用需求。其次,坐标系统的选择也很关键,可以根据地图绘制的范围和精度选择合适的坐标系,如WGS84坐标系、Web墨卡托投影坐标系等。地形高程参数配置可以根据地理要素的高度信息进行设置,如山脉、高原、海洋等,可以使用等高线、渐变色等方式进行显示。符号样式的配置可以根据绘制目的和地图主题进行选择和调整,如图标、颜色、线型、填充样式等。 此外,还可以根据具体绘图需求进行更细致的参数配置。比如,地图比例尺、标注字体、注记位置、边框样式、图例等配置项。通过合理配置这些参数可以达到更好的地图效果和可视化效果。 总之,cartographer参数配置是地图绘制过程中的重要一环,通过合理设置各种参数可以制作出符合实际需求的地图,从而更好地展示和传达地理信息。 ### 回答2: Cartographer是谷歌开发的一种强大的SLAM算法,用于构建3D地图。在使用Cartographer进行参数配置时,可以根据具体的应用需求不同来进行相应的设置。 首先,可以调整Cartographer的传感器配置参数。这包括传感器的帧率、分辨率等参数。帧率设置越高,可以获得更多的数据,但也会增加处理数据的复杂度。分辨率可以根据需要进行调整,高分辨率可以获得更多细节,但也会占用更多的存储空间。 其次,需要对Cartograher的地面过滤器参数进行配置。地面过滤器可用于去除地面的杂乱数据,使地图更加准确。地面过滤器的参数设置包括地面点云高度阈值、地面点云最小点数等。这取决于实际地面的特征和要求。 另外,还可以配置Cartographer的回环检测参数。回环检测是指在建立地图过程中,检测到之前已经经过的地方,并将其与新观测的数据进行匹配,从而完善地图。回环检测参数的设置包括回环检测范围、回环关联的匹配阈值等。这些参数的设置直接影响到回环检测的准确性和效率。 最后,可以根据应用需求调整Cartograher的运行速度和精度之间的权衡参数。这些参数可以根据具体的情况进行调整,包括优化器迭代次数、点云配准的误差阈值等。通过调整这些参数,可以在满足实际应用需求的同时提高运行效率或提高地图的精度。 总之,Cartographer参数配置是一个根据具体应用需求进行调整的过程,通过合理配置参数,可以提高地图构建的准确性和效率,满足不同应用场景下的需求。 ### 回答3: cartographer是谷歌开发的一种用于构建实时二维或三维地图的SLAM(即时定位与地图构建)算法。该算法能够结合多个传感器的数据,如激光雷达和相机,来进行地图的构建和定位。 在使用cartographer时,有一些参数配置可以根据具体的应用场景进行调整,以达到更好的地图构建和定位效果。 其中一些重要的参数配置包括: 1. map_resolution(地图分辨率):该参数决定了地图中每个栅格的大小。较小的分辨率可以捕捉更多的细节,但会增加地图的大小和计算量。 2. num_submaps(子地图数量):cartographer将整个地图划分为多个子地图,该参数配置了子地图的数量。较大的值可以提高地图的准确性,但也会增加计算量。 3. submap_size(子地图大小):决定了每个子地图的尺寸。较大的尺寸可以包含更多的环境信息,但也会增加计算和存储开销。 4. scans_per_fog_update(每次迭代更新的扫描次数):用于控制每次迭代更新时使用的激光雷达扫描次数。较大的值可以提高地图的质量,但会增加计算开销。 5. matching_submaps_options(子地图匹配选项):用于配置子地图之间的匹配方式,如匹配窗口大小和难度。根据环境特点进行调整,可以提高地图匹配的准确性。 6. motion_filter_options(运动滤波器选项):用于筛选掉不符合运动规律的激光雷达数据点,以减少噪音和误差。根据传感器和环境特点进行调整,可以提高定位的准确性。 以上是一些常见的cartographer参数配置,根据具体的应用需求和环境特点,可以对这些参数进行调整,以达到更好的地图构建和定位效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chilian12321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值