问题标签 [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.

0 投票
1 回答
172 浏览

c++ - 我在使用 boost::serialization 时遇到了一个问题,我的代码在 linux 中运行良好,但在 windows 中遇到了异常

我正在尝试使用 boost 保存由 ORB-SLAM 构建的地图,该代码在 linux 中运行良好,但是当我将其移动到 Windows 时,我在加载数据时遇到了异常。下面是我的部分代码,这是一个大项目,所以我只展示相关代码。

.h 中的一些代码

CPP简介

调用函数如下:

在 Linux 中保存和加载都可以,但是加载只会抛出 boost::archive::archive_exception 问题,没有告诉我任何细节。

0 投票
1 回答
319 浏览

computer-vision - 使用深度学习特征的 SLAM 系统?

有没有人尝试过开发一个使用深度学习特征而不是经典AKAZE/ORB/SURF特征的 SLAM 系统?

浏览最近的计算机视觉会议,似乎有不少关于成功使用神经网络来提取特征和描述符的报告,并且基准测试表明它们可能比经典的计算机视觉等效物更强大。我怀疑提取速度是个问题,但假设一个有不错的 GPU(例如 NVidia 1050),那么在具有深度学习特征的 640x480 灰度图像上构建一个以 30FPS 运行的实时 SLAM 系统是否可行?

0 投票
0 回答
965 浏览

computer-vision - 使用 g2o 库进行捆绑调整。如何验证?

我有一个简单的捆绑调整功能,使用 g2o 库来优化相机姿势和 3d 地图点。我传入两个KeyFrames,每个包含:

以及 a vectorof Mappoint,其中包含:

我的功能是:

我运行该功能,它似乎可以工作,打印:

但是我怎样才能验证这些结果呢?g2o 中有没有办法在运行优化之前和之后打印重投影错误?或者我在上述结果中需要的信息是否在某处?

0 投票
1 回答
659 浏览

python - 激光雷达数据图

SLAM 使用 RpLiDar 和 ROS

您好,我有一个包含两列 [Degrees, Distance] 的表格,我需要显示该信息以围绕我的位置制作地图。任何人都知道这样做的好方法,例如每次我在中心并且我检测到 90 度是什么,所以我在那里打印一个点。

我正在使用 Ubuntu 18.04 LTS、Python 2.7.15、ROS melodic 和 RpLidar A2M8

编辑

我用它来绘制我的极坐标表,但我不知道如何实时绘制它

0 投票
3 回答
117 浏览

r - 交叉产品滚动值

我试图找出一种基于数据向量计算滚动总和值的方法。下面是一个示例数据框和我试图计算的答案,但无法找出正确的解决方案。本质上,我试图将每个 x 列值乘以 y 向量并根据周期求和。

我查看了 slam 包以及 crossprod 功能,但无济于事。

提前致谢!

0 投票
0 回答
24 浏览

computer-vision - 使用环境理解稳定物体

我正在寻找在世界上特定位置放置和稳定对象的最佳解决方案。我考虑了解 3D 环境及其特征点,以便对环境进行完整的 3D“扫描”,并以此了解 AR 对象的位置。

我尝试过使用 ARCore 云锚点,但不幸的是,只依赖一个锚点,在光线投射和平面的交叉处,并没有给我稳定的对象——它出现在不同的地方并且没有保持稳定,这就是为什么我想了解如何使用环境的最佳 3D 扫描。

我也愿意听听其他技术。

谢谢!

0 投票
1 回答
527 浏览

python - 如何使用 rplidar 和 hector-slam/hector-mapping 找到障碍物?

在工业领域,一个机器人会捡起苹果并把它们分拣出来。机器人会快速移动。在这种情况下,如果有人靠近机器人,它应该放慢速度。为此,我想使用固定位置的 Rplidar A2。使用 Rplidar 我想检测任何人或其他障碍物正在接近危险区域。到目前为止,使用 Rplidar python 包我能够从中提取数据。由于我是全新的,我不知道如何实现这一点。

我在想我可以事先使用 hector slam 进行环境映射,我在这里看到过,这样机器人就可以感知环境,然后当环境发生变化时,它可以决定是否有人或障碍物靠近机器人或不是。在我得到环境的图像之后,下一步是什么?图像处理是 nedded 吗?

如果有人告诉我如何实现这一目标,我会很高兴,

0 投票
1 回答
1096 浏览

ros - 在真实 TurtleBot 中测试的基于里程计的 slam 算法生成的劣质地图

我目前正在一个真正的TurtleBot(ROS Kinetic)中测试几种 slam 算法。尽管 TurtleBot 上的一切似乎都运行良好,但我在来自基于里程计的 slam 算法的地图上遇到了一个问题。尽管我更改了TurtleBot底座以确定底座是否存在硬件或里程计问题,但地图保持不变。我使用的激光雷达最大射程可达 17m。

Gmapping(使用里程计)我用这些参数测试了gmapping:

整个实验室测试的Gmapping的地图在这里: 在此处输入图像描述

KartoSlam(使用里程计) KartoSlam 生成的地图在实验室的房间中使用默认参数进行测试是这样的。 在此处输入图像描述

CRSM Slam(未使用里程计) CRSM Slam 生成的地图在实验室房间进行测试,不使用里程计。如您所见,CRSM 地图比前两个要好得多。 在此处输入图像描述

问题:

既然我已经在两个不同的 TurtleBots 上尝试过算法,我应该在哪里寻找解决方案?我怎么能提高地图质量,因为到目前为止我得到的真的很差?

0 投票
1 回答
1032 浏览

python - 是否有将极坐标网格映射到笛卡尔网格的快速 Numpy 算法?

我有一个包含一些极坐标数据的网格,模拟从激光雷达获得的数据以解决 SLAM 问题。网格中的每一行代表角度,每一列代表一个距离。网格中包含的值存储了笛卡尔世界占用地图的加权概率。

极坐标

转换为笛卡尔坐标后,我得到如下内容:

极坐标

此映射旨在用于具有至少 10 个粒子的 FastSLAM 应用程序。我获得的性能对于可靠的应用程序来说还不够好。

我尝试使用嵌套循环,使用 scipy.ndimage.geometric_transform 库并使用预先计算的坐标直接访问网格。

在这些示例中,我使用的是 800x800 网格。

嵌套循环:大约 300 毫秒

Scipy 库(在此处描述):aprox 2500ms(因为它插入了空单元格,所以得到更平滑的结果)

预计算索引:80ms

我不太习惯 python 和 Numpy,我觉得我正在跳过一种简单快捷的方法来解决这个问题。有没有其他方法可以解决这个问题?

非常感谢大家!

0 投票
0 回答
33 浏览

machine-learning - 如何在相机以外的其他传感器上使用 SLAM?

我有一个传感器,可以读取每个位置的电磁场强度。

并且每个位置的场都是稳定且独特的。所以读数只是位置的函数,如下所示:reading = emf(x,y,z)

读数由 3 个数字组成(不是位置)。

我想找到函数的反emf函数。这意味着我想找到pos这样定义的函数:x,y,z = pos(reading)

我无法同时使用emfpos功能。我想我想pos使用神经网络逐步估计函数。

所以我通过 IMU 的空间输入reading和加速传感器。ax,ay,az加速度不是那么准确。我想使用这 2 个输入来帮助我确定传感器随时间的位置。您可以假设第一次读数时起始位置为 0,0,0。

简而言之,输入是readingax,ay,az每个时间步上,输出将根据函数的权重进行调整,pos或者输出将直接定位。

我一直在阅读SLAM(同时定位和映射)算法,我认为这可能对我的情况有所帮助,因为我的问题是概率性的。如果我准确地知道加速度,我不需要任何概率,但加速度是不准确的。

所以我想知道如何根据SLAM对这个问题进行建模?不过,我没有相机来做基于视觉的 SLAM。

为什么我认为这很容易处理?如果第一个读数是1,1,1并且位置在原点0,0,0,并且我移动传感器,则位置可能会漂移,因为传感器以前从未见过其他读数,但在我回到原点后,读数将1,1,1再次出现,因此传感器应该报告原点0,0,0作为输出。在传感器移动期间,算法应过滤加速度,以便所有先前的位置都有意义。