Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Simultaneous localization and Mapping

Simultaneous localization and Mapping

作者头像
小飞侠xp
发布于 2018-11-12 08:42:48
发布于 2018-11-12 08:42:48
75500
代码可运行
举报
运行总次数:0
代码可运行
Graph SLAM

Graph SLAM 是众多SLAM方法中的一种

约束: 对于6个姿势:

  • 一初始位置约束
  • 5个附加相对运动约束
  • 8个地标位置相对测量约束 所有这些加起来总共14个约束

考虑上图,有4个姿势(包括初始位置x0)和一个地标。我们可以用同样的数学方法,对给定的图像有5个总约束。 你可能注意到,不是所有的约束都会提供有用的信息。例如:图中X2没有和地标之间进行测量。

将两次约束相加:

添加地标:

将没有联系的矩阵置为0:

为了实现Graph SLAM ,引入了

,该矩阵为方正,并标有所有机器人姿势

和所有地标

。当在两个姿势移动距离

,将这两个位置关联起来,可以将其表示为这些矩阵中的数值关系。下图为

的一个矩阵表示和

的一个向量表示:

为了确定姿势和地标位置

  • 初始位置 -3
  • 移动 5
  • 移动 3
约束更新

当机器人移动一定量

,需要更新约束矩阵,如下所示:

  • xtxt+1交叉点的索引处将 [[1, -1], [-1, 1]]添加到omega中
  • xtxt+1行中将 -dxdx添加到xi中
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np


