第1讲——预备知识

一、视觉SLAM十四讲在讲些啥

SLAM:Simultaneous Localization and Mapping 翻译:同时定位地图构建

搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动
特定传感器主要为相机时,就称为视觉SLAM

二、咋使用这本书

理论+实践

理论部分

第1讲:预备知识,习题可以自测一下自己是否具备相应的学习这本书的最低要求
第2讲:SLAM系统概述,介绍SLAM系统的组成,各个模块的作用;以及编程环境的搭建和IDE的使用
第3讲:三维空间刚体运动,包括旋转矩阵、欧拉角、四元数等
第4讲:李群和李代数,介绍李代数的相关定义和使用方式
第5讲:针孔相机模型以及图像在计算机中的表达,通过OpenCV调用相机内外参数
第6讲:非线性变换,包括状态估计理论基础、最小二乘问题、梯度下降方法等

实践部分

第7讲:特征点法的视觉里程计,包括特征提取与匹配、对极几何约束的计算、PnP和ICP等;用这些方法估计两个图像之间的运动
第8讲:直接法的视觉里程计,包括光流和直接法的原理;实现一个简单的直接发运动估计
第9讲:后端优化,对Bundle Adjustment(BA)的深入讨论,包括基本的BA以及如何利用稀疏性加速求解过程;用Ceres和g2o分别编写BA程序
第10讲:后端优化中的位姿图;使用g2o对一个位姿球进行优化
第11讲:回环检测,以词袋方法为主;使用DBoW3编写字典训练程序和回环检测程序
第12讲:地图构建,使用单目进行稠密深度图的估计(该方法特别不可靠),学习RGB-D的稠密地图构建过程;编写极线搜索和块匹配程序,在RGB-D中进行点云地图和八叉树地图构建
第13讲:工程实践,搭建一个双目视觉里程计框架,运用之前学过的知识进行实现和优化
第14讲:介绍开源SLAM方案和未来发展方向

本书源码下载:slambook2

三、自测习题

1,有线性方程Ax=b,若已知A,b,需要求解x,该如何求解?这对A和b有哪些要求?
提示:从A的维度和秩角度来分析。
答:
在这里插入图片描述

2,高斯分布是什么?它的一维形式时什么样子?它的高维形式时什么样子?

答:高斯分布(Gaussian distribution),也称正态分布(Normal distribution)
正态曲线呈钟型,两头低,中间高,左右对称因其曲线呈钟形,因此又称之为钟形曲线。

随机变量X服从一个数学期望为μ方差为σ²正态分布,记为N(μ,σ²)
其概率密度函数为正态分布的数学期望μ决定了其位置,其标准差σ决定了分布的幅度

一维高斯分布(正态分布):在这里插入图片描述

μ = 0,σ = 1时的正态分布是标准正态分布
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt# 高斯函数
def gaussian(x, amplitude, mean, std):return amplitude * np.exp(-(x - mean) ** 2 / (2 * std ** 2))# 参数
amplitude = 1 # 高峰值
mean = 0      # 平均值
std = 1       # 标准差
x = np.linspace(-5, 5, 400)  # x轴的范围# 计算高斯函数
y = gaussian(x, amplitude, mean, std)# 绘图
plt.plot(x, y, color='blue', linewidth=2)
plt.title('Gaussian Function')
plt.xlabel('x')
plt.ylabel('y')
plt.grid()
plt.show()

效果图:在这里插入图片描述

二维高斯函数:
在这里插入图片描述
二维高斯函数3D展示

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Dx,y = np.mgrid[-5:5:200j,-5:5:200j]
sigma = 2
z = 1/(2 * np.pi * (sigma**2)) * np.exp(-(x**2+y**2)/(2 * sigma**2))fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='rainbow',alpha = 0.9)plt.show()

效果图如下:在这里插入图片描述

二维高斯函数平面彩色展示

import numpy as np
from matplotlib import pyplot as plt# 定义二维高斯函数
def gaussian_2d(x, y, amp, x0, y0, sx, sy):return amp * np.exp(-((x - x0) ** 2 / (2 * sx ** 2) + (y - y0) ** 2 / (2 * sy ** 2)))# 参数设置
amp, x0, y0, sx, sy = 1, 0, 0, 1, 1  # 高斯函数的参数# 创建二维网格
x = np.linspace(-5, 5, 200)
y = np.linspace(-5, 5, 200)
x, y = np.meshgrid(x, y)# 计算高斯函数
gauss_2d = gaussian_2d(x, y, amp, x0, y0, sx, sy)# 绘制高斯函数
plt.imshow(gauss_2d.T, extent=[x.min(), x.max(), y.min(), y.max()], cmap='viridis')
plt.colorbar()
plt.show()

