刚体,顾名思义,是指本身不会在运动过程中产生形变的物体,如相机的运动就是刚体运动,运动过程中同一个向量的长度和夹角都不会发生变化.刚体变换也称为欧式变换. 视觉SLAM中使用的相机就是典型的刚体,相机一般通过人手持.机载(安装在机器人上).车载(固定在车辆上)等方式在三维空间内运动,形式包括旋转.平移.缩放.切变等.其中,刚体在三维空间中最重要的运动形式就是旋转.那么刚体的旋转如何量化表达呢? 三维空间中刚体的旋转表示三维空间中刚体的旋转总共有4种表示方法,高翔的十四讲中的第3讲比较详细的讲解了…
点"计算机视觉life"关注,置顶更快接收消息! 小白:师兄,g2o框架<从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码>,以及顶点<从零开始一起学习SLAM | 掌握g2o顶点编程套路>我都学完啦,今天给我讲讲g2o中的边吧!是不是也有什么套路? 师兄:嗯,g2o的边比顶点稍微复杂一些,不过前面你也了解了许多g2o的东西,有没有发现g2o的编程基本都是固定的格式(套路)呢? 小白:是的,我现在按照师兄说的g2o框架和顶点设计方法,再去看g2…
点"计算机视觉life"关注,置顶更快接收消息! ## 小白:师兄,上一次将的g2o框架<从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码>真的很清晰,我现在再去看g2o的那些优化的部分,基本都能看懂了呢! 师兄:那太好啦,以后多练习练习,加深理解 小白:嗯,我开始编程时,发现g2o的顶点和边的定义也非常复杂,光看十四讲里面,就有好几种不同的定义,完全懵圈状态...师兄,能否帮我捋捋思路啊 师兄:嗯,你说的没错,入门的时候确实感觉很乱,我最初也是花了些时间…
首发于公众号:计算机视觉life 旗下知识星球「从零开始学习SLAM」 这可能是最清晰讲解g2o代码框架的文章 理解图优化,一步步带你看懂g2o框架 小白:师兄师兄,最近我在看SLAM的优化算法,有种方法叫"图优化",以前学习算法的时候还有一个优化方法叫"凸优化",这两个不是一个东西吧? 师兄:哈哈,这个问题有意思,虽然它们中文发音一样,但是意思差别大着呢!我们来看看英文表达吧,图优化的英文是 graph optimization 或者 graph-based op…
点击公众号"计算机视觉life"关注,置顶星标更快接收消息! 本文编程练习框架及数据获取方法见文末获取方式 菜单栏点击"知识星球"查看「从零开始学习SLAM」一起学习交流 点云滤波后为什么还需要平滑? 小白:师兄,师兄,上次你说的点云滤波我学会啦,下一步怎么把点云变成网格啊? 师兄:滤波只是第一步,在网格化前我们还需要对滤波后的点云进行平滑(smoothing) 小白:不是已经滤波了吗?怎么还要平滑啊?滤波和平滑不一样吗? 师兄:确实不太一样.我们用RGB-D,激光…
对VSLAM和三维重建感兴趣的在计算机视觉life"公众号菜单栏回复"三维视觉"进交流群. 小白:师兄,上次你讲了点云拼接后,我回去费了不少时间研究,终于得到了和你给的参考结果差不多的点云,不过,这个点云"可远观而不可近看",放大了看就只有一个个稀疏的点了.究竟它能干什么呢? 师兄:这个问题嘛...基本就和SLAM的作用一样,定位和建图 小白:定位好理解,可是师兄说建图,这么稀疏的地图有什么用呢? 师兄:地图分很多种,稀疏的,稠密的,还有半稀疏的等,你输出…
本文提纲 先热热身点云是啥你知道点云优缺点吗?点云库PCL:开发者的福音PCL安装指北炒鸡简单的PCL实践留个作业再走先热热身 小白:hi,师兄,好久不见师兄:师妹好,上周单应矩阵作业做了吗?小白:嗯,做了,这个单应矩阵真的挺有意思的.作业之外,我发现了一个新技能...师兄:什么技能?小白:我发现很多网上流传的图片都可以用上次我学过的单应矩阵实现,你看这张图,我第一次看到还以为是真的 现在知道这不就是我们上节课讲的单应矩阵的变换吗?果然我在网上找到了原图 现在我也会用OpenCV里的单应函数做这…
小白最近在看文献时总是碰到一个奇怪的词叫“homography matrix”,查看了翻译,一般都称作“单应矩阵”,更迷糊了.正所谓:“每个字都认识,连在一块却不认识”就是小白的内心独白.查了一下书上的推导,总感觉有种“硬凑”的意味,于是又找到了师兄... 神奇的单应矩阵小白:师兄~单应矩阵是什么鬼啊?我看书上的推导,每一步勉强能看懂,但还是不太理解其背后的物理意义,感觉不能转化为自己理解的方式啊师兄:哦,我第一次看的时候也是这种感觉 小白:而且这个名字好绕口啊,我完全没法和它的物理意义联系起来…
自从小白向师兄学习了李群李代数和相机成像模型的基本原理后,感觉书上的内容没那么难了,公式推导也能推得动了,感觉进步神速,不过最近小白在学习对极几何,貌似又遇到了麻烦... 小白:师兄,对极几何这块你觉得重要吗?师兄:当然重要啦,这个是多视角立体视觉的核心啊 小白:那师兄一定得帮帮我讲清楚啊,最近在看书上这部分内容,感觉很难理解呢!师兄:哪里不理解?书上公式推导的挺详细了都 小白:这么说吧,公式推导我也能大概看懂,但总觉得不知道为啥这么推导,这样推导的物理意义是什么?师兄:哦哦,明白啦,就是不能转…
上一篇文章<从零开始一起学习SLAM | 为啥需要李群与李代数?>以小白和师兄的对话展开,受到了很多读者的好评.本文继续采用对话的方式来学习一下相机成像模型,这个是SLAM中极其重要的内容,必须得掌握哦~ 小白:师兄,上次听你讲了李群李代数,有种“听君一席话胜读十年书”的赶脚~后来看书感觉容易理解多了呢!师兄:是吗?那太好啦,给你讲的过程也加深了我的理解呢小白:那师兄今天要不要继续加深理解一下相机成像模型 的部分呢?师兄:额..好啊(感觉被套路了,不过想想上次小白师妹请客吃了烧烤呢)小白:讲完…
很多刚刚接触SLAM的小伙伴在看到李群和李代数这部分的时候,都有点蒙蒙哒,感觉突然到了另外一个世界,很多都不自觉的跳过了,但是这里必须强调一点,这部分在后续SLAM的学习中其实是非常重要的基础,不信你看看大神们的论文就知道啦. 关于李群李代数,其实高翔的<视觉SLAM十四讲>里推导什么的挺清楚了,本文就在高博的基础上用比较容易理解的语言讲述一下重点. 首先,假装(也可能是真的)自己是个小白,我们假想对面坐了一个大牛师兄,下面我们开启问答模式. 为啥需要李代数? 小白:师兄,我最近在学习SLAM…
视觉 Vs. IMU 小白:师兄,好久没见到你了啊,我最近在看IMU(Inertial Measurement Unit,惯性导航单元)相关的东西,正好有问题求助啊 师兄:又遇到啥问题啦? 小白:是这样的,现在VIO(Visual-Inertial Odometry,视觉惯性里程计)很火,我就想试试把IMU测量的信息和图像进行简单的融合,这样利用IMU测量的先验信息,可以给图像一个比较好的初值... 师兄:嗯嗯,这个思路没问题的啊,图像信息和 IMU 确实存在一定互补性,两者各有所长,取长补短.…
在<零基础小白,如何入门计算机视觉?>中我提到过,计算机视觉的研究目前主要分为两大方向:基于学习的方法和基于几何的方法.其中基于学习的方法最火的就是深度学习,而基于几何方法最火的就是视觉SLAM. SLAM将成为计算机视觉的下一个风口 在前几年计算机视觉的三大顶级会议(CVPR,ICCV,ECCV)上,几乎全是深度学习的研究,而这样的情况在这两年出现了新的变化:在2018年计算机视觉国际顶级会议 CVPR论文录用名单中,其中涉及SLAM/三维视觉 的工作超过 90 篇,占据了全体收录论文的近…
在涉及到计算机视觉的几何问题中,我们经常看到齐次坐标这个术语.本文介绍一下究竟为什么要用齐次坐标?使用齐次坐标到底有什么好处? 什么是齐次坐标?简单的说:齐次坐标就是在原有坐标上加上一个维度: 使用齐次坐标有什么优势? 齐次坐标的使用能够大大简化在三维空间中的点线面表达方式和旋转平移等操作,具体分如下几点进行说明. 1.能否非常方便的表达点在直线或平面上在2D平面上,一条直线 l 可以用方程 ax + by + c = 0 来表示,该直线用向量表示的话一般记做 我们知道点p = (x, y)在直…
点击公众号"计算机视觉life"关注,置顶星标更快接收消息! 本文编程练习框架及数据获取方法见文末获取方式 菜单栏点击"知识星球"查看「从零开始学习SLAM」一起学习交流 小白:师兄,师兄,你在<从零开始一起学习SLAM | 给点云加个滤网>.<从零开始一起学习SLAM | 点云平滑法线估计>中都提到了点云网格化,这个听起来高大上,不过到底是什么意思呢? 师兄:别急,是这样的:你看我们之前处理的都是一个个点,不管是滤波还是平滑,我们都是对一个…
LAM,C++编程是必备技能.不过,大家在学校里学习的书本一般比较老,主要还是C++98那些老一套. 本文所谓的C++新特性是指C++11及其以后的C++14.C++17增加的新关键字和新语法特性.其中C++11是C++98以来最重要的一次变化,而其后的C++14.C++17是在该基础上的完善和补充. 那么,问题来了,如果我不想学习新特性,还是像以前那样编程可以吗? 答案是:可以,不过这就像是别人已经在用铁制刀具切瓜了,你还在石器时代使用石头刀具,你说,效率能一样吗? 看看下面你心里就有答案了.…
SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻译为:同时定位与建图.同时定位与地图构建. 「同时定位与地图构建」这几个词,乍一听起来非常拗口,为了不在一开始就吓跑读者,我们先不对其进行专业的解释,用一个日常生活中形象的例子来进行说明. 初 步 认 识 S L A M 我们知道现在有不少家用的扫地机器人,可以代替人对室内进行自动清扫.早期的扫地机器人并不智能,它只是具有简单的避障功能,在室内随机游走,遇到障碍物就转弯,这样会导致有很…
SLAM涉及的知识面很广,我简单总结了 “SLAM知识树” 如下所示: (公众号菜单栏回复 “树” 可获得清晰版) 可以看到涉及的知识面还是比较广的.这里放出一张SLAM圈子里喜闻乐见的表达悲喜交加心情的漫画图,大家可以感受一下: 每个学SLAM的小伙伴可以说都是冒着“头顶凉凉”的巨大风险,勇气可嘉.下面结合SLAM知识树展开具体说说. 编程环境首先先说电脑环境和编程. 1.电脑环境:Linux环境,推荐Ubuntu16.04. 有人问Windows行不行?这么说吧,如果你是一位SLAM领域的大…
由于显示格式问题,建议阅读原文:如何从零开始系统化学习视觉SLAM? 什么是SLAM? SLAM是 Simultaneous Localization And Mapping的 英文首字母组合,一般翻译为:同时定位与建图.同时定位与地图构建.虽然听起来比较拗口,但SLAM却是三维视觉的核心技术,广泛应用于AR.自动驾驶.智能机器人.无人机等前沿热门领域.可以说凡是具有一定行动能力的智能体都拥有某种形式的SLAM系统.关于SLAM的具体应用场景介绍可以看<SLAM有什么用?> SLAM是计算机视…
点"计算机视觉life"关注,星标更快接收干货! ## 小白:师兄,最近忙什么呢,都见不到你人影,我们的课也好久没更新了呢 师兄:抱歉,抱歉,最近忙于俗事.我后面一起补上,学习劲头得向你们年轻人学习啊!话说,你最近在研究什么呢? 小白:最近在看ICP,十四讲上简单提了下,还有点懵懵哒 师兄:好,那今天就说说ICP算法吧.搬个小板凳做好哈: ICP全称Iterative Closest Point,翻译过来就是迭代最近点.ICP在点云配准领域应用的非常广泛,因此基于深度相机.激光雷达的算…
理论部分请看 :三维空间刚体运动 一.Eigen的使用 首先安装 Eigen: sudo apt-get install libeigen3-dev 一般都安装在 /usr/include/eigen3/ 中 代码: #include <iostream> #include <ctime> using namespace std; //Eigen 部分 #include <Eigen/Core> //稠密矩阵的代数运算 #include <Eigen/Dense&…
Mass Mass of the rigidbody. Linear Drag Drag coefficient affecting positional movement. Angular Drag Drag coefficient affecting rotational movement. Gravity Scale Degree to which the object is affected by gravity. Fixed Angle Can the rigidbody rotate…
Rigdbody刚体组件:必须和碰撞体(Colliders)一起使用,否则会发生穿过的现象.碰撞体(Colliders)不是必须和刚体一起使用. 刚体的作用:使游戏物体能获得重力,接受外界的受力和扭力,可以通过脚本或是物理引擎为游戏对象添加刚体组件. Unity中添加引擎的方法:Component→ Physics→ Rigdbody. 属性简介: Mass:质量.设置游戏对象的质量.建议同一场景中的游戏对象质量差值不能大于100倍. Drag:阻力.设置游戏对象受到的空气阻力.0~.... A…
写这个系列文章主要是为了督促自己  每天定时 定量消化一些知识! 同时也为了让需要的人 学到点啥~! 本人技术实在不高!本文中可能会有错误!希望大家发现后能提醒一下我和大家! 偷偷说下 本教程最后的目标是实现一个PHP的框架(虽然对我来说也许很遥远!~) 内容主要参考了: 慕课网 -大话PHP设计模式  网址:http://www.imooc.com/learn/236 一.PHP 的编辑器 (IDE) 选择 PHP现在主流的编辑器就这几种 我也尝试过很多个 但是没有长时间进行使用 一些评论可能…
写这个系列文章主要是为了督促自己  每天定时 定量消化一些知识! 同时也为了让需要的人 学到点啥~! 本人技术实在不高!本文中可能会有错误!希望大家发现后能提醒一下我和大家! 偷偷说下 本教程最后的目标是实现一个PHP的框架(虽然对我来说也许很遥远!~) 我们今天再新建一个文件叫lesson2.php  开启今天的学习旅程 一.计算表达式: 在PHP 要计算表达式 是很容易的 下面大家尝试下面的代码 <?php echo 2+1; echo 5-3; echo 1*2; echo 4/2; ec…
写这个系列文章主要是为了督促自己  每天定时 定量消化一些知识! 同时也为了让需要的人 学到点啥~! 本人技术实在不高!本文中可能会有错误!希望大家发现后能提醒一下我和大家! 偷偷说下 本教程最后的目标是实现一个PHP的框架(虽然对我来说也许很遥远!~) 内容主要参考了: 慕课网 -大话PHP设计模式  网址:http://www.imooc.com/learn/236 一.Phpstrom的项目创建: 启动PhpStrom 并创建一个新项目 全是英文 但是大家别慌.... 我来一步一步告诉你们…
随着鼠标的移动旋转箭头. requestAnimationFrame 在requestAnimationFrame之前我们可以用setInterval来实现动画的循环: function drawFrame(){ ball.x+=1; ball.draw(context); } window.setInterval(drawFrame,1000/60) 而html5中增加了window.requestAnimationFrame,它接收一个回调函数,确保在重绘前执行该函数,第二个参数可以指定一个…
什么是HTML5 HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定.是下一代 HTML 标准. 为什么要学习HTML5 HTML5定义了一系列新元素,如新语义标签.智能表单.多媒体标签等,可以帮助开发者创建富互联网应用,还提供了一些新的Javascript API,如地理定位.重力感应.硬件访问等,可以在浏览器内实现类原生应用,甚至结合Canvas我们可开发网页版游戏. HTML5的设计目的是为了在移动设备上支持多媒体,它制定了Web应用开发的一系列标准,成…
Oracle 数据库基本知识   [训练1] 显示DEPT表的指定字段的查询.               输入并执行查询:               SELECTdeptno,dname FROM dept;     显示结果如下:         DEPTNODNAME               --------------------------------                         10  ACCOUNTING                  20  RESE…
写这个系列文章主要是为了督促自己  每天定时 定量消化一些知识! 同时也为了让需要的人 学到点啥~! 本人技术实在不高!本文中可能会有错误!希望大家发现后能提醒一下我和大家! 偷偷说下 本教程最后的目标是实现一个PHP的框架(虽然对我来说也许很遥远!~) 昨天我们搭建了一个虚拟主机  并且成功运行了起来 今天我就要在这个虚拟主机中进行编写程序 上次建的虚拟主机 在目录     upupw/vhosts/www.test.local     (后面www.test.loacl 为你上节课搭建的虚拟…