【问题标题】:Is it possible to obtain distance scaling in Monocular ORB-SLAM2?是否有可能在单眼 ORB-SLAM2 中获得距离缩放?
【发布时间】:2019-07-26 06:21:40
【问题描述】:

我正在尝试使用单目 ORB SLAM2 找到从相机到 ORB 特征点的真实距离。

我计算了每个 ORB 特征点的世界坐标与当前关键帧相机位置的世界坐标之间的欧几里得距离。对所有帧重复此过程。这样就得到了当前帧中每个ORB点的距离。

在 Viewer.cc 中

std::vector<MapPoint*> MP = mpTracker->mCurrentFrame.mvpMapPoints;
cv::Mat CC = mpTracker->mCurrentFrame.GetCameraCenter();
mpFrameDrawer->DrawFrame(MP,CC);

在 FrameDrawer.cc 中

cv::Mat FrameDrawer::DrawFrame(std::vector<MapPoint*> DistMapPt, cv::Mat CameraPt)
{
   .
   .
   .

    else if(state==Tracking::OK) //TRACKING
    {
        mnTracked=0;
        mnTrackedVO=0;
        const float r = 5;

        for(int i=0;i<n;i++)
        {
            if(vbVO[i] || vbMap[i])
            {
                cv::Point2f pt1,pt2;
                pt1.x=vCurrentKeys[i].pt.x-r;
                pt1.y=vCurrentKeys[i].pt.y-r;
                pt2.x=vCurrentKeys[i].pt.x+r;
                pt2.y=vCurrentKeys[i].pt.y+r;

                float MapPointDist;
                 MapPointDist = sqrt(pow((DistMapPt[i]->GetWorldPos().at<float>(0)-CameraPt.at<float>(0)),2)+pow((DistMapPt[i]->GetWorldPos().at<float>(1)-CameraPt.at<float>(1)),2)+pow((DistMapPt[i]->GetWorldPos().at<float>(2)-CameraPt.at<float>(2)),2));               

                }
   .
   .
   .

            }


        }
    }

这个计算出的距离既不等于也不可以缩放到实际距离。同样的方法在 RGBD ORB SLAM2 中给出了相对准确的距离。

Monocular ORB SLAM 中是否有任何缩放距离的方法?

【问题讨论】:

  • 我不熟悉 ORB-SLAM2,目前一般不使用 SLAM,但根据过去的经验,应该可以这样做。你确定你的相机和IMU校准没问题吗?因为通常这是导致错误坐标的主要问题。
  • @sklott 相机和校准参数正确。我也尝试了 KITTI 和 TUM 数据集提供的序列和参数

标签: c++ opencv orb slam


【解决方案1】:

请看这个post:“ORB-SLAM2 在初始化时任意定义比例,作为中值场景深度。在实践中,每次初始化 orb-slam2 时比例都是不同的。”在单目 SLAM 中不可能获得正确的比例,因为您无法从图像序列中估计真实世界的深度。您需要另一个数据源,例如第二个摄像头、IMU、激光雷达、机器人里程计或具有已知真实世界尺寸的标记。在 RGBD 情况下,深度是从深度传感器获知的,因此坐标可以正确缩放。

【讨论】:

  • 它说“实际上,每次初始化 orb-slam2 时,规模都是不同的”。但是当我在一次执行中尝试每个帧时,缩放比例是不同的。那么规模是在初始化期间固定的还是随着每一帧而变化?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 2018-07-25
  • 2020-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多