效果图如下:在这里插入图片描述
二维高斯函数平面灰度图展示

import numpy as np
import matplotlib.pyplot as plt# 二维高斯函数
def gaussian_2d(x, y, sigma_x, sigma_y, rotation, x_0, y_0, A):angle = rotation * np.pi / 180x_shift = x - x_0y_shift = y - y_0gauss_expr = A * np.exp(-(x_shift ** 2 / (2 * sigma_x ** 2) + y_shift ** 2 / (2 * sigma_y ** 2)))\* np.cos(2 * np.pi * rotation) - 2 * np.pi * rotationreturn gauss_expr# 定义二维网格
x = np.linspace(-10, 10, 400)
y = np.linspace(-10, 10, 400)
x, y = np.meshgrid(x, y)# 高斯参数
sigma_x, sigma_y = 2, 3
rotation = 0  # 旋转角度
x_0, y_0 = 0, 0
A = 1  # 高斯峰值# 计算高斯函数
z = gaussian_2d(x, y, sigma_x, sigma_y, rotation, x_0, y_0, A)# 绘图
plt.imshow(z, cmap='gray', extent=[x.min(), x.max(), y.min(), y.max()], origin='lower')
plt.colorbar()
plt.show()

效果图如下:在这里插入图片描述

3,你知道C++中的类吗? 你知道STL吗? 你使用过它们吗?
答:
C++中的类——百度百科
在现实世界中,经常有属于同一类的对象
例如,你的自行车只是世界上很多自行车中的一辆。在面向对象软件中,也有很多共享相同特征的不同的对象:矩形、雇用记录、视频剪辑等。可以利用这些对象的相同特征为它们建立一个集合。而这个集合就称为类。
类是定义同一类所有对象的变量和方法的蓝图或原型
例如,可以建立一个定义包含当前档位等实例变量的自行车类。这个类也定义和提供了实例方法(变档、刹车)的实现。实例变量的值由类的每个实例提供
因此,当你创建自行车类以后,必须在使用之前对它进行实例化
当创建类的实例时,就建立了这种类型的一个对象,然后系统为类定义的实例变量分配内存。然后可以调用对象的实例方法实现一些功能
相同类的实例共享相同的实例方法
除了实例变量和方法,类也可以定义类变量和类方法
可以从类的实例中或者直接从类中访问类变量和方法。类方法只能操作类变量 - 不必访问实例变量或实例方法

标准模板库(Standard Template Library,STL)——百度百科
标准模板库是一个C++软件库,大量影响了C++标准程序库但并非是其的一部分。其中包含4个组件,分别为算法、容器、函数、迭代器
模板是C++程序设计语言中的一个重要特征,而标准模板库正是基于此特征。标准模板库使得C++编程语言在有了同Java一样强大的类库的同时,保有了更大的可扩展性

以前备赛蓝桥杯,刷题OJ的时候经常使用

4,你以前怎样书写C++程序?(你完全可以说只在Visual C++6.0下写过CH+工程只要你有写C++和C语言的经验就行。)
答:我一般用CodeBlocks这个IDE编写C++程序

5,你知道C++11标准吗? 你听说过或用过其中哪些新特性? 有没有其他的标准
答:C++11——百度百科
C++11标准是 ISO/IEC 14882:2011 - Information technology – Programming languages – C++ 的简称
C++11标准由国际标准化组织(ISO)和国际电工委员会(IEC)旗下的C++标准委员会(ISO/IEC JTC1/SC22/WG21)于2011年8月12日公布 [2],并于2011年9月出版。
C++11包含了核心语言的新机能,并且拓展C++标准程序库,并且加入了大部分的C++ Technical Report 1程序库(数学上的特殊函数除外)
C++标准程序库的变更(标准库组件的升级;线程支持;多元组类型;散列表;正则表达式;通用智能指针;可扩展的随机数功能;包装引用;多态函数对象包装器;用于元编程的类型属性;用于计算函数对象返回类型的统一方法)

