1.Ubuntu中pangolin库的视觉安装配置及问题解决
2.白话VINS-Mono之外参标定(二)
3.VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲!
4.ORB特征提取与匹配
5.ubuntuä¸G2Oåºçå®è£
6.视觉SLAMORB-SLAM:让人Orz的讲源觉sm讲SLAM
Ubuntu中pangolin库的安装配置及问题解决
在Ubuntu.环境下安装与配置视觉SLAM十四讲中提及的pangolin库,解决安装与使用过程中可能遇到的码视问题。首先,代码确保安装所需的视觉依赖及工具。快捷键Ctrl+Alt+T打开终端,讲源觉sm讲红包墙源码依次输入指令:
1.1 pangolin库安装
进入终端,码视克隆视觉SLAM十四讲源代码,代码然后进入pangolin库文件夹,视觉下载库源文件。讲源觉sm讲接下来,码视进入下载好的代码源文件目录,使用指令进行安装,视觉其中-j后的讲源觉sm讲数字可根据电脑配置调整,以优化安装速度。码视
1.3 pangolin库安装
在安装完成后,可以尝试通过VScode运行ch3目录下examples中的示例程序,编译并执行。
2 测试pangolin库
2.1 示例程序编译
在VScode终端输入指令,为测试程序做准备。
2.2 示例程序运行
运行两个示例程序,程序名称可通过ls指令查看,拼写时使用tab键补全。在运行过程中可能会遇到如"cannot find trajectory file"的错误。这通常是因为程序相对路径的设定与实际路径不匹配。解决方法是修改程序中的相对路径,将实际路径替换掉。
2.3 程序运行问题解决
解决"cannot find trajectory file"报错,需要修改程序中路径设置,并重新编译程序。再次运行示例程序,问题将得到解决。此外,imbe 源码初次运行visualizeGeometry.cpp时可能会出现找不到libpango_image.so的报错,这通常是因为系统未找到共享库。此时,执行指令刷新共享库即可。
至此,pangolin库的安装与使用过程完成。在执行过程中,注意查看终端输出,确保每个步骤正确无误。如有其他问题,建议查阅官方文档或社区讨论。
白话VINS-Mono之外参标定(二)
在深入探讨Vins-mono系统中的外参标定部分之前,我们先回顾一下上篇文章中预积分的基本概念。接下来,我们将从实际应用出发,深入解析Vins-mono系统中关于外参标定的原理与源码。
Vins-mono作为紧耦合视觉IMU系统,在实现中通过在SLAM过程中进行相机与IMU的标定,以应对没有标定信息的情况。这种设计的一大优势在于系统能够动态计算相机与IMU之间的标定值。尽管标定过程并非绝对精确,但在后续的后端优化中会持续调整这些值。
配置文件中支持输入精确的外参标定值,通过设置config.yaml中的ESTIMATE_ESTRINSIC参数来决定。根据yaml设置,有三种情况可供选择:计算相机(Camera)坐标系到IMU坐标系的相对旋转矩阵。这一过程主要在CalibrationExRotation函数中实现。
在Vins-mono中,标定过程是独立于初始化的一部分,但它是系统启动前的关键步骤。在processimg函数中,初始化之前,epaneth 源码即真正的初始化前,需要执行CalibrationExRotation函数。
虽然Vins-mono文章中并未引入新的在线标定相机与IMU方法,而是基于文献([8])中提出的“monocular视觉惯性状态估计的在线初始化和相机IMU外参标定”。基于Vins-mono的代码实现,我们重新整理了文献中Fig. 3的图,并将其转化为图2,旨在从理论到代码详细解析标定过程。
结合图2,相邻相机关键帧对应的pose可以通过两种方式来构建方程:使用八点法(solveRelativeR)和结合已知的[公式]标定转换(solveRelativeRT)。理论上,通过假设相对旋转量为[公式],可以构建方程并求解。为了深入理解求解过程,我们将参考文献中的式子4~9。
在求解过程中,考虑到使用对极约束算法时不可避免的匹配错误(outlier),在A矩阵中加入权重计算,以提高在线标定结果的鲁棒性。加权计算方式近似于Huber norm计算(参考式8、9)。
在CalibrationExRotation核心函数中,实现流程遵循上述式子4~9的步骤。solveRelativeR与solveRelativeRT函数之间的区别在于,后者在多个判断内点个数操作中有所不同。重要的是,ric.inverse()* delta_q_imu * ric这一表达式将式4转换为[公式],通过在循环中不断计算相邻帧特征点对应变换,逐渐构建Ax=0形式的方程。
对于求解Ax=0问题的SVD分解,它是在矩阵非方阵时的特征值分解拓展,可以提取矩阵的认购源码主要特征。通过SVD分解,我们可以将问题转化为求解特定的特征值和特征向量,进而求解方程。
在理解SVD分解为何可以求解Ax=0问题时,关键在于其几何意义。SVD分解将任意矩阵通过一系列旋转和平移转换为对角矩阵,其中的奇异值表示椭球体轴的长度。通过最小奇异值,我们可以求解出最优解,即Ax=0的非零解。
综上所述,Vins-mono系统中的外参标定过程通过一系列理论解析和代码实现,确保了相机与IMU之间标定值的动态调整和优化。通过对关键步骤的深入理解,我们可以更好地掌握SLAM系统中这一重要模块的工作原理。
VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲!
自动驾驶领域在年呈现出快速发展的态势,各大创业公司纷纷宣布获得大额融资。1月日,文远知行完成B轮3.1亿美元融资;1月日,滴滴获得3亿美元融资;2月8日,小马智行获得1亿美元C+轮融资;3月日,Momenta完成C轮总计5亿美元的融资;4月日,大疆创新推出智能驾驶业务品牌“大疆车载”,向汽车企业提供自动驾驶解决方案;4月日,小鹏汽车发布搭载激光雷达的智能汽车小鹏P5,成为全球第一款量产的激光雷达智能汽车;4月日,图森未来在美股上市,被称为“全球自动驾驶第一股”;4月日,华为和北汽合作实现上海城区通勤无干预自动驾驶,成为全球唯一城市通勤自动驾驶量产车。
在自动驾驶、母亲源码无人机、增强现实、机器人导航等技术领域中,定位和建图(SLAM)发挥着至关重要的作用,而视觉惯性里程计(VIO)作为SLAM算法中的一个重要分支,其理论复杂度较高。对VIO的掌握能力将直接影响到SLAM从业者的专业水平。VINS-Mono是由香港科技大学飞行机器人实验室(沈邵劼团队)在年开源的知名单目VIO算法。该算法由第一作者秦通(华为天才少年)提出,并在年获得IEEE Transactions on Robotics期刊的最佳论文奖。VINS-Mono使用单目相机和惯性测量单元(IMU)实现了视觉和惯性联合状态估计,同时能够估计传感器外参、IMU零偏以及传感器时延,是一款经典且优秀的VIO框架。
VINS-Mono在室内、室外大尺度以及高速飞行的无人机场景中均表现出色。在手机AR应用中,该算法优于当前最先进的Google Tango效果。同时,VINS-Mono也是VINS-Fusion算法的基础,应用于汽车SLAM时同样展现出高精度和稳定性。
在自动驾驶、无人机、增强现实、机器人导航等领域的岗位中,掌握VINS-Mono算法成为了关键技能之一。为此,计算机视觉life团队推出了独家课程《VINS-Mono:原理深剖+白板从零手推公式+源码逐行精讲》。该课程通过详细的步骤解读、疑难问题解析、结合作者回复的issue理解,帮助学员深入掌握VINS-Mono背后的原理。课程内容覆盖从基础理论到复杂公式的推导,通过白板从零开始手推公式的方式,使学员能够理解复杂公式的形成过程,从而真正掌握VINS-Mono的原理。课程价格根据购买时间调整,购买越晚价格越高。如有疑问,学员可加入QQ群()咨询,购买成功后会自动显示内部答疑群。
ORB特征提取与匹配
本文主要回顾了ORB特征提取的过程,并解决了个人对这一主题的疑惑,但未深入探讨OpenCV源码,原因在于个人懒于解析。文章参考了高翔的《视觉SLAM十四讲》和相关opencv实现,欢迎读者指正错误。
好的特征点在于其显著性和匹配的准确性。角点特征,如E和F,因其特征明显,是理想的匹配对象。ORB算法采用OFAST快速提取这些特征点,下面将介绍OFAST和Oriented FAST的原理。
OFAST角点检测基于亮度变化,例如,如果圆周上的连续个点亮度超过或低于特定阈值,像素可能被识别为特征点。Oriented FAST在此基础上增加方向信息,以保持旋转不变性。
图像金字塔通过高斯模糊和降采样处理,解决了尺度不变性问题,确保不同尺度下的角点特征能准确匹配。接下来是BRIEF描述子,ORB算法使用的改进BRIEF描述特征,通过二进制编码存储角点邻域信息,以便判断匹配性。
特征方向与BRIEF描述子的结合,保证了旋转不变性。尽管旋转后BRIEF描述子会发生变化,但根据角点方向调整pattern,可以恢复旋转前的状态。
总的来说,ORB特征提取包括角点检测、方向信息添加、尺度不变性处理以及BRIEF描述子编码,这些步骤共同确保了特征点的稳定性和匹配效率。通过《视觉SLAM十四讲》的实例,我们可以理解并应用这些技术。
ubuntuä¸G2Oåºçå®è£
ä¸ãä»ä¹æ¯G2Oåºï¼æä»ä¹ç¨ï¼
g2o æ¯ä¸ä¸ªå¾ä¼ååºã常常å¨SLAM ä¸è¢«ä½¿ç¨ã
å¾ä¼åæ¬è´¨ä¸ä»ç¶æ¯é线æ§ä¼åãåªä¸è¿å©ç¨å¾çæ¹å¼è¡¨ç°åºæ¥ï¼ä½¿é®é¢ å¯è§å ï¼ç¶åå¯ä»¥æ ¹æ®å¯è§åçç»ææ¥æ´å¥½çè°æ´ä¼åè¿ç¨ã
å¾ æ¯ä¸ç§æ°æ®ç»æãå¨å¾ä¼åä¸ï¼ç¨ é¡¶ç¹ (vertex) 表示 ä¼ååé ï¼ç¨ è¾¹ (edge) 表示 误差项 ãäºæ¯ï¼å¯¹äºä»»æä¸ä¸ªä¸è¿°å½¢å¼çé线æ§æå°äºä¹é®é¢ï¼é½å¯ä»¥æ建ä¸ä¸ªä¸ä¹å¯¹åºçå¾ã
å¨è§è§SLAM åå讲ä¸ï¼å¸¸ç¨çå端ä¼ååºæ两个ï¼g2o åceresãceres æ¯google çä¸ä¸ªä¼ååºï¼æ档详尽ä¸å好ï¼å°±ä¸åèµè¿°äºãä½å¯¹äºg2oï¼é¤äºæºç ï¼å®æ¹ç¨doxygen çæç帮å©ææ¡£ï¼å°±åªæ论æ g2o: A general framework for graph optimization åè¿ç¯github ç ææ¡£ ã
äºãå¦ä½å®è£ G2Oåºï¼æåªäºä¾èµé¡¹ï¼å¨å®è£ å使ç¨çè¿ç¨ä¸ï¼ä¼éå°åªäºé®é¢ï¼ä»¥åå¦ä½è§£å³ï¼
1å®è£ æ¥éª¤
git clone .archive.ubuntu.com/ubuntu bionic/universe amd freeglut3 amd 2.8.1-3
connetciton failed [IP:... ]
Err:2 .archive.ubuntu.com/ubuntu bionic/universe amd freeglut3-dev amd 2.8.1-3
connetciton failed [IP:... ]
E:Failed to fetch .archive.ubuntu.com/ubuntu/pool/universe/f/freeglut/freeglut3_2.8.1-3_amd.deb connection failed [IP:... ]
E:Failed to fetch .archive.ubuntu.com/ubuntu/pool/universe/f/freeglut/freeglut3-dev_2.8.1-3_amd.deb connection failed [IP:... ]
E:Unable to fetch some archives, maybe run apt-get install libglut-dev
æç» è§£å³æ¹æ¡ ï¼ æ´æ¢ sources.list é¿éæº æ¸ åéåã
apt-get update
apt-get upgrade
3å¨ä½¿ç¨g2oæ¶ï¼ç¼è¯ç¨å°äºg2oåºçprojectï¼éå°æ¥éerror: âindex_sequenceâ is not a member of 'std'
解å³æ¹æ¡ ï¼ä¿®æ¹projectçCMakeLists.txtæ·»å :set(CMAKE_CXX_STANDARD )
åèé¾æ¥ï¼
Ubuntu. æ´æ¢ sources.list é¿éæº æ¸ åéå â å°åºä»¶ (atmcu.com)
(æ¡æ¶æ¯) è§è§SLAMåå讲 æ¥é error: âindex_sequenceâ is not a member of âstdâ_CSSDCCçå客-CSDNå客
(æ¡æ¶æ¯) è§è§SLAMåå讲 æ¥é error: âindex_sequenceâ is not a member of âstdâ_CSSDCCçå客-CSDNå客
视觉SLAMORB-SLAM:让人Orz的SLAM
ORB-SLAM,在视觉SLAM领域享有盛誉,其源码在GitHub上已有4.4K+Star,充分彰显了西班牙小哥的出色贡献。近期深入研究其论文并结合源码,体验了一番酸爽,发现它在SLAM领域确实有着独特的魅力与贡献。
ORB-SLAM的核心框架由三个并发进程组成:跟踪、局部建图和回环检测,系统结构清晰,功能分明。跟踪是主进程,负责定位和跟踪相机运动,通过特征匹配实现定位与优化。局部建图则负责关键帧与地图点的插入、删除及局部优化。回环检测则通过搜索回环关键帧,实现位姿图优化,确保系统鲁棒性。
特征提取是ORB-SLAM的关键之一,它采用ORB特征,兼顾性能与效率。与SURF、SIFT等相比,ORB提取速度快,每张仅需.3ms,适用于实时操作。ORB在FAST角点基础上加入方向信息,使BRIEF描述子旋转不变,同时利用图像金字塔和灰度质心法提取特征,实现尺度不变性。此外,通过网格划分与四叉树结构,ORB-SLAM确保特征点分布均匀,即使特征点不足,也可通过调整FAST阈值增加。
单目初始化是ORB-SLAM的另一大亮点,它通过特征点匹配计算基础矩阵和单应矩阵,自动判断场景类型,无需人工设定模型。共视图与本质图结构则加强了关键帧间的联系,实现高效回环检测。相机重定位策略确保了系统在跟踪失败时能快速恢复,关键帧与地图点的删增策略则优化了系统性能。
ORB-SLAM提供多样化的Bundle Adjustment方式,包括初始化阶段的全BA、跟踪过程的运动BA及局部建图阶段的局部BA,适应不同场景需求。整个系统庞大复杂,通过总结主要特性,虽有其精髓,但仍需深入研究,以充分理解其工作原理与优化策略。
总之,ORB-SLAM在视觉SLAM领域展现出了其独特魅力与贡献,从其高效的特征提取到灵活的系统框架,再到多样化的优化策略,无不体现其在SLAM技术中的卓越地位。向所有SLAM领域的先驱者致以崇高的敬意。
SLAM地图评估指标及EVO评估工具安装使用教程
在评估使用ORB-SLAM3构建的地图精度时,首先需要解决地图数据与GPS真值坐标尺度不一致的问题,进行地图数据对齐处理。之后,通过使用EVO工具进行评估,以获取更清晰的评估结果。整理后,以下是关于SLAM地图评估指标和EVO评估工具安装使用教程的详细内容。
一、SLAM评价指标
在评估SLAM/VO算法时,需要从时耗、复杂度、精度等多个角度进行。其中,精度评价是最重要的考量。视觉SLAM通常使用绝对位姿误差(APE)、均方根误差(RMSE)和标准差(STD)等指标来评估运动轨迹的精度,这些指标衡量的是算法估计位姿与真实位姿之间的误差。APE首先对齐真实值和估计值,计算每个值之间的偏差,用于评估轨迹的全局一致性。RMSE衡量整体估计值与真实值的偏差程度,偏差越大,RMSE也越大。
二、EVO安装教程及命令概览
EVO是一个常用的评估工具,用于评估SLAM和VO算法的性能。要安装EVO,请访问其官方源码地址。使用命令行一键安装,可能遇到安装错误,参考相关解决方法以解决可能的问题。EVO提供了多种评估指标和命令,包括评估绝对位姿误差(evo_ape)和相对位姿误差(evo_rpe)等功能。
三、运行EVO
1. evo_traj:主要用于绘制轨迹、输出轨迹文件和转换数据格式等功能。EVO自带示例包括使用自带数据进行轨迹对比和轨迹对齐。对于存在尺度不确定性的单目相机,EVO支持使用-s参数进行Sim(3)上的对齐(旋转、平移与尺度缩放)。
2. 轨迹评估:EVO可以评估两条轨迹的误差,主要命令包括计算绝对位姿误差(evo_ape)和相对位姿误差(evo_rpe)。这些指令支持轨迹对齐和尺度缩放功能,并提供详细的参数说明以指导使用。通过这些命令,可以直观地评估轨迹的全局一致性与局部准确性。