Questions tagged «slam»

SLAM(同步本地化和映射)是指机器人通过其传感器数据(映射)构建其环境的地图,并同时跟踪其在该地图中的位置(本地化)。

8
没有GPS的绝对定位
使用IMU,机器人可以估计其相对于其起始位置的当前位置,但是随着时间的流逝会产生误差。GPS对于提供不受局部误差累积影响的位置信息特别有用。但是GPS不能在室内使用,甚至在户外也可能参差不齐。 那么,在不使用GPS的情况下,机器人可以使用哪些方法或传感器进行定位(相对于某个参考系)?

2
EKF-SLAM更新步骤,卡尔曼增益变得奇异
我正在为SLAM使用EKF,并且更新步骤遇到了一些问题。我收到警告,说K奇异,rcond计算为near eps or NaN。我想我已经将问题追溯到Z的倒数了。有没有一种方法可以计算出Kalman增益而不倒数最后一项? 我不是100%肯定这是问题的原因,所以我也将整个代码放在这里。主要入口是slam2d。 function [ x, P ] = expectation( x, P, lmk_idx, observation) % expectation r_idx = [1;2;3]; rl = [r_idx; lmk_idx]; [e, E_r, E_l] = project(x(r), x(lmk_idx)); E_rl = [E_r E_l]; E = E_rl * P(rl,rl) * E_rl'; % innovation z = observation - e; Z …

3
如何确定ICP比赛的质量?
在使用迭代最近点(ICP)算法来识别两个匹配点云之间的关联的SLAM前端中,如何确定算法是否陷入局部最小值并返回错误结果? 该问题定义为匹配两个点云,这两个点云都是某个任意表面结构的样本,并且样本区域的重叠率为0-100%,这是未知的。我知道Trimmed ICP变体通过反复尝试确定重叠来起作用,但即使是这样,也可以停留在局部最小值中。 天真的方法是查看所标识的点对的均方误差。但是,如果没有抽样的估计,这似乎是一个危险的阈值。在Leica Cyclone手册中,他们建议手动检查线对误差直方图。如果具有高斯形状,则拟合度良好。如果出现线性下降,则匹配可能不好。这对我来说似乎是合理的,但是我从未见过它在算法中使用过。
14 slam 


1
SLAM算法如何处理不断变化的环境?
我正在为项目做一些基础工作,并且对SLAM技术的当前状态有疑问。 当配备SLAM的设备检测到对象时,该对象的位置将被存储。如果查看设备正在生成的点云,您将看到该对象的点,并且由此对象生成的模型将在此处包含几何。 如果将对象放置在先前为空的空间中,则会检测到该对象并添加点。后续模型将具有描述此新对象的几何形状。 如果移除了该物体,设备会如何反应?据我所知,SLAM系统倾向于将这些点留在原地,从而导致“重影”几何。有一些算法可以忽略由瞬态接触引起的孤点,但是保持足够长的时间来建立实体模型的对象将保留在设备的内存中。是否有任何系统能够检测以前占用的空间是否已空?
13 slam 


1
SAM和SLAM有什么区别?
是什么区别平滑和制图(SAM),并同时定位和地图(SLAM)?这些一般方法似乎密切相关。有人可以描述差异吗?
12 slam 

4
如何从立体摄像机获取密集点云?
我正在尝试使用立体声相机进行场景重建,但是通常只能获得稀疏点云(即,超过一半的图像没有任何适当的深度信息)。 我意识到,立体处理算法依赖于图像中纹理的存在,并且可以调整一些参数以获得更好的结果,例如视差范围或相关窗口大小。但是,尽管我调整了这些参数,但我永远无法获得甚至与使用Kinect等有源传感器所获得的结果几乎遥不可及的结果。 我之所以想要这样做,是因为与相邻区域相对应的点云经常没有足够的重叠空间来使我获得匹配,因此严重损害了重建。 我向计算机视觉专家提出的问题如下:我应该怎么做才能获得更密集的点云(无需随意修改办公室环境)?

