Fusion SLAM
  • 概述
  • 介绍
  • 里程计
  • 地图生成
  • 地图优化
  • 数据集与实验
  • 接口与扩展
  • 已知问题
  • 未来工作
  • 附录与参考
  • 相关教程
项目
  • 简体中文
  • English
  • 概述
  • 介绍
  • 里程计
  • 地图生成
  • 地图优化
  • 数据集与实验
  • 接口与扩展
  • 已知问题
  • 未来工作
  • 附录与参考
  • 相关教程
项目
  • 简体中文
  • English
  • 概述
  • 介绍

    • 符号
    • 流程图
    • 流程描述
    • 坐标系定义
    • 主要论文
    • 相关研究
  • 里程计

    • 介绍
    • 初始化
    • 状态估计
    • 时间同步
    • 地图约束
    • 异常处理
  • 地图生成
  • 地图优化
  • 数据集与实验
  • 接口与扩展
  • 已知问题
  • 未来工作
  • 附录与参考

    • 参考文献
    • 附录
  • 相关教程

    • 里程计教程
    • ROVIOLI教程

异常处理

卡方检验

卡方检验(chi-square,记为χ2检验)是一种计数资料的假设检验方法,因为对总体的分布不作任何假设,故属于非参数检验。

根本思想:比较实际频次fo与理论频次fe的吻合程度或拟合优化问题。

χ2=(fo−fe)2fe

使用的情况:当事实与期望不符合情况下使用卡方分布进行检验,看是否系统出了问题,还是属于正常波动。利用卡方分布分析结果,排除可疑结果。

作用: 主要用于比较两个及两个以上的样本率或分类变量的关联性分析。检查实际结果与期望结果之间何时存在显著差异。

  1. 检验拟合程度:可以检验一组给定数据与指定分布的吻合程度。如:检验抽奖机收益的观察频数与我们所期望的吻合程度。
  2. 检验两个变量的独立性:通过这个方法,检查变量之间是否存在某种关系。

步骤:

  1. 确定要进行检验的假设H0,及其备择假设H1。
  2. 求出期望E。
  3. 确定用于做决策的拒绝域(右尾)。
  4. 根据自由度和显著性水平查询检验统计量临界值。
  5. 查看检验统计量是否在拒绝域内。
  6. 做出决策。

实例:

TEST_F(GPSUpdateTest, Chi2WithStdDev0_5Test) {
  double mean = 0.0;
  double std_dev = 0.5;

  std::default_random_engine generator;
  std::normal_distribution<double> noise_distribution(mean, std_dev);

  std::shared_ptr<State> state = sys->get_state();

  init_state.block(0, 0, 4, 1) << 0, 0, 0, 1;  // q
  init_state.block(4, 0, 3, 1) << 0.5, 0.5, 0.5;  // p
  init_state.block(7, 0, 3, 1) << 1, 1, 1;  // v

  state->_imu->set_value(init_state);
  ov_core::GPSData data;
  data.timestamp = 0;
  data.id = 0;
  data.meas << 0.5 + noise_distribution(generator), 0.5 + noise_distribution(generator), 0.5 + noise_distribution(generator);
  data.noise << 0, 0, 0;

  std::shared_ptr<Type> posetemp = StateHelper::clone(state, state->_imu->pose());
  std::shared_ptr<PoseJPL> pose = std::dynamic_pointer_cast<PoseJPL>(posetemp);

  state->_clones_IMU[data.timestamp] = pose;

  bool success = update(state,data);

  ASSERT_EQ(true, success);
}

Multi-Selection

Prev
地图约束