三维中间中旋转的表示方式--欧拉角、旋转矩阵、旋转向量、四元数 三维空间中的旋转有很多种表示方式,欧拉角,旋转矩阵,旋转向量,四元数。由于在slam与机器人中会大量用到这方面的知识,所以在这里将此方面的知识总结一下,方便以后查阅。 在slam系统中一般使用四元数来存储姿态(也有使用旋转矩阵的,不过比较少),不使用旋转向量,个人认为原因主要在于: 首先得到一个旋转向量之后,我们是不可以直接通过类似相加的方式对旋转向量进行更新的,而矩阵和四元数的更新(乘法)是有 2019-06-19 #数学
自动驾驶系统描述 自动驾驶 一些有的没得今天就不扯了,毕竟历史、事件、定义之类的经常看,经常忘。 我理解的自动驾驶系统是是由两部分组成的:感知与决策。本文主要从这两个大方向入手,对其麾下的一些不可或缺的功能模块进行描述。 1. 感知系统 我将感知问题分为两部分,第一是对世界的感知与理解,第二个就是对自身的感知与理解。 不过这样将有些过于抽象,实际在自动驾驶中我们并不会那么泾渭分明的完成它们,甚至我们更多的是完成 2019-05-30 #人工智能
ros操作系统入门 很长时间没有用ros了,刚好这几天手头有一台闲置的\(turtlebot\),于是就想用它验证一些导航算法。重新看ros的官网教程,写的很好,但是每一节讲的东西很少,而我这里网速不快,每次打开新的网页都要等一会,超级费时间,所以写篇博客将ros的常用操作概括归纳一些,以后忘记了方便查阅。 ros ROS是一个用于开发机器人应用程序的、类似操作系统的机器人软件平台。ROS提供开发机器人应用程序时所需 2019-05-25 #tools
视觉slam中的一种单目稠密建图方法 slam是中文全名是同时定位与建图,但是大家更多关注的都是slam的定位作用,而对于建图,也许是因为三维重现、sfm之类的研究方向已经很多了,所以在slam大家对其的关注小了很多。本文主要就是简单讲解一下slam中进行单目稠密建图的一个思路。 之所以只讲单目的稠密建图,这是因为,首先,对于RGBD图,我们已知所有点的深度,可以直接生成稠密的点云,可讲的东西不多(其实还是很多的,但我现在了解的还不 2019-05-17 #计算机视觉
视觉slam中的回环检测概述 在slam中,前端负责提供轨迹与地图的初值,后端负责对轨迹与地图进行优化。在小范围的环境中,前端与后端便已经够用了。但是当活动的范围增加以后,这一类只依靠内部传感器(相机、imu等)的定位方法不可避免的会出现累积误差,这时因为虽然我们可以使用ba等优化方式进行优化,但是这种优化方式毕竟还是局部的(比如某一个位姿下会有大部分的地图点是看不到的)。 回环检测 回环检测与累积误差 拿视觉slam来说,虽 2019-05-14 #计算机视觉
Bundle Adjustment等优化方法在视觉slam中的应用与求解 在视觉slam与sfm中,BA是很常见的参数优化方法。它的全名是 Bundle Adjustment,中文翻译有捆集调整、光束法平差等。 BA的主要思想是最小化重投影误差,以其作为目标函数来优化位姿、地图点、相机参数等。 计算投影点 根据以前的两篇博客相机成像模型与相机畸变与标定,我们可以知道将一个地图点投影到像素平面上流程如下: 首先,世界坐标系下有一个固定的点P,世界坐标是 \(P_{w 2019-05-07 #计算机视觉
状态估计之卡尔曼滤波 本文主要介绍如何使用滤波器(卡尔曼滤波器与扩展卡尔曼滤波器)进行状态估计。 状态估计问题 首先列出状态估计方程,由运动方程与观测方程组成 \[ \left\{\begin{array}{l}{\boldsymbol{x}_{k}=f\left(\boldsymbol{x}_{k-1}, \boldsymbol{u}_{k}\right)+\boldsymbol{w}_{k}} \\ {\bolds 2019-05-06 #数学
非线性最小二乘优化方法总结 什么是非线性优化 对于最优化问题,如果目标函数是非线性的,那就是非线性优化问题,如果目标函数是凸函数,那就是凸优化问题。 首先需要说明的是,最初的问题其实是一个最优化问题。所谓的最优化问题其实就是寻找最优解的问题,一般形式是寻找函数的最大值或者最小值(一般都是将问题转换成求解目标函数的最小值)。 而非线性优化问题就是针对一个非线性函数求最值的问题。其实,在我们初高中的时候就已经求解过非线性优化 2019-04-29 #数学
状态估计之非线性最小二乘 本文主要介绍一下视觉slam中的状态估计问题,并介绍如何将非线性最小二乘与其联系起来。 状态估计问题 首先介绍一下slam中的状态估计问题,这个问题由一个运动方程与一个观测方程构成。 \[ \begin{equation} \begin{cases} x_{k} = f(x_{k-1}, u_{k}) + w_k \\ z_{k,j} = h(y_j, x_{k}) + {\upsilon}_{ 2019-04-29 #数学
李代数求导与扰动模型 \(SO(3)\)李代数上的扰动模型求导是slam中使用最广泛的公式。!!! 在上一篇博客中我们了解了李群与李代数的定义,那么知道这些有什么用呢? 我们经常构建与位姿有关的函数,然后讨论该函数关于位姿的导数,以调整当前的估计值。表示姿态的李群\(SO(3)\)与表示位姿的李群\(SE(3)\)上并没有定义加法,而求导数是需要加法的。因此此时如何求导就成了一个需要解决的问题,它们的李代数由向量组 2019-04-25 #数学