1
谁创造(或普及)了“ SLAM”一词?
根据Wikipedia在SLAM上的文章,最初的想法来自Randal Smith和Peter Cheeseman(关于空间不确定性的估计和表示 [PDF]),1986年由Hugh F. Durrant-Whyte和JJ Leonard进行了改进(同时进行地图绘制)并在1991年实现了自主移动机器人的本地化)。 但是,没有一篇论文使用术语“ SLAM”。这个术语来自哪里(和何时)?是否有某个特定的作者或白皮书使之流行?
10 slam 

1
最小二乘图加入
这里有很多背景,请滚动到底部以查找问题 我正在尝试“ 线性最小二乘问题离SLAM有多远”中描述的地图连接算法;具体地,公式(36)。我写的代码似乎总是采用第二张地图的值作为地标位置。我的问题是,我是正确理解文本还是在犯某种错误。我将在理解公式的同时尝试说明它们,并说明我的代码如何实现这些公式。我正在尝试仅合并两个本地地图的简单情况。 从论文(36)中可以看出,将两个局部地图是在寻找一个状态向量,该状态向量将最小化:Xjoin,relXjoin,relX_{join,rel} ∑j=1k(XLj^−Hj,rel(Xjoin,rel))T(PLj)−1(XLj^−Hj,rel(Xjoin,rel))∑j=1k(XjL^−Hj,rel(Xjoin,rel))T(PjL)−1(XjL^−Hj,rel(Xjoin,rel)) \sum_{j=1}^{k}(\hat{X_j^L} - H_{j,rel}(X_{join,rel}))^T(P_j^L)^{-1}(\hat{X_j^L} - H_{j,rel}(X_{join,rel})) 扩展为两个本地地图和我有:XL1^X1L^\hat{X_1^L}XL2^X2L^\hat{X_2^L} (XL1^−Hj,rel(Xjoin,rel))T(PL1)−1(XL1^−Hj,rel(Xjoin,rel))+(XL2^−Hj,rel(Xjoin,rel))T(PL2)−1(XL2^−Hj,rel(Xjoin,rel))(X1L^−Hj,rel(Xjoin,rel))T(P1L)−1(X1L^−Hj,rel(Xjoin,rel))+(X2L^−Hj,rel(Xjoin,rel))T(P2L)−1(X2L^−Hj,rel(Xjoin,rel)) (\hat{X_1^L} - H_{j,rel}(X_{join,rel}))^T(P_1^L)^{-1}(\hat{X_1^L} - H_{j,rel}(X_{join,rel})) + (\hat{X_2^L} - H_{j,rel}(X_{join,rel}))^T(P_2^L)^{-1}(\hat{X_2^L} - H_{j,rel}(X_{join,rel})) 据我了解,子图可以看作是全局图的综合观察,因此是与子图相关联的噪声(而不是我用来制作子图的EKF中的过程噪声。可能不会有所不同)。PLjPjLP^L_j 向量是第一个地图的姿态,第二个地图的姿态以及两个地图中地标的并集。Xjoin,relXjoin,relX_{join,rel} 函数为:Hj,relHj,relH_{j,rel} ⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢Xr(j−1)erjeϕr(j−1)erjeR(ϕrmj1er(j−1)e)(Xrmj1efj1−Xrmj1er(j−1)e)...R(ϕrmjler(j−1)e)(Xrmjlefjl−Xrmjler(j−1)e)Xrj−1efj(l+1)...Xrj−1efjn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥[Xrjer(j−1)eϕrjer(j−1)eR(ϕr(j−1)ermj1e)(Xfj1rmj1e−Xr(j−1)ermj1e)...R(ϕr(j−1)ermjle)(Xfjlrmjle−Xr(j−1)ermjle)Xfj(l+1)rj−1e...Xfjnrj−1e] \begin{bmatrix} X_{r_{je}}^{r_{(j-1)e}}\\ \phi_{r_{je}}^{r_{(j-1)e}}\\ R(\phi_{r_{(j-1)e}}^{r_{m_{j1}e}}) (X^{r_{m_{j1}e}}_{f_{j1}} - X^{r_{m_{j1}e}}_{r_{(j-1)e}})\\.\\.\\.\\ R(\phi_{r_{(j-1)e}}^{r_{m_{jl}e}}) (X^{r_{m_{jl}e}}_{f_{jl}} - X^{r_{m_{jl}e}}_{r_{(j-1)e}})\\ X_{f_{j(l+1)}}^{r_{j-1e}}\\ .\\.\\.\\ X_{f_{jn}}^{r_{j-1e}} \end{bmatrix} 我不相信我的以下评估是正确的: 前两个元素是机器人在上一张地图的参考框中的姿势。例如,对于地图1,该姿势将位于初始帧中;对于地图2,它将位于地图1的框架中。t0t0t_0 下一组元素是地图1和地图2共有的元素,它们被转换为地图1的参考系。 最后一行是地图2特有的功能,位于第一张地图的框架中。 我的matlab实现如下: function [G, fval, …
10 slam 

2
点云图和图图之间的关系
我最熟悉作为点云的SLAM映射,通常以矢量形式出现,如。我也了解如何使用EKF创建这样的地图。<x,y,θ,f1x,f1y,...,fnx,fny><x,y,θ,f1x,f1y,...,fnx,fny> 今天,我遇到了.graph文件格式,正如您所期望的那样,该文件格式由顶点和边组成: VERTEX2 id x y orientation EDGE2 observed_vertex_id observing_vertex_id forward sideward rotate inf_ff inf_fs inf_ss inf_rr inf_fr inf_sr 我知道矩阵和图之间存在联系(例如,邻接矩阵)。但是我不清楚地图的这种图形格式如何等效于我熟悉的点云地图。 有什么关系?顶点既是姿势又是地标?它们在全球参考框架中吗?如何从速度信息和距离/方位传感器中创建出来?在图谱图和点云之间有转换吗?
9 slam  mapping 

2
将四旋翼引向目标
我正在研究四旋翼。我知道它的位置- ,在那里我想去-目标位置b,并从我计算矢量c ^ -将带我去我的目标的单位向量:一个aabbbCcc c = b - a c = normalize(c) 由于四旋翼飞机可以在没有旋转的情况下向任何方向移动,所以我试图做的是 通过机器人偏航角旋转Ccc 将其分为分量X ,ÿx,yx, y 将它们作为侧倾角和俯仰角传递给机器人。 问题在于,如果偏航角为0°±5,则此方法有效,但如果偏航角接近+90或-90,则它将失败并转向错误的方向。我的问题是我在这里缺少明显的东西吗?
9 quadcopter  uav  navigation  slam  kinect  computer-vision  algorithm  c++  ransac  mobile-robot  arduino  microcontroller  machine-learning  simulator  rcservo  arduino  software  wifi  c  software  simulator  children  multi-agent  ros  roomba  irobot-create  slam  kalman-filter  control  wiring  routing  motion  kinect  motor  electronics  power  mobile-robot  design  nxt  programming-languages  mindstorms  algorithm  not-exactly-c  nxt  programming-languages  mindstorms  not-exactly-c  raspberry-pi  operating-systems  mobile-robot  robotic-arm  sensors  kinect  nxt  programming-languages  mindstorms  sensors  circuit  motion-planning  algorithm  rrt  theory  design  electronics  accelerometer  calibration  arduino  sensors  accelerometer 

3
我可以使用哪种算法使用多个超声波传感器来构建探索区域的地图?
如今,超声波传感器非常便宜,这使其成为许多业余机器人应用的流行选择,我想在机器人周围使用一堆传感器(例如10个),并使用算法来构建区域的粗略地图(例如机器人会探索它。)在此阶段,我对处理移动物体不感兴趣,只是精确定位静止的物体,而我将使用GPS进行定位。我意识到诸如激光扫描仪之类的其他组件将产生更加准确的结果,但是这种设备在天文上也更加昂贵。 是否存在用于此目的的算法?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.