1、不闭合 若闭合点很难完全闭合,可尝试调整costraint_builder.min_score评分值。 SPARSE_POSE_GRAPH.constraint_builder.min_score 该值越小越容易闭合,即要求精度变低。 2、IMU 建议IMU的角速度和线加速度都要发布。并根据IMU数据的准确性调整IMU 的估计位姿的方差(方法越大则越不信任该数据)。也可调整IMU的相关权重:( trajectory_builder_2d.lua文件中) orientation_model_variance角速度权重 position_model_variance velocity_model_variance线加速度权重 (因此,IMU主题数据中的方差信息填不填写没影响) 3、odom数据方差 cartographer中odom的方差并不是从/odom主题中读取,而是从配置文件的 constant_odometry_translational_variance和 constant_odometry_rotational_variance参数获取,因此/odom 中的方差信息填不填写不影响:(astra_camera_2d.lua文件中) constant_odomtry_translational_variance = 1e-7, constant_odomtry_rotational_variance = 1e-7, (走廊长度变长或变短时需要增加里程计的权重;平行环境变成交叉的,多半是数据角度问题,此时应该提高IMU的权重,减少配置文件中其方差值) 4、num_laser_fans参数 影响全局匹配和局部匹配的权衡。越小说明传感器累计误差比较大,要更注重全局匹配。 5、地图提前闭合问题 建图时离应该闭合的时候还有距离就闭合了。是因为环境相似,此时可继续再往前走,由于它提前闭环,前面肯定会出现不能闭环的情况,这时候就会自己发现闭环错误,从而修正了。 三种解决方法: ①、继续往前走,走到下一个特征明显的地方,等待重新闭环 ②、增大里程计权重(前提是里程计准确),修改odom中的方差值(协方差值若全写0,则表示odom完全没误差) ③、减小cartographer里面的配置文件astra_camera_2d.lua里面的huber_scale(该参数为激光匹配的权重(即闭环权重)) 注意:减少闭环权重会使得闭环变慢。 里程计还要融合其它数据之后得出的数据(如:IMU等)才是真正跟激光对比的数据。若将里程计的方差都写0,则表示里程计完全没误差,建图时理论上就会忽略里程计之外的其他数据。(但是单个数据的方差为零,不能使得融合出来的数据方差为零) 6、SPARSE_PISE_GRAPH.optimize_every_n_scans 指定每多少帧闭环一次,增大该值会减少闭环次数。减少闭环压力,不用过于频繁的匹配,传感器的误差不会瞬间增大的很快。 (30改为75) 7、real_time_correlative_scan_matcher中的rotation_delta_cost_weight (1e-1改为2e-1) 提高局部闭环的时候对odom的角度置信度,局部闭环的时候odom 还是挺准的,也是为了解决当时工厂的错误闭环,但要说到减少闭环压力的话,主要还是 30改为75,不用过于频繁的匹配,传感器的误差不会瞬间增大得很快 |
|