问题标签 [slam-algorithm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
point-clouds - 循环闭合 3d 点云
我希望了解如何实现一个简单的闭环算法。
这是我的情况:我有 x 个点云,并且我在 3d 中使用了配准算法,它给了我所有这些点云的姿势。
最后,我或多或少地在我的地图上的同一点结束,但有漂移。我可以使用我的配准算法来查看我的实际最终点云相对于我的初始点云的位置。
知道了这一点,我想根据我计算的“漂移”对我的其余点云进行全局优化,一直到我的初始点云。
我已经设法快速编写了一些关于翻译的代码,这似乎是正确的,但是旋转是有问题的,因为特征(墙壁等)的准确性/叠加降低了。
我一直在看:g2o、GTSAM、ISAM 库,都在寻求优化,但我觉得实现这些有很大的开销,它们都需要多个约束,设置大量参数等。
我什至不希望自动检测循环(我稍后会这样做),我只想这样做:这两个点云代表一个循环,在它们之间传播(正确)平移和旋转的漂移(我计算)到两者之间的所有点云。
提前致谢,
computer-vision - 五点算法产生几种解决方案。怎么查真假?
我使用五点算法来计算基本矩阵,参考http://users.cecs.anu.edu.au/~hongdong/new5pt_cameraREady_ver_1.pdf。最后,在消除方程 C(z) = 0 的虚部非零的根后,我得到了 4 个解。有什么技术可以确定真实估计吗?
c++ - 有没有办法从点云和深度数据构建和存储 3D 地图?
我目前正在研究一种 SLAM 算法,并且我成功地以点云的形式收集了深度和 RGB 数据。但是,我只将 Kinect 2.0 接收到的帧显示到屏幕上,仅此而已。
我想收集这些帧,当我移动 Kinect 时,我构建了一个更精细的地图(2D 或 3D),以便它可以帮助我进行定位或映射。
我对地图构建的想法就像我们从许多单个快照创建全景图像一样。
任何人都有线索,想法或算法来做到这一点?
ios - Kudan - 使用虚拟点进行对象遮挡
我想和Kudan一起开发类似Woold的游戏。所以我需要做两件事:
- 从 SLAM 框架中获取虚拟点标记。
- 基于虚拟点,为对象遮挡构建多边形。
我知道如何做 2,但我不知道如何从框架中获取虚拟点。
有没有办法从框架中获取虚拟点?或者有没有其他方法可以解决这个问题?
opencv - 使用 VR 游戏传感器跟踪 ios 上的用户翻译运动?
我开始在 ios 上尝试 VR 游戏开发。我从 google cardboard sdk 学到了很多东西。它可以跟踪用户的头部方向,但不能跟踪用户的翻译。这种不足导致用户只能从固定位置查看虚拟环境(我知道我可以在游戏中添加自动行走,但它不一样)。
我在网上搜索,有人说使用传感器无法完成平移跟踪,但似乎结合磁力计,您可以跟踪用户的运动路径,就像这个例子。
我还发现了另一种称为 SLAM 的方法,它使用相机和 opencv 进行一些特征跟踪,然后使用特征点信息来计算平移。这是来自13th Lab的一些示例。谷歌有一个更高级的探戈项目,但它需要硬件支持。
我对这类话题很陌生,所以我想知道,如果我想在我的游戏中不仅要跟踪头部方向,还要跟踪头部(或身体)的平移运动,我应该选择哪种方法。SLAM看起来还不错,但是难度也蛮大的,我觉得对cpu的影响还是挺大的。
如果你熟悉这个话题,请给一些建议,提前谢谢!
computer-vision - 需要视觉里程计公式的帮助
嘿,我尝试为单目相机做一个实时视觉里程计系统。现在我正在寻找一个方程来描述 2d 向量中的 3d 点运动。在研究时,我遇到了一个非常有趣的方程式。我指的是第22页。它基本上是在假设时间步长相对较小的情况下进行了简化。但现在我正在为图像坐标 x 和 y 苦苦挣扎。据说 x 会像 x=(px-px0) 和 y=(py-py0)。当我理解它时,p0 是旋转的中心。但如果是这种情况,那么整个公式对我的情况毫无意义,因为我需要先了解旋转中心。这又是基于翻译。
因此,也许可以帮助理解它,或者可以为我指出更好的方法。
c++ - 将 PCL 与 VS 2010 一起使用时出现 YOU_MIXED_DIFFERENT_NUMERIC_TY 错误
我正在编译一个使用 PCL 和 OPENCV 的开源 c++ 程序。问题似乎是不同 Eigen 对象之间的类型转换。
c:\program files (x86)\pcl 1.6.0\3rdparty\eigen\include\eigen\src\core\matrix.h(294): error C2338:
YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY
程序中关于 Eigen 的代码:
错误信息:
1>c:\program files (x86)\pcl
1.6.0\3rdparty\eigen\include\eigen\src\core\matrix.h(294): 错误 C2338:
YOU_MIXED_DIFFERENT_NUMERIC_TYPES__YOU_NEED_TO_USE_THE_CAST_METHOD_OF_MATRIXBASE_TO_CAST_NUMERIC_TYPES_EXPLICITLY 1\win32\projectpswin\32project \jointpointcloud.cpp(88) : 参见
函数模板实例化
'Eigen::Matrix<_Scalar,_Rows,_Cols>::Matrix(const
Eigen::MatrixBase &)' 被编译 1> 与 1> [ 1> _Scalar= float, 1> _Rows=4, 1> _Cols=4, 1> Derived=Eigen::Matrix 1> ] 1> f:\cpps\win32project1\win32project1\jointpointcloud.cpp(88) :见
引用函数模板实例化
'Eigen::Matrix<_Scalar,_Rows,_Cols>::Matrix(const
Eigen::MatrixBase &)' 正在编译 1> 1> [ 1> _Scalar=float, 1> _Rows=4, 1 > _Cols=4, 1> Derived=Eigen::Matrix 1> ] ========== 构建:0 成功,1 失败,0 最新,0 跳过 ======= ===
opencv - 巨大的重投影误差用额外的 GPS 数据对立体对上的适当点进行三角测量
我正在使用基于 OpenCV 库的 2d-3d 算法解决 VSLAM 任务。现在我正在尝试使用 GPS 数据进行地理配准。我变换每个摄像机的 R,t,然后使用平凡函数对匹配点进行三角剖分
, 其中 kp1 和 kp2 - 左右图像上的关键点, P1, P2 - 投影矩阵
我遇到了一个奇怪的问题:当我通过一些巨大的常数对相机中心进行简单的移动时,我在旧的合适的三角点上出现了很大的重投影错误。点三角剖分的 SVD 分解对相机中心尺度敏感吗?
ros - 在包 [ORB_SLAM] 中找不到节点 [ORB_SLAM]
运行此启动文件时,
我收到以下错误,
如何解决这个问题?
问题出在哪里?我的包结构应该如何?
我已经使用名为 ORB_SLAM 的 catkin_creake_pkg 创建了一个 ros 包,但我得到了同样的错误。
任何人都可以帮助解决这个问题吗?