6,你知道Linux吗?你有没有至少使用过一种(不算安卓)操作系统,比如 Ubuntu?
答:知道,玩过CentOS和Ubuntu

7,Linux的目录结构是什么样的? 你知道哪些基本命令,比如 Is,cat等?
答:Linux 目录结构像一棵树一样布局,其中/root目录是树的主干,其余目录从该树干分支出来
目录主要包含三种类型的文件:
通用文件:通用文件是包含 ASCII 或二进制数据的普通文件。视频、图像、文档等是通用文件的常见示例。
目录文件:在 Linux 中,目录也被归类为作为其他文件类型和目录的存储空间的文件。
设备文件:您可能熟悉看到在 Windows 中插入 USB 时创建的F:或G:驱动器。同样,在 Linux 中,USB 和其他硬件组件表示为/dev/device_id文件。

更多Linux基本操作命令可参考博文:Linux基本操作命令

8,如何在 Ubuntu系统中安装软件(不打开软件中心的情况下)? 这些软件被安装在什么地方? 如果只知道模糊的软件名称(比如想要装一个名称中含有Eigen 的库),应该如何安装它?
答:softname参数为要安装的软件
安装软件命令:sudo apt-get install softname
卸载软件命令:sudo apt-get remove softname

安装的软件默认安装目录为/usr/bin

想要装一个名称中含有Eigen的库,首先搜索包sudo apt search eigen,然后再下载安装sudo install XXX即可

9*,花一个小时学习Vim,因为你迟早会用它。你可以在终端中输入vimtutor阅读一遍所有内容。我们不需要你非常熟练地操作它,只要能够在学习本书的过程中使用它输入代码即可。不要在它的插件上浪费时间,不要想着把Vim用成 IDE,我们只用它做文本编辑的工作
答:好的高博!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794037.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WWDC24定档6月 | 崩坏3将推Mac系统版 苹果AI启航 visionOS 2.0将系数登场WWDC24

这几天又有一件苹果用户圈大事发生了!WWDC24正式定档,将在6月10日-14日召开,届时一众软件系统,包括iOS18,iPadOS,WatchOS,VisionOS等等,都将迎来更新。另外就是手游崩坏3官宣&#x…

有效感受野可视化学习

有效感受野可视化 过程记录创建环境准备数据、脚本脚本测试 其他参考尝试运行 过程记录 创建环境 conda create -n ERF python3.8 -y conda activate ERF pip3 install empy rospkg pyyaml catkin_pkg conda install pytorch2.1.0 torchvision0.16.0 torchaudio2.1.0 pytorch…

基于k8s的高性能综合web服务器搭建

目录 基于k8s的高性能综合web服务器搭建 项目描述: 项目规划图: 项目环境: k8s, docker centos7.9 nginx prometheus grafana flask ansible Jenkins等 1.规划设计整个集群的架构,k8s单master的集群环境&…

【R】Error in library(foreach) : 不存在叫‘foreach’这个名字的程辑包

Error in library(foreach) : 不存在叫‘foreach’这个名字的程辑包 此外: Warning message: package ‘parallel’ is a base package, and should not be updated 解决方法 缺少名为 foreach 的包,使用install.packages("foreach")将名为foreach 的包…

Qt事件学习案例

视频链接 https://www.bilibili.com/video/BV18B4y1K7Cs?p7&spm_id_frompageDriver&vd_sourcefa4ef8f26ae084f9b5f70a5f87e9e41bQt5跟着视频做即可,Qt6部分代码需要改动,改动的地方注释有写 素材 百度云 链接:https://pan.baidu.com/s/158j…

Mybatis——一对一映射

一对一映射 预置条件 在某网络购物系统中,一个用户只能拥有一个购物车,用户与购物车的关系可以设计为一对一关系 数据库表结构(唯一外键关联) 创建两个实体类和映射接口 package org.example.demo;import lombok.Data;import …

STM32H5 读取温度传感器校准值时进 HardFault 的原因分析

1.前言 有客户反馈,在使用 STM32H5 读取温度传感器校准值地址时,会进入 HardFault,而在其他系列芯片中读取这个参数时并没有此现象。在 NUCLEO-H563ZI 开发板上去复现此问题,发现只有开启 ICACHE 后才会复现,初步验证…

【旅行商问题TSP】基于大邻域搜索算法LNS

