问题标签 [slam]
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.
python-2.7 - Ximea Python 脚本使用触发器导致空白图像
我正在尝试编写一个 Python (2.7.12) 和 OpenCV (3.2.0) 脚本,它将打开左右侧摄像头 Ximea xiQ 摄像头,设置一些参数,开始采集,每秒从每个摄像头拍摄一张照片,将它们写入文件,然后重复直到 KeyboardInterrupt。一切似乎都在工作,但是当我查看 .png 图像时,它们是空白的(或者在预览中显示为黑色,但它们都是 ~2.5 MB,所以不是空的)。
我是 OpenCV 和这些相机/API 的新手,还不能流利地使用 Python(但我可以绕过)。你们都看看我的脚本,让我知道你认为问题可能是什么吗?这是我正在尝试的代码(这只是包含的 Python 示例的更详细版本:
在此之前,我一直在使用罐头示例的稍微修改较少的版本......
...并且那个工作正常,即从每台相机拍摄了一张图像,并且所有图像都正确显示。所以,我认为这与我必须触发设置的方式有关。仅供参考,我使用来自 GPS 接收器的 1 PPS 信号作为 GPI 引脚的触发输入。
无论如何,如果您对此问题有任何建议或重构脚本以便更好地利用 OpenCV API,请告诉我。
谢谢!
python-2.7 - 使用 kinect 1 记录到 klg 文件
我正在尝试使用我的自定义 .klg 文件运行 SLAM 算法(ElasticFusion)。我尝试了以下两种方法:
第一种方法是从单独的深度和 rgb 图像 (.png) 文件及其时间戳信息手动构建 .klg 文件。我对此尝试了转换脚本我在这个Sequence 'freiburg1_desk',然后运行 ElasticFusion 。我得到了很好的结果和点云。但是当我尝试按照相同的步骤在自己的设备上记录环境时,我没有得到想要的结果或点云。我在实时记录中得到的结果要好得多。我想这是因为我用于深度图像可视化的代码。
我从上面的公式中得到我从这里
Stéphane Magnenat 在这篇文章中给出了一个更好的近似值:
distance = 0.1236 * tan(rawDisparity / 2842.5 + 1.1863) in meters
. 添加 -0.037 的最终偏移项使原始 ROS 数据居中。
我尝试的第二种方法是使用这个LoggerThomas Whelan (ElasticFusion) 建议的我运行这个记录器没有任何错误。
但我的深度和 RGB 图像出现黑屏。
我正在使用 Ubuntu 16.04 和 Kinect1。任何形式的建议或帮助将不胜感激
kinect - 我应该将 kinect 相机传感器放在哪里以进行大满贯?
我正在尝试使用 Kinect 传感器进行 RGB-D SLAM。
Kinect 传感器有一个 RGB 摄像头和一个深度摄像头。
我应该在哪里将我的相机放在 rosbag 的中心?
RGB相机的中心?深度相机的中心?在两个摄像头之间?
而且由于Kinect的两个摄像头距离有点远,那么这两个摄像头的成像是不是不一样呢?
ubuntu-16.04 - 使用 ORB-SLAM2 时出错
我试图用 SLAM 弄脏我的手,我从 ORB-SLAM2 库开始。
我已经下载了一个 TUM 序列并想使用 ROS。所以我按照这个页面的步骤进行操作。
在第 7 步第 2 部分中,当我运行时./build_ros.sh
,出现以下错误:
我去检查了g2o
文件夹,有一个文件名config.h
。
那么为什么我仍然收到错误消息?
opencv - 运行 ORB_SLAM2 库时出错
根据此链接中提到的要求,我已经安装了所有必需的组件,如 Pangolin、OpenCV 等......现在在构建 ORB_SLAM2 库后,我收到以下错误......
我无法解决这个错误..请帮助解决问题。谢谢你。
algorithm - ElasticFusion Slam 算法在 TUM RGB-D 基准测试中使用姿态图运行
我从TUM RGB-D SLAM Dataset and Benchmark下载了 Freiburg 桌面数据集,并将其转换为“.klg”,这是 slam 算法的自定义格式。我将此 klg 文件加载到 ElasticFusion 并运行 SLAM 算法。执行此操作时,3d 重建输出似乎足够好。
现在我想通过已经建立的轨迹信息建立 3d 重建。我从“.freibrug”中检索了先前运行的轨迹数据,并通过 ElasticFusion 将其转换为所需的格式。我只是将时间戳从秒更改为微秒,方法是将其乘以 1000000。并使用","而不是"" 空间来拆分变量。这次我使用“-p”标志和轨迹文件的路径信息运行算法。下面是我的运行命令。
我期待得到相同的点云。但是我得到的结果与预期的数据相去甚远。
正如你所看到的,它的准确性和重建水平远比之前的运行差。我的轨迹没有问题。下图显示我从上一次运行中检索到的轨迹接近于 TUM RGB-D Benchmark 提供的地面实况数据。
即使我使用groundtruth 数据运行它,它也不能构建好的3d 重建。这种结果的原因和缺失点是什么?
好的建议和答案将不胜感激。
opencv - opencv orb 特征检测器中的 bit_pattern_31_[256*4]
我正在学习 orb-slam 和 opencv 源代码,orb.cpp
其中位于 modules/features2d/src/ 目录中,我看到一个名为的位模式
但我真的不知道它的用途是什么。我搜索谷歌和 bing 很长时间没有给出任何答案。
那么有人知道这个majic位模式的用法或参考吗?
opencv - 如何从 ORB Slam 旋转和平移矩阵计算单应性?
有谁知道如何将从 ORB-SLAM 计算的旋转和平移矩阵转换为单应矩阵?此外,ORB-SLAM 的结果是归一化的,有没有办法缩放到像素大小?感谢!
orb - 从 orbslam 获得姿势
嗨,我需要使用 orbslam 来获得相机的姿势。我知道我应该使用诸如 mpCurrentKeyFrame->GetPose()
摆姿势之类的东西。我看到“GetPose()”函数将返回“Tcw”的源代码。这里的 Tcw 是什么意思?如果我从那个 Tcw 中提取“roll pitch yaw”和“x,y,z”,那么“roll pitch yaw”是相机欧拉角,“x,y,z”是相机的位置?我就是这样做的,我使用mpCurrentKeyFrame->GetPose()
来获取前几个关键帧的姿势。它为我返回第一个关键帧的以下内容
[0.99992567, 0.01199016, 0.0022002477, 0.00021382024;
-0.011967794, 0.99987924, -0.0099111488, -0.026224624;
-0.0023188184, 0.0098840808, 0.99994844, -0.0081501938;
0, 0, 0, 1]
如果我的理解是正确的,[0.00021382024,-0.026224624,-0.0081501938] 应该是 [x,y,z]。这些数字的单位是什么?是“米”还是其他?然后我从旋转矩阵中提取滚动俯仰偏航,在这里使用方程 欧拉角的单位是什么?
感谢您的回答!!