WSL2安装Ubuntu20.04至E盘
一、准备工作1.1 开启WSL功能在 Windows 搜索栏输入“启用或关闭 Windows 功能”,勾选“适用于 Linux 的 Windows 子系统”和“虚拟机平台”,然后重启电脑。 1.2 设置默认版本以管理员身份打开 PowerShell,输入 wsl --set-default-version 2,确保后续安装使用 WSL2。 二、在C盘中安装Ubuntu20.04(默认LTS版本)2.1 安装系统使用科学上网,打开规则模式,根据网上一个博主的内容,他说如果没有科学上网可以使用wsl --install -d Ubuntu-20.04 --web-download,详情参考:https://www.bilibili.com/video/BV1tW42197za?spm_id_from=333.788.videopod.sections&vd_source=d281c2477c5b78e0ebea5a0b97d495d6 如果有科学上网,正常使用如下命令: 在 PowerShell 中输入 wsl --install -d Ubuntu-20...
Leetcode刷题笔记:二
35题:搜索插入位置题目:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。 示例 1:输入: nums = [1,3,5,6], target = 5输出: 2 示例 2:输入: nums = [1,3,5,6], target = 2输出: 1 示例 3:输入: nums = [1,3,5,6], target = 7输出: 4 提示: 1 <= nums.length <= 104 -104 <= nums[i] <= 104 nums 为 无重复元素 的 升序 排列数组 -104 <= target <= 104 分析:题目要求使用时间复杂度为 O(log n) 的算法,那就是标准的二分查找 代码:1234567891011121314151617181920212223242526272829#include <iostream>#include <vector>using namespa...
Leetcode刷题笔记:一
20题:有效的括号题目:给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([])”输出:true示例 5:输入:s = “([)]”输出:false提示: 1 <= s.length <= 104 s 仅由括号 '()[]{}' 组成 分析:该题目只有3中括号类型:() [] {}如果一个括号是正确且相邻的,那就把它删去,只判断其它的就可以了,例如:()[]{}([{...
激光SLAM学习笔记:一
第二章几何学本来这里不想记的,但是书中既然提到了坐标变换和基底变换的不同,那就写一下吧,(其实我一开始也没反应过来)在本书中所用的旋转矩阵都是描述同一个点在不同坐标系下的坐标的变换,例如:点$P$在世界坐标系下的坐标是$p_{w}$,在汽车坐标系下的坐标是$p_{b}$,那旋转矩阵$Rwb$和平移向量$t_{wb}$就表示从汽车坐标系到世界坐标系的变换,写为:$$p_{w}=R_{wb} p_{b}+t_{wb}$$为了能够二者的区别,现在只考虑纯旋转的情况,下面思考如何使用基底来表示这个旋转,如果用$R_{bw}$表示从世界坐标系到汽车坐标系的旋转,那汽车坐标系的基底又怎么表示呢?这里面其实就是一个看点还是看基底的问题,直观的想:无非就是一种是考虑点相对于坐标系的运动,一个是关注坐标系相对于点的运动。它们一个是互为逆运算,下面使用简单的例子说明。如图所示,两坐标系的关系就是汽车坐标系相对于世界坐标系旋转了$\theta$,不变的量是$\overrightarrow{OP}$都一样,变的是$P$在两个坐标系下的坐标不一样了,因为两个坐标系的基底不一样了。假设世界坐标系的基底是$\...
视觉SLAM学习笔记:八
第十一、十二章回环检测回环检测的意义:前端(视觉里程计)和后端(优化)会导致累积误差,使得长期地图和轨迹不准确。回环检测通过识别相机是否回到曾经经过的位置,为后端提供额外的、非相邻的约束,从而有效消除累积误差,实现全局一致性。 回环检测的主流方法: 基于外观的方法:不依赖前端和后端的位姿估计,直接根据两幅图像的相似性判断。由于摆脱了累积误差的影响,成为主流方法。 其他方法包括理论上“朴素”的任意图像匹配(复杂度高)和基于里程计的几何关系(存在循环论证问题,误差大时失效) 基于词袋模型(Bag-of-Words, BoW)的回环检测: 核心思想:用“图像包含哪些视觉单词”的直方图向量来描述图像,通过比较这些向量的相似度来检测回环。 步骤: 字典生成:对大量图像提取特征点(如ORB),使用K-means等聚类算法将特征点聚合成“视觉单词”,并组织成k叉树结构以实现快速查找。 图像描述:对单张图像提取特征点,并在字典树中查找每个特征对应的单词,形成TF-IDF加权的词袋向量。 相似度计算:比较两幅图像对应的词袋向量,计算相似度评分 整个回环检测的意义是很好理解的,具体的做法...
视觉SLAM学习笔记:七
第九、十章后端贝叶斯公式在正式开始之前,需要复习一下贝叶斯公式,基本的形式是 $$P(X | Y)=\frac{P(XY)}{P(Y)}$$ 之后需要用到一个进阶的式子:$$P(A|B,C)=\frac{P(B|A,C) \cdot P(A|C)}{P(B|C)}$$下面来证明这个式子:首先假设事件$D$:已知$C$然后得到:$$P(A|B,C)=P(A|B,D)$$把$BD$看作整体,使用最基础的贝叶斯公式,得到:$$P(A|B,D)=\frac{P(B,D|A) \cdot P(A)}{P(B,D)}$$现在把$D$换回$C$,唯一需要特殊处理的是分子的第二项:$P(A)$,这里有个技巧,就是在整个推导过程中,$C$始终是已知的背景,所以$P(A)$其实隐含了“在已知$C$的前提下”,所以应该写为$P(A|C)$,或者从另一种视角来看,在机器人模型中,一般认为$C$(历史信息)和$A$(当前状态)是独立的,同样可以得到$P(A)=P(A|C)$ 综上,式子变为:$$P(A|B,C)=\frac{P(B,C|A) \cdot P(A|C) }{P(B,C)}$$对分母使用贝叶斯...
视觉SLAM学习笔记:六
第七章、第八章视觉里程计(VO-Visual Odometry)特征点法特征点:由关键点和描述子组成关键点选角点(像素灰度变化明显的地方),描述子:描述了周围像素的信息,按照“外观相似的特征应该有相似的描述子”设计的 ORB(Oriented FAST and Rotated BRIEF)特征ORB的关键点是Oriented FAST描述子是Rotated BRIEF FAST特征点仅仅比较像素之间亮度的差异ORB添加了尺度和旋转的描述,尺度不变性依靠构建图像金字塔,并在金字塔的每一层上检测角点实现的,特征的旋转是通过**灰度质心法(Intensity Centroid)**实现的 图像金字塔金字塔是指通过对图像进行不同层次的降采样,以获得不同分辨率的图像灰度质心法(Intensity Centroid)在一小块图像B中,定义图像块的矩为:$$m_{pq}=\sum_{x,y \in B} x^p y^q I(x,y),\;\;\;\;\;\;\;p,q=\{0,1\}$$通过矩可以找到图像块的质心:$$C=\left(\frac{m_{{10}}}{m_{00}}, \frac...
视觉SLAM学习笔记:五
矩阵求导标量函数对向量求导 向量函数对向量求导 常用公式: 线性变换$$\frac{\partial Ax}{\partial x^{T}}=A$$ 恒等变换$$\frac{\partial x}{\partial x^{T}}=I$$ 零矩阵,a为常数向量$$\frac{\partial a}{\partial x^{T}}=0$$ 梯度行向量($a^{T}x$是标量)$$\frac{\partial a^{T}x}{\partial x^{T}}=a^{T}$$ 和$$\frac{\partial x^T a}{\partial x^{T}}=a^{T}$$ 二次型梯度($x^{T}Ax$是标量)$$\frac{\partial x^{T} A x}{\partial x^{T}}=x^{T}(A+A^{T})$$ 链式法则:若$z=f(y),y=g(x)$,则:$$\frac{\partial z}{\partial x^{T}}=\frac{\partial z}{\partial y^{T}}\cdot \frac{\partial y}{\partial x^{T}}...
视觉SLAM学习笔记:四
第五章相机模型针孔相机模型 畸变模型 单目相机成像过程 双目相机模型 RGB-D相机模型 习题内参就是个$K$:$$K=\left[\begin{matrix} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{matrix}\right]$$如果相机的分辨率变为原来的两倍,那么$u$和$v$就会变成原来的两倍,由于:$$Z \left[\begin{matrix} u \\ v \\ 1 \end{matrix} \right]= \left[\begin{matrix} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{matrix}\right] \left[\begin{matrix} X \\ Y \\ Z \end{matrix}\right]$$故$$Z \left[\begin{matrix} 2u \\ 2v \\ 1 \end{matrix} \right]= \left[\begin{matrix} 2f_{x} & 0 & 2c...
视觉SLAM学习笔记:三
第四章李群和李代数群群(Group)是一种集合加上一种运算的代数结构若集合记作$A$,运算记作$\cdot$,那么群就可以记作$G=(A,\cdot)$这个运算需要满足以下条件: 封闭性: $\forall a_{1},a_{2}\in A, a_{1} \cdot a_{2}\in A$ 结合率: $\forall a_{1},a_{2},a_{3}\in A,(a_{1}\cdot a_{2})\cdot a_{3}=a_{1}\cdot (a_{2}\cdot a_{3})$ 幺元: $\exists a_{0} \in A,$ $s.t.$ $a\cdot a^{-1}=a_{0}$ 逆: $\forall a\in A,\exists a^{-1} \in A$, $s.t.$ $a\cdot a^{-1}=a_{0}$ 可以记为:“凤姐咬你” $SO(3)与SE(3)$三维旋转矩阵构成特殊正交群(Special Orthogonal Group)$SO(3)$变换矩阵构成特殊欧氏群(Special Euclidean Gro...