课题名称:大规模邻域搜索算法LNS求解TSP问题 版本时间:2024-04-01 程序运行:直接运行LNS_TSP.m 文件即可 代码获取方式: QQ:491052175 VX:Matlab_Lover 模型介绍: 第一步:设定…

如何对抓取的文本进行分词、词频统计、词云可视化和情感分析

目录 一、引言 二、文本分词 三、词频统计 四、词云可视化 五、情感分析 六、总结 一、引言 在大数据时代,文本数据的处理和分析显得尤为重要。对于爬虫抓取的大量文本数据,如何进行高效、准确的处理和分析,是每一个数据分析师和开发…

9Proxy,跨境电商一站式解决方案

文章目录 跨境电商什么是跨境电商跨境电商的机遇跨境电商技术支撑 海外代理IP什么是海外代理IP海外代理IP的作用如何选择海外代理IP 9Proxy9Proxy的优势9Proxy的解决方案价格汇总搜索引擎优化市场调查多重核算数据抓取广告技术 价格上手体验注册登录下载安装数据采集 总结福利 …

【Unity每日一记】如何从0到1将特效图集制作成一个特效

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

Java毕业设计 基于SSM jsp商城系统 美妆系统

Java毕业设计 基于SSM jsp商城系统 美妆系统 SSM jsp 商城系统 美妆系统 功能介绍 首页 分类展示商品 搜索商品 登录 注册 邮箱激活 购物车 结算 支付 我的订单 个人信息设置 后台管理 登录 商品管理 添加修改下架商品 商品类型管理 添加修改删除分类 订单管理 确认发货 取消…

Vue使用高德地图(快速上手)

1.在高德平台注册账号 2.我的 > 管理管理中添加Key 3.安装依赖 npm i amap/amap-jsapi-loader --save 或 yarn add amap/amap-jsapi-loader --save 4.导入 AMapLoade import AMapLoader from amap/amap-jsapi-loader; 5.直接上代码,做好了注释(初…

Lafida多目数据集实测

Lafida 数据集 paper:J. Imaging | Free Full-Text | LaFiDa—A Laserscanner Multi-Fisheye Camera Dataset 官网数据:https://www.ipf.kit.edu/english/projekt_cv_szenen.php 官网:KIT-IPF-Software and Datasets - LaFiDa 标定数据下载&…

Spring 详细总结

文章目录 第一章 IOC容器第一节 Spring简介1、一家公司2、Spring旗下的众多项目3、Spring Framework①Spring Framework优良特性②Spring Framework五大功能模块 第二节 IOC容器概念1、普通容器①生活中的普通容器②程序中的普通容器 2、复杂容器①生活中的复杂容器②程序中的复…

单细胞RNA测序(scRNA-seq)SRA数据下载及fastq-dumq数据拆分

单细胞RNA测序(scRNA-seq)入门可查看以下文章: 单细胞RNA测序(scRNA-seq)工作流程入门 单细胞RNA测序(scRNA-seq)细胞分离与扩增 1. NCBI查询scRNA-seq SRA数据 NCBI地址: https…

[RV1106-LINUX-IPC] 关于 rndis 功能无法使用的解决办法

问题描述 按照开发文档文档,修改对应的BoardConfig.mk,增加 export RK_ENABLE_RNDISy 使用编译命令: ./build.sh sysdrv ./build.sh firmware 烧录固件后,开机使用命令: rndis.sh,出现 rndis 无法识别的情…

腾讯云(CVM)托管进行权限维持

前言 刚好看到一个师傅分享了一个阿里云ECS实战攻防,然后想到了同样利用腾讯云CVM的托管亦可实现在实战攻防中的权限维持。 简介 腾讯云自动化助手(TencentCloud Automation Tools,TAT)是一个原生运维部署工具,它可…

SD-WAN组网面临的安全挑战?如何提供有效的安全措施

SD-WAN(软件定义广域网)技术的广泛应用,企业面临着越来越多的网络安全挑战。尽管SD-WAN带来了灵活性和效率的提升,但其开放性和基于云的特性也带来了一系列安全威胁。本文将探讨SD-WAN组网面临的安全挑战,并提供一些有…

Mybatis--TypeHandler使用手册

TypeHandler使用手册 场景:想保存user时 teacher自动转String ,不想每次保存都要手动去转String;从DB查询出来时,也要自动帮我们转换成Java对象 Teacher Data public class User {private Integer id;private String name;priva…