计算机幻觉 2024-02-18 16:47 采纳率: 0%
浏览 23
已结题

VINS-FUSION 纯双目测试

最近在测试纯双目的VSLAM算法,比如VINS-FUSION。请教下测试纯双目的VINS-FUSION中,yaml文件中body_T_cam0和body_T_cam1该如何得到?目前我是将cam0作为单位矩阵,cam1填左相机到右相机的旋转矩阵R和平移向量T,不知是否正确。使用的是京东200多买的双目同步摄像头,无imu,效果一般,同样的路线多次跑有时候出现不一样的路径。就是感觉非常的不稳定,路线容易飘。请问我该如何解决或者优化?测试图片如下,就是简单的左右来回。

img

  • 写回答

18条回答 默认 最新

  • 秦禹辰 2024-02-18 16:48
    关注
    获得0.15元问题酬金

    计算机幻觉 下午好🌅🌅🌅
    本答案参考通义千问

    在VINS-FUSION纯双目视觉惯性导航(Visual-Inertial SLAM)系统中,body_T_cam0body_T_cam1 是描述车身坐标系(Body Frame,通常指的是IMU坐标系)相对于两个相机坐标系(cam0 和 cam1)的转换矩阵。对于没有IMU的情况,你需要手动估计或通过其他方式获得这两个变换矩阵。以下是估计方法及注意事项:

    1. 静态标定法:

      • 安装一对已知姿态和位置的立体标记板(如 checkerboard 或 ArUco 标签),让摄像头对准这些标记。
      • 使用双目相机同时捕获两幅图片,并计算对应点的深度信息,确定每个标记在两幅图像中的相对位置。
      • 通过特征匹配和几何约束(例如 PnP 问题)估计出两个相机的相对旋转和平移参数(即 R 和 T),从而得到 body_T_cam0 和 body_T_cam1。

      伪代码示例:

      # yaml 文件示例
      calibration:
        stereo_camera_model:
          intrinsics: # 相机内参
            cam0: [...]
            cam1: [...]
      
        extrinsics:
          body_T_cam0:
            translation: [0., 0., 0.] # 初始假设为世界坐标系与cam0坐标系重合
            rotation: [1., 0., 0., 0., 1., 0., 0., 0., 1.] # 单位矩阵,代表初始猜测的相对旋转(可以先设为零)
      
          body_T_cam1:
            translation: [-R[0][0], -R[0][1], -R[0][2]] # 取cam1到cam0的旋转和平移向量
            rotation: [... cam1到cam0的旋转矩阵...]
      

      其中 RT 应替换为你通过标定得到的具体值。

    2. 运动标定法:

      • 在不安装固定标记的情况下,可通过移动设备并记录一段时间内的连续双目图像序列。
      • 使用光流、SFM(Structure from Motion)或其他单目或多视图SLAM技术来估计连续帧之间的相机相对运动。
      • 结合双目匹配结果,估算 body_T_cam0body_T_cam1 的变化趋势。
    3. 效果优化与稳定性的提升:

      • 对于纯视觉SLAM系统,由于缺乏IMU辅助,双目匹配的精度直接影响SLAM性能。因此,选择合适的特征检测器(如ORB, SIFT, SURF等)、特征匹配算法以及稠密重建和优化策略是关键。

      • 针对“路线容易飘”的情况,你可以考虑以下优化措施:

        • 增强特征点跟踪的稳定性,例如采用更鲁棒的特征匹配策略或引入特征预处理技术。
        • 使用闭环检测和回环闭合优化,利用先前建好的地图与当前观测进行匹配,以减少累积误差。
        • 考虑引入外参校正模块,使用外部传感器(如IMU或GPS)提供的姿态补偿,提高双目融合的准确性。
      • 尝试集成一些开源SLAM库或使用专门针对双目视觉设计的SLAM框架,如 OpenVSLAM 或 RTAB-Map,它们可能已经针对特定场景进行了优化。

    评论

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 修改了问题 2月18日
  • 创建了问题 2月18日

悬赏问题

  • ¥15 铜与钢双金属板叠加在一起每种材料300mm长,18mm宽,4mm厚一端固定并加热至80℃,当加热端温度保持不变时另一端的稳态温度。ansys
  • ¥15 django5安装失败
  • ¥15 Java与Hbase相关问题
  • ¥15 后缀 crn 游戏文件提取资源
  • ¥15 ANSYS分析简单钎焊问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译