zoukankan      html  css  js  c++  java
  • ORB_SLAM2 闭环检测段错误

    问题描述:
      Ubuntu14.04运行正常。Ubuntu 16.04下运行时,检测到闭环后有时会段错误,定位发现断错误出现在CorrectLoop()的红色代码处
    void LoopClosing::CorrectLoop()
    {
      ...
    KeyFrameAndPose CorrectedSim3, NonCorrectedSim3; CorrectedSim3[mpCurrentKF]=mg2oScw; cv::Mat Twc = mpCurrentKF->GetPoseInverse();

      ...
    }

    问题原因:

      在CorrectLoop()中使用了一个叫KeyFrameAndPose的数据类型,这个数据结构中会创建Eigen对象,根据Eigen文档,调用Eigen对象的数据结构需要使用Eigen的字节对齐,在LoopCloing中加入字节对齐后问题消失。至于为什么没对齐会报错,我也不知道...

    解决方法:

      include/LoopClosing.h,加入红色部分(使用Eigen中的方式进行字节对齐)

    class LoopClosing
    {
    public:
      EIGEN_MAKE_ALIGNED_OPERATOR_NEW
    
        typedef pair<set<KeyFrame*>,int> ConsistentGroup;
        ...
    };
  • 相关阅读:
    MySQL教程22-字符串类型
    MySQL教程21-日期和时间类型
    MySQL教程20-小数类型
    MySQL教程19-整数类型
    MySQL教程18-数据类型简介
    ActiveMQ_topic
    ActiveMQ_消费者编码
    ActiveMQ_生产者编码
    ActiveMQ介绍
    管理docker容器
  • 原文地址:https://www.cnblogs.com/shishiteng/p/5799500.html
Copyright © 2011-2022 走看看