def mu_from_positions(initial_pos, move1, move2):
    
    ## TODO: construct constraint matrices
    ## and add each position/motion constraint to them
    
    # Your code here
    omega = np.zeros((3,3))
    xi = np.zeros((3,1))
    
    omega[0][0] = 1
    # account for the first motion, dx = move1
    xi[0] = initial_pos
    
    omega += [[1., -1., 0.],
              [-1., 1., 0.],
              [0., 0., 0.]]
    
    xi += [[-move1],
           [move1],
           [0.0]]
    
    # account for the second motion
    omega += [[0., 0., 0.],
              [0., 1., -1.],
              [0., -1., 1.]]
    
    xi += [[0.],
           [-move2],
           [move2]]
    # display final omega and xi
    
    
    print('Omega: \n', omega)
    print('\n')
    print('Xi: \n', xi)
    print('\n')
    
    ## TODO: calculate mu as the inverse of omega * xi
    ## recommended that you use: np.linalg.inv(np.matrix(omega)) to calculate the inverse
    omega_inv = np.linalg.inv(np.matrix(omega))
    mu = omega_inv*xi
    return mu
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# call function and print out `mu`
mu = mu_from_positions(-3, 5, 3)
print('Mu: \n', mu)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.10.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Landmark Detection & Robot Tracking (SLAM)地标检测与机器人跟踪
我们将在2D网格世界中定位一个机器人。实时定位与地图构建的基础是从机器人的传感器和运动中收集信息,然后使用有关测量和运动的信息来重新构建一个该世界的地图。
小飞侠xp
2018/12/04
1.4K0
Landmark Detection & Robot Tracking (SLAM)地标检测与机器人跟踪
NumPy进阶80题完整版|附Notebook版本下载
大家好,NumPy进阶修改80题现在已经全部更新完毕,80道习题涵盖了NumPy中数组创建、访问、筛选、修改、计算等常用操作,如果不熟悉NumPy的读者可以刷一遍,因为里面的代码大多拿走就能用,所以如果你已经了解NumPy的基本操作,我更建议将这80题当成速查手册使用,随用随查!本文共分为两个部分:
刘早起
2020/07/23
2.4K0
NumPy进阶80题完整版|附Notebook版本下载
运用伪逆矩阵求最小二乘解
已经有工具可以解很多最小二乘的模型参数了,但是几个专用的最小二乘方法最多支持一元函数的求解,难以计算多元函数最小二乘解,此时就可以用伪逆矩阵求解了。
为为为什么
2023/04/09
1.9K0
python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」
kernel = np.array([1, 1, 1, 2]).reshape((2, 2))
全栈程序员站长
2022/09/25
5.8K0
python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」
基于Numpy的线性代数运算
numpy.matrix方法的参数可以为ndarray对象 numpy.matrix方法的参数也可以为字符串str,示例如下:
潇洒坤
2018/09/10
1.1K0
基于Numpy的线性代数运算
NumPy Beginner's Guide 2e 带注释源码 六、深入 NumPy 模块
# 来源:NumPy Biginner's Guide 2e ch6 矩阵的逆 import numpy as np A = np.mat("0 1 2;1 0 3;4 -3 8") print "A\n", A ''' A [[ 0 1 2] [ 1 0 3] [ 4 -3 8]] ''' # 求解矩阵的逆,不可逆会报错 inverse = np.linalg.inv(A) print "inverse of A\n", inverse ''' inverse of A [[-4.
ApacheCN_飞龙
2019/02/15
4670
NumPy Beginner's Guide 2e 带注释源码 六、深入 NumPy 模块
数据分析 ——— numpy基础(二)
接上篇文章,继续更新一些numpy下的一些常用函数的使用, 在这里多为矩阵的操作,创建矩阵,单位矩阵,求解逆矩阵等并进行one-hot编码,线性矩阵的特征向量,特征值,奇异值,行列式的计算。
andrew_a
2019/07/30
8880
手撸机器学习算法 - 线性回归
如果说感知机是最最最简单的分类算法,那么线性回归就是最最最简单的回归算法,所以这一篇我们就一起来快活的用两种姿势手撸线性回归吧;
HoLoong
2021/06/17
1.2K0
手撸机器学习算法 - 线性回归
【python】numpy常用方法总结
numpy是python一个库,无论是数据分析还是视觉算法,甚至一些脚本运算都需要运用到numpy库。99%的人学了忘,忘了学,本文针对numpy常用的方法做了一些总结。觉得有用记得收藏,以免下次找不到。
读书猿
2024/02/05
1690
Python NumPy学习指南:从入门到精通
NumPy,即Numerical Python,是Python中最为常用的科学计算库之一。它提供了强大的多维数组对象ndarray,并支持大量的数学函数和操作。与Python内置的列表相比,NumPy数组的计算速度更快,占用内存更少,非常适合处理大量的数据。
半截诗
2025/01/11
6550
在科学计算领域独领风骚,NumPy书写辉煌传奇
在数字世界的边缘,有一座神奇的城市,这座城市由无数个数据点和向量构成,街道上流淌着数不清的数组和矩阵。在城市的中心,耸立着一座巨大的科学计算塔,它的外墙是由数学符号和代码构成,散发着闪烁的数字光芒。城里的居民们穿梭于数组的巷道间,驾驭着向量的飞船,探索着数据的深海,寻找着数学的奥秘。这里,每一个函数、每一个对象,都是城市的一部分,编织成了一张无比庞大的数学网络。
一点sir
2024/03/25
1570
在科学计算领域独领风骚,NumPy书写辉煌传奇
Numpy核心语法和代码整理汇总!
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。
公众号机器学习与AI生成创作
2020/09/22
5770
Numpy核心语法和代码整理汇总!
分层风险平价:基于图论和机器学习的新资产配置方法(附代码)
风险平价是构建多样化和均衡投资组合十分流行选择。众所周知,大多数资产类别的未来表现很难预测。 通过仅使用资产的风险特征和相关矩阵构建投资组合,风险平价方法克服了这一缺点。Lohre、Rother和Schafer三位作者在经典风险平价基础上,提出了分层风险平价。他们的方法是:
量化投资与机器学习微信公众号
2020/02/26
2K0
NumPy Essentials 带注释源码 五、NumPy 中的线性代数
# 来源:NumPy Essentials ch5 矩阵 import numpy as np ndArray = np.arange(9).reshape(3,3) # matrix 可以从 ndarray 直接构建 x = np.matrix(ndArray) # identity 用于构建单位矩阵 y = np.mat(np.identity(3)) x ''' matrix([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
ApacheCN_飞龙
2019/02/15
9020
NumPy Essentials 带注释源码 五、NumPy 中的线性代数
简约而不简单|值得收藏的Numpy小抄表(含主要语法、代码)
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。
黄博的机器学习圈子
2020/07/14
4910
简约而不简单|值得收藏的Numpy小抄表(含主要语法、代码)
Python-Numpy多维数组 -- 矩阵库、线性代数、绘图库Matplotlib
NumPy 包包含一个 Matrix库numpy.matlib。此模块的函数返回矩阵而不是返回ndarray对象。
用户7886150
2021/01/07
1.6K0
numpy总结
df = pd.DataFrame({‘A’:[1,2,3],‘B’:[4,5,6],‘C’:[7,8,9]})
北山啦
2022/11/27
2.4K0
numpy总结
隐马尔科夫模型(HMM)笔记(公式+代码)
隐马尔科夫模型(hidden Markov model,HMM)是可用于标注问题的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型。隐马尔可夫模型在语音识别、自然语言处理、生物信息、模式识别等领域有着广泛的应用。
Michael阿明
2020/07/13
5.6K0
隐马尔科夫模型(HMM)笔记(公式+代码)
图深度学习入门教程(一)——基础类型
主要是基于图深度学习的入门内容。讲述最基本的基础知识,其中包括深度学习、数学、图神经网络等相关内容。该教程由代码医生工作室出版的全部书籍混编节选而成。偏重完整的知识体系和学习指南。在实践方面不会涉及太多基础内容 (实践和经验方面的内容,请参看原书)。
代码医生工作室
2020/03/04
1.6K0
图深度学习入门教程(一)——基础类型
码农眼中的数学之~矩阵专栏(附Numpy讲解)
吐槽一下:矩阵本身不难,但是矩阵的写作太蛋疼了 (⊙﹏⊙)汗 还好有 Numpy,不然真的崩溃了...
逸鹏
2018/07/15
3.3K0
相关推荐
Landmark Detection & Robot Tracking (SLAM)地标检测与机器人跟踪
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验