2015-10-17 70 views
0

与我的团队一起,我们希望在我们的项目中实现重新定位的区域学习。运动跟踪丢失后重新定位不准确

我增加了这个功能,它似乎工作正常。但是,当漂移灾难发生(运动跟踪丢失)并且主摄像头瞬间投射到“宇宙的另一侧”时,该程序不能成功重新定位它:摄像机在下方2米或3米远比它应该在哪里。

这是一个区域描述错误(因为它没有足够的兴趣点)? 还是我还没有理解如何使用区域学习?

非常感谢。

P.S .: 我使用Unity SDK。

public void Update() 
{ 
    TangoPoseData pose = new TangoPoseData(); 
    TangoCoordinateFramePair pair; 

    if(poseLocalized) 
    { 
     pair.baseFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION; 
     pair.targetFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE; 
    } 
    else 
    { 
     pair.baseFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE; 
     pair.targetFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE; 
    } 
    double timestamp = VideoOverlayProvider.RenderLatestFrame(TangoEnums.TangoCameraId.TANGO_CAMERA_COLOR); 
    PoseProvider.GetPoseAtTime (pose, timestamp, pair); 
    m_status = pose.status_code; 

    if (pose.status_code == TangoEnums.TangoPoseStatusType.TANGO_POSE_VALID) 
    { 
     // it does not differ with the pair base frame 
     Matrix4x4 ssTd = UpdateTransform(pose); 
     m_uwTuc = m_uwTss * ssTd * m_dTuc; 
    } 
} 

public void OnTangoPoseAvailable(TangoPoseData pose) 
{ 
    if (pose == null) 
    { 
     return; 
    } 

    // Relocalization signal 
    if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION && 
     pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE) 
    { 
     poseLocalized = true; 
    } 

    // If pose status is not valid, nothing is valid 
    if (!(pose.status_code == TangoEnums.TangoPoseStatusType.TANGO_POSE_VALID)) 
    { 
     poseLocalized = false; 
     // Do I forget something here ? 
    } 
} 

回答

1

我经常观察到区域学习的本地化和重新定位可以产生x,y坐标关闭几米。

如果在移动到新的区域之前更好地记录区域,坐标可以更加准确。

重新定位后,如果平板电脑能够在前往新区域之前使用缓慢而一致的移动来观察区域,则会提高坐标精度。

如果我学到了新的区域,作为由drift correction描述我总是回到一个众所周知的区域具有更高的精度:

enter image description here

我有使用Java应用的两个探戈片是自主导航的iRobot公司在我家。我使用1米长的磁带标记设置了一个网格测试站点来进行观察。