![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SLAM
文章平均质量分 95
苏源流
从事计算机视觉和SLAM领域,2012年10月“全国大学生数学建模竞赛”二等奖(数学应用能),2011年攻读 自动化 专业,2015年攻读“模式识别与智能系统” 专业。现在主要工作内容无人驾驶方面的视觉定位与导航,能够提供整体的地下车库自动泊车定位解决方案,该方案也适用于工业园区泊车,物流机器人,园区巡视机器人,餐饮配送、服务机器人等。本人熟悉linux下ROS环境,掌握opencv中2/3的功能,掌握视觉SLAM中ORB_SLAM2,激光lidar的loam。熟悉摄像机,激光雷达,惯导IMU等传感器的使用与开发。主导和参与多个定位项目,欢迎交流。致力于推进技术的应用,技术改变生活。不做无脑人
展开
-
【学习SLAM】掌握g2o边的代码套路--从零开始
小白:师兄,g2o框架《从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码》,以及顶点《从零开始一起学习SLAM | 掌握g2o顶点编程套路》我都学完啦,今天给我讲讲g2o中的边吧!是不是也有什么套路? 师兄:嗯,g2o的边比顶点稍微复杂一些,不过前面你也了解了许多g2o的东西,有没有发现g2o的编程基本都是固定的格式(套路)呢? 小白:是的,我现在按照师兄说的g2...转载 2020-01-06 11:28:01 · 237 阅读 · 0 评论 -
学习SLAM《视觉SLAM十四讲(高翔著)》 第10讲笔记(BA优化)
代码实践文章目录 10.3实践:g2o 10.4实践:Ceres 程序的详细注释可关注robinhjwy和zkk9527的CSDN博客。10.3实践:g2o用g2o求解BA问题。程序的编译运行方法:mkdir buildcd buildcmake ..make./g2o_customBundle -input ../data/problem-16...原创 2020-02-17 23:15:21 · 459 阅读 · 1 评论 -
[学习SLAM]ROS下robot_pose_ekf扩展卡尔曼融合包的使用案例(robot_pose_ekf) 篇章 (3)
最近在使用imu进行数据融合,使用的是robot_pose_ekf的融合包,发现网上的教程太不详细,折腾了1个月,终于搞定了。于是乎,想写一个关于ekf包的使用教程。里程计和惯导模块imu的数据融合来得到一个不易丢失的机器人姿态。首先,你得有一个imu,而且得校准好,我使用的是razor 9dof的imu,通过ros包pub一个Imu的data类型。这是我google的比较有用的一个ekf包的使用教程首先,先给大家看下我的tf!单里程计的tf这张图是单使用里程计的tf图片,你可以...原创 2021-03-04 16:44:07 · 3053 阅读 · 4 评论 -
[学习SLAM]基于EKF使用 robot_pose_ekf 对imu和odom进行融合定位(robot_pose_ekf) 篇章 (2)
使用 robot_pose_ekf 对imu和odom进行融合 robot_pose_ekf 是 ROS Navigation stack 中的一个包,通过扩展卡尔曼滤波器对 imu、里程计 odom、视觉里程计 vo 的数据进行融合,来估计平面移动机器人的真实位置姿态,输出 odom_combined 消息。robot_pose_ekf 只适用于平面上的轮式移动机器人,因此 odom 信息中的 z,pitch 和 roll 分量可以被忽略。IMU 可以提供车体坐标系相对于世界坐标系的姿态(R...转载 2021-01-28 11:26:59 · 5521 阅读 · 7 评论 -
[学习SLAM]基于EKF的Odometry+IMU+VO+GPS融合定位(robot_pose_ekf) 篇章 (1)
了解ROS的robot_pose_ekf软件包中扩展卡尔曼滤波器的用法:robot_pose_ekf软件包用于基于来自不同来源的(部分)位姿测量值来估计机器人的3D姿势。它使用带有6D模型(3D位置和3D方向)的扩展卡尔曼滤波器,将来自车轮里程计,IMU传感器和视觉里程计的测量结果结合起来。基本思想是提供与不同传感器的松散耦合集成,其中传感器信号以ROS消息的形式接收。主页:http://ros.org/wiki/robot_pose_ekfGithub:https://github.co..转载 2021-03-04 16:22:21 · 3327 阅读 · 2 评论 -
[学习IMU](MEMS 三轴加速计、三轴陀螺仪、三轴磁力计)6轴IMU+磁力计,9轴传感器讲解
1、三轴加速度计(1)测量比力三轴加速度计是一种惯性传感器,能够测量物体的比力,即去掉重力后的整体加速度或者单位质量上作用的非引力。当加速度计保持静止时,加速度计能够感知重力加速度,而整体加速度为零。在自由落体运动中,整体加速度就是重力加速度,但加速度计内部处于失重状态,而此时三轴加速度计输出为零。(2)测量角度三轴加速度计的原理能够用来测量角度。直观地,如图所示,弹簧压缩量由加速度计与地面的角度决定。比力能够通过弹簧压缩长度来测量。因此在没有外力作用的情况下,加速度计能够精确地测量转载 2021-01-19 11:27:37 · 16066 阅读 · 2 评论 -
[学习SLAM]loam_velodyne的安装与使用1
loam_velodyne从nsh_indoor_outdoor.bag创建的示例地图(使用ccviewer打开)Sample map built from nsh_indoor_outdoor.bag (opened with ccViewer)用ROS Indigo和Velodyne VLP16测试白色勾号。(屏幕放映) (Screencast)所有资料均取自ROS文件 ROS d...翻译 2020-12-09 18:08:33 · 2547 阅读 · 1 评论 -
[学习SLAM]单应性矩阵的理解及求解
单应性概念的引出 我们在这里引入一个新的概念:单应性(Homography)变换。可以简单的理解为它用来描述物体在世界坐标系和像素坐标系之间的位置映射关系。对应的变换矩阵称为单应性矩阵。在上述式子中,单应性矩阵定义为: 其中,M是内参矩阵 成像几何模型已经得到了像素坐标系和世界坐标系下的坐标映射关系: 其中,u、v表示...原创 2020-12-09 17:54:40 · 2452 阅读 · 0 评论 -
[学习SLAM]根据F或E求解RT的ORB_SLAM2与opencv的对比分析
本文主要的本文主要的目的是对比。分析。Slam中的rt求解。和opencv的。Rt求解。在算法和代码上有什么区别和联系。ORB_SLAM2 计算 F21 的代码:cv::Mat Initializer::ComputeF21(const vector<cv::Point2f> &vP1,const vector<cv::Point2f> &vP2...原创 2020-12-09 17:52:16 · 2086 阅读 · 0 评论 -
[学习SLAM]DSO光度标定程序配置和使用(1)
光度标定原理详见:DSO之光度标定一、项目地址https://github.com/tum-vision/mono_dataset_code对应论文《A Photometrically Calibrated Benchmark For Monocular Visual Odometry》二、安装1.下载源码git clone https://github.com/tum...转载 2020-12-09 17:50:50 · 1401 阅读 · 0 评论 -
[学习SLAM]online_photometric_calibration-master DSO应用问题梳理
online_photometric_calibration-master 问题梳理1 DSO在线标定没有输出txt问题,主要是有图像窗口的形式展示,不是直观理解上txt内容,:Scale up inverse response from range [0,1] to range [0,255]确实有*255操作.2 DSO在线标定渐晕也不是图像输出,貌似是几个系数,目前这点还不确定.初步认...原创 2020-12-09 17:49:52 · 491 阅读 · 0 评论 -
[学习SLAM]vins-mono中的特征点管理/三维稀释点的重建
主要涉及到以下三个类:feature_manager.h中的FeaturePerFrame、FeaturePerId、FeatureManager假设存在两个路标点P1和P2,分别被相机帧1-2,2-4观测到。(1)FeaturePerID类 类的定义如下:class FeaturePerId{ public: const int feature_id; int start_frame; vector<FeaturePerFrame> f原创 2020-12-09 17:24:32 · 1678 阅读 · 0 评论 -
[学习SLAM]精简版无ROS依赖的Vins-Mono代码(深蓝学院VIO 笔记)
代码框架 主函数 数据发布函数 后端优化函数 代码框架所详解的代码是深蓝学院课程提供的VIO代码,是港科大VINS-Mono代码的精简版本,保留了主要的初始化/前端/后端优化模块,整个代码不依赖于ROS系统,对于进一步深入学习VINS系统具有极大的帮助。下面将对代码的主要部分进行讲解,有理解错误的地方请多指正。首先给出整个系统流程图。主函数针对EuRoC数据集的测试主函数为run_euroc.cpp,首先创建后端线程:// An highlighted blockstd转载 2020-12-09 17:27:11 · 1785 阅读 · 1 评论 -
[学习SLAM] 3D可视化 只viz模块和pangolin
viz模块主要用于3D可视化显示。首先看个简单示例程序,创建一个窗口并显示坐标系: //创建可视化窗口 viz::Viz3d window1("window1"); //构造一个坐标系,并显示到窗口中 window1.showWidget("Coordinate", viz::WCoordinateSystem()); //开启永久循环暂留 window1.spin();第一句,创建窗口。很简单,类型为Viz3d类型,参数为窗口名称。第二句,在窗原创 2020-12-04 16:43:45 · 2385 阅读 · 1 评论 -
[学习SLAM]协方差矩阵与雅克比矩阵-(相关性/变换基)||(微分倒数J/H)
协方差矩阵/协方差矩阵的意义基本的统计学概念,即均值、标准差、方差和协方差协方差的定义对于一般的分布,直接代入E(X)之类的就可以计算出来了,但真给你一个具体数值的分布,要计算协方差矩阵,根据这个公式来计算,还真不容易反应过来。网上值得参考的资料也不多,这里用一个例子说明协方差矩阵是怎么计算出来的吧。记住,X、Y是一个列向量,它表示了每种情况下每个样本可能出现的数。比如给定则X表示x轴可能出现的数,Y表示y轴可能出现的。用中文来描述,就是:协方差(i,j)=(第i列的所有元素-第i.原创 2020-11-12 18:10:58 · 4057 阅读 · 2 评论 -
【学习SLAM】vins笔记
bool GlobalSFM::solveFrameyPnP(Matrix3d &R_initial, Vector3d &P_initial, int i,vector<SFMFeature> &sfm_f)原创 2020-12-09 18:43:35 · 975 阅读 · 0 评论 -
[学习SLAM]欧拉角,旋转矩阵,旋转向量和四元数[opencv(C++,python),matlab,eigen]转换
[学习opencv]基于OpenCV的四元数、旋转矩阵和欧拉角互相转换【学习SLAM】’Matlab ——旋转矩阵,旋转向量,四元数,欧拉角之间的转换[学习SLAM]Eigen库使用教程之旋转矩阵,旋转向量和四元数的初始化和相互转换的实现 (ch3)...原创 2020-08-17 15:26:10 · 961 阅读 · 0 评论 -
[学习SLAM]ORB-SLAM3
原论文:ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAMCarlos Campos, Richard Elvira, Juan J. Gómez Rodríguez, José M. M. Montiel, Juan D. TardósarXiv:2007.11898代码开源地址:https://github.com/UZ-SLAMLab/ORB_SLAM3YouTube原创 2020-07-30 18:22:51 · 1791 阅读 · 0 评论 -
高精度地图与数据采集生产及产品实例
高精度地图、定位、感知、预测、规划、控制高精地图主要包括:道路定义 (地图道路) 交叉路口 (记住交叉路口的地物信息等) 交通信号 (记住交通灯的位置,计算高度等) 车道规则 (记住当前路段的车道规则)处理高精地图外还有俯视图、相对定位图、三维点云地图来作为辅助没有高精度地图 L3 L4 是无法落地的普通的导航电子地图是面向驾驶员使用(有向图结构),而高精度地图是自动驾驶汽车使用(还包转载 2020-05-18 18:28:19 · 6982 阅读 · 0 评论 -
定位中传感器与坐标系
<li>感知:What we see</li><li>决策:How the environment will change</li><li>规划:How we move</li><li>控制:How to control the car</li>目录1. 技术入门GPS定位点云匹配定位视觉定位惯性导航推算轨迹多传感器融合定位 2.基础知识——主要讲述各种坐标系三维坐标系的几何变转载 2020-05-18 17:45:31 · 1574 阅读 · 0 评论 -
【学习SLAM】SLAM14讲学习笔记(十三)ch10 后端1(代码详述)
这章的代码纯粹靠自己学习,对于初学者来说是很难的。我个人有些感觉:之前的练习,都是一些小demo,相当于实验内容。而这章,给读者展现了一些工程上的东西。类似于第9讲的设计前端,这章已经算一个小型的slam后端系统了。对于普通学生来说,C++的那一套东西,只是懂得理论,主要平时做实验,写代码还是属于面向过程的。从这节的代码中,我们可以充分的学习和体会到面向对象的优势与精髓,了解到工程上的一些设计...原创 2020-03-17 10:30:12 · 424 阅读 · 0 评论 -
[学习opencv]基于OpenCV的四元数、旋转矩阵和欧拉角互相转换
这部分代码我摘自于goog...转载 2020-01-06 10:25:25 · 4477 阅读 · 0 评论 -
[学习SLAM]分析总结常见的几种移动机器人底盘类型及其运动学
最近想做一个关于移动机器人的总结,就先从移动机器人的底盘说起吧。现在移动机器人这么火热,大到无人驾驶车,规矩的有工业上应用得很多的AGV(比如智能物流自动搬运机器人),小到淘宝上面的智能小车,都可以算作移动机器人。移动机器人有各种各样的底盘,有两轮的三轮的四轮的,比如无人车是四轮的阿克曼模型,一般的AGV是两轮差速模型,还有大学生机器人竞赛里面常见的三轮全向轮底盘,四轮全向轮底盘,还有一些AGV是...转载 2019-12-26 10:28:52 · 5570 阅读 · 0 评论 -
[自动驾驶]自动驾驶工具箱-车道保持辅助与车道检测
自动驾驶工具箱 自动驾驶工具箱入门车道保持辅助与车道检测本示例使用:自动驾驶工具箱 嵌入式编码器 模型预测控制工具箱 Simulink控制设计 Simulink本示例说明如何为汽车车道保持辅助(LKA)控制器模拟和生成代码。在此示例中,您: 回顾结合了车道检测数据处理和Model Predictive Control Toolbox™的车道保持控制器的控制算法...翻译 2019-11-05 09:54:58 · 7765 阅读 · 1 评论 -
自动驾驶传感器平台盘点
不同的传感器都有其优势和缺陷,无法在单传感器的情况下完成对无人驾驶功能性与安全性的全面覆盖,这显示了多传感器融合的必要性。因此,各个传感器之间借助各自所长相互融合、功能互补、互为备份、互为辅助才是完备的无人驾驶系统。如何融合这些传感器的优势,弥补不足是自动驾驶工程师们现在的主要工作之一。 目前,现有的车载传感器包括激光雷达、毫米波雷达、车载摄像机、GPS/IMU、V2...转载 2019-10-22 20:40:13 · 1005 阅读 · 0 评论 -
[学习SLAM]轮速仪的建模/机器人运动模型详细分析(理论篇)
机器人运动模型由其他组采集到的轮速数据需要根据公式将速度转化为位移量,具体机器人运动模型有两大类。如下:模型1模型1 同类表达1-1模型1 同类表达1-2模型2模型2 同类表达2-1用轮速计实现双轮差动机器人的位姿估计模型2 同类表达2-2 (图中坐标xy与公式相反)模型2 同类表达2-3mode 1...原创 2019-09-23 20:25:10 · 2722 阅读 · 1 评论 -
[学习SLAM]轮速仪的建模与精度评估/轮速里程计(实践篇)
机器人运动模型(算法理论)由其他组采集到的轮速数据需要根据公式将速度转化为位移量,具体机器人运动模型有两大类,3小类。如下:针对模型2详细的说明以及代码实现:用轮速计实现双轮差动机器人的位姿估计1、轮速计的工作原理根据安装在双轮差动机器人左右2个驱动轮电机上的光电编码器,来检测车轮在一定时间内移动的距离,从而推算出机器人相对位姿(位置和航向)的变化。2、轮速...原创 2019-09-23 20:26:44 · 9285 阅读 · 3 评论 -
[学习SLAM]轮速仪的建模/轮速里程计(番外篇)
机器人局部避障的动态窗口法(dynamic window approach)本文链接:https://blog.csdn.net/heyijia0327/article/details/44983551首先在V_m∩V_d的范围内采样速度:allowable_v = generateWindow(robotV, robotModel)allowa...转载 2019-09-23 20:27:10 · 1019 阅读 · 2 评论 -
[学习SLAM]超声波控制小车避障
超声波测距原理主要利用单片机的定时、计数器。超声波在空气中的传播速度为340m/ s,根据计时器记录的时间t ,就可以计算出发射点距障碍物的距离 s,即s=340×t/2,在测距计数电路设计中,采用了相关计数法,其主要原理是:测量时单片机系统先给发射电路提供脉冲信号,单片机计数器处于等待状态,不计数;当信号发射一段时间后,由单片机发出信号使系统关闭发射信号,计数器开始计数,实现起始时的同步;当...转载 2020-12-09 18:21:38 · 4544 阅读 · 0 评论 -
Proj.4 经纬度坐标与高斯坐标的转换(3度带或6度带)
1、高斯投影高斯投影又称横轴椭圆柱等角投影,是德国测量学家高斯于1825~1830年首先提出的,1912年,德国测量学家克吕格推导出实用的坐标投影公式,又称为:高斯-克吕格投影;它属于正形投影,特点是中央子午线不变形;但是除了中央子午线,其他子午线的测段连线投影后都是要变形的,而且离中央子午线经度越远,变形越大。3度带或6度带为了控制投影后的长度变形,通常我们使用采用分带投影的方法。...原创 2019-09-09 21:18:54 · 26653 阅读 · 0 评论 -
[学习SLAM]SLAM中的旋转可视化(欧拉角,四元数,旋转向量)
1 位置轨迹ORB_SLAM2 欧拉角数据ORB_SLAM2四元数数据ORB_SLAM2旋转向量数据将旋转向量的Y角度 (-180~180转0~360)原创 2020-12-09 18:08:46 · 688 阅读 · 0 评论 -
【学习SLAM】ORB_SLAM2 双目测试(1)
针对双目相机和RGB-D相机的ORB-SLAM2建立在单目ORB-SLAM的基础上,它的核心组件,如图2所示。图2 ORB-SLAM2由三个平行的线程组成,跟踪,局部建图和回环检测。在一次回环检测后,会执行第四个线程,去执行BA优化。跟踪的线程在双目或者RGB-D输入之前进行,因此剩下的系统模块能够跟传感器模块独立运行。单目的ORB-SLAM2工作图也是这幅图。这个...原创 2020-12-09 17:57:17 · 2239 阅读 · 0 评论 -
[学习SLAM]LOAM (Lidar Odometry and Mapping in Real-time)
L-SLAM相关论文LOAM: Lidar Odometry and Mapping in Real-time, 2014概述:该论文是Lidar 3D SLAM的经典之作,作者另辟蹊径将复杂的SLAM问题分为:1. 高频的运动估计; 2. 低频的环境建图,巧妙地解决了实时性的难题。该解决方案也长期位居KITTI Odometry评测榜的前3名。论文笔记:LOAM 论文原理分析简...原创 2020-12-09 18:08:00 · 724 阅读 · 0 评论 -
[学习SLAM]G2O的在SLAM中使用示例[实践篇] 曲线拟合示例1 ,优化 PnP 的结果示例2,
图优化理论简介我们已经介绍了非线性最小二乘的求解方式。它们是由很多个误差项之和组成的。然而,仅有一组优化变量和许多个误差项,我们并不清楚它们之间的关联。比方说,某一个优化变量 x j 存在于多少个误差项里呢?我们能保证对它的优化是有意义的吗?,我们希望能够直观地看到该优化问题长什么样。于是,就说到了图优化。图优化,是把优化问题表现成图(Graph)的一种方式。这里的图是图论意义上的图。一个图由若...原创 2019-03-17 11:08:51 · 525 阅读 · 1 评论 -
【学习SLAM】ORB SLAM2代码解析(1)
今天我们来一起读ORB SLAM2的代码,其实前几个月的时候,在博客写过一些自己的理解,但是不是很详细。然后最近再用ORB SLAM2跑一些室内的数据集,所以会更加详细一些。我们按照github上面的说明搭建好环境,然后下载对应的代码,发现也是一个CMAKE工程,然后我们进去对应的CMakeLists.txt,发现是把对应几个.cc文件编译成可执行文件。分别是:把rgbd_tum.cc编译...转载 2019-06-05 22:56:50 · 2527 阅读 · 0 评论 -
[学习slam]用ORB SLAM2跑自己的数据集 使用图片序列或摄像头或视频 实践篇
用ORB SLAM2跑自己的图片序列数据集不跑代码,何谈理解,撸起袖子我们今天一起看看如何用ORB SLAM2跑通自己的数据集。往往我们的数据集是从现实生活的场景中来采集得到的,如果只是为了跑起来玩一下,很多博客都有介绍,大家可以搜一下就有很多参考资料,但是都是简单的玩一下。我们今天主要用的是:带时间戳信息的数据集,往往我们不是跑起来玩一下的,我们需要与现有的groundtruth作比较,我们...转载 2019-06-04 11:25:34 · 6556 阅读 · 10 评论 -
【学习SLAM】ROS下使用USB摄像机/ORB_SLAM2配置
先测试一下usb摄像头打开摄像头,需要启动ros,在两个不同的终端分别执行以下命令:$ roscoresource ~/catkin_ws/devel/setup.bashroslaunch usb_cam usb_cam-test.launch具体的步骤 首先开个新的终端,运行roscore$ roscore 在运行该节点之前,需要先配置一下节点...原创 2019-06-05 23:12:54 · 1461 阅读 · 0 评论 -
【学习ROS】linux安装并配置ROS环境
http://wiki.ros.org/cn/ROS/Tutorials/InstallingandConfiguringROSEnvironment安装并配置ROS环境Description: 本教程详细描述了ROS的安装与环境配置。Tutorial Level: BEGINNERNext Tutorial: ROS文件系统介绍Contents安装ROS 管理环境 创建ROS...转载 2019-06-05 23:14:57 · 14000 阅读 · 0 评论 -
Ubuntu 16.04 ORB_SLAM2+ROS+usb_cam+AR
最近开始学习ORB_SLAM2,想试试它的AR功能。尝试的过程中遇到了一些问题,总结一下:搭建ORB_SLAM2ORB_SLAM2的搭建并不难,网上有很多教程,这个就不错点击打开链接 (我建议用opencv3.2,因为之前我装的3.0,没有成功,后来删了3.0换了3.2,就成功了)ORB_SLAM2的源码git_hub上有:点击打开链接ORB_SLAM2有四个Examples,跑AR的话需要安装R...转载 2018-06-25 17:34:46 · 1084 阅读 · 2 评论 -
ubuntu 16.04下安裝和配置ros(ORB-SLAM-A)
書上和網上關於ubuntu下安裝ros的文章很多,但是很多介紹的不完整,並且ubuntu和ros之間其實是有版本對應關系的,並不是所有的ros都能安裝到所有的ubuntu上,(很多書上或者文章介紹用的都是hydro或者indigo,有的給出了ubuntu版本,有的沒有給出,而參考的人很多忽略了ubuntu版本,覺得都可以)而這一點,很多文章沒有提到,結果其他人參考的時候,無法安裝成功。1. u...转载 2018-06-25 17:23:23 · 4166 阅读 · 0 评论