![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SLAM
_Leveon
学海无涯,孜孜以求...
展开
-
camera相机标定
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数(内参、外参、畸变参数)的过程就称之为相机标定(或摄像机标定)。标定方法:1、传统相机标定;2、非线性标定3、张正友标定介绍(张正友标定只考虑了径...转载 2019-11-11 17:54:57 · 363 阅读 · 0 评论 -
IMU误差模型和校准
IMU在校准过程中,加速度计和陀螺仪是分开校准,一般是先校准加速度计,然后利用准确的加速度计信息再来校准陀螺仪。IMU的误差来主要来自于三部分:包括噪声(Bias and Noise)、尺度因子(Scale errors)和轴偏差(Axis misalignments)。一、加速度的常规校准方法:1、常规校准方法:2、六面法校准加速度计:二、 陀螺仪校准1、Al...转载 2019-11-11 17:47:25 · 2145 阅读 · 0 评论 -
ORB_slam 利用opencv提取特征点与匹配
步骤:1、imread()读取图片;2、特征点检测器:检测每个图片的 Oriented FAST 角点 detector->detect();3、根据各图片角点位置计算 BRIEF 描述子descriptor->compute ( img_1, keypoints_1, descriptors_1 );4、计算两幅图像的 Hamming 距离matcher->...原创 2019-03-01 11:57:21 · 1162 阅读 · 0 评论 -
旋转矩阵,旋转向量和四元数的初始化和相互转换的实现
https://blog.csdn.net/u011092188/article/details/77430988转载 2019-02-14 13:57:45 · 1308 阅读 · 0 评论 -
Eigen基础小结
连载:https://blog.csdn.net/xuezhisdc/article/details/54619853一、Eigen基础1、使用命名空间:using namespace Eigen;2、Matrix<double, 3, Dynamic> B; // Fixed rows, dynamic cols. 需要使用: B.resize(2,...转载 2019-02-19 16:02:18 · 676 阅读 · 0 评论 -
G2O入门
G2O优化方法使用流程:1、构建模型的顶点: oplusImpl( const double* update ) ——》顶点的更新函数2、构建模型的边:void computeError() ——》计算曲线模型误差,边的误差计算函数,取出边所连接的顶点的当前估计值,与该顶点的观测值进行比较3、生...原创 2019-02-13 16:32:37 · 548 阅读 · 0 评论 -
编译Pangolin错误
Pangolin/include/mpark/variant.hpp:1083:68: error: no matching function for call to ‘invoke(mpark::detail::visitation::variant::value_visitor<pangolin::ToGlGeometryElement(const pangolin::Geometry:...原创 2019-02-22 11:48:17 · 4049 阅读 · 4 评论 -
ubuntu下Kdevelop的使用
一、下载安装Kdevelop:sudo apt-get install Kdevelop二、一个工程中要有源文件和对应的 CMakeLists.txt ,在ubuntu应用程序中输入Kdevelop,打开IDE1、打开一个工程: ——》“打开工程”——》打开工程所在的目录——》在 名称(N) 选项中,选中 CMakeLists.txt——》finish 即可打开一个工程...原创 2019-01-30 13:57:17 · 936 阅读 · 0 评论 -
opencv安装及测试应用
1、安装参考:https://blog.csdn.net/cocoaqin/article/details/78163171 2、测试用高博的ch5代码例子: 在/ch5/joinMap 目下下创建 build目标,然后 cmake .. &make,编译出二进制:joinMap* 在pose.txt所在的文件目录/ch5/jo...原创 2019-01-29 18:00:15 · 798 阅读 · 0 评论 -
视觉SLAM 综述
转自:https://blog.csdn.net/darlingqiang/article/details/78901022 https://blog.csdn.net/Darlingqiang/article/details/78840931 SLAM一般处理流程包括track和map两部分。所谓的track是用来估计相机的位姿,也叫front-end。而map...转载 2019-01-21 17:38:46 · 402 阅读 · 0 评论 -
Navigation之 nav_core
https://blog.csdn.net/weixin_37058227/article/details/79368234 nav_core包 包含了导航功能包集的关键接口。nav_core 使所有规划器(planner)和修复行为机制可以插件的方式在move_base node中使用,且必须继承这些接口,接口如下: 1、 nav_core::BaseG...原创 2019-01-15 17:53:09 · 541 阅读 · 0 评论 -
Ceres 入门
https://blog.csdn.net/cqrtxwd/article/details/78956227Ceres求解的最小二乘问题的一般形式:误差的平方和使用Ceres求解非线性优化问题,一共分为三个部分:1、 第一部分:构建cost fuction,即代价函数,也就是寻优的目标式。这个部分需要使用仿函数(functor)这一技巧来实现,做法是定义一个cost functi...转载 2019-02-20 18:47:15 · 315 阅读 · 0 评论 -
ORB-SLAM2流程
https://blog.csdn.net/u010128736/article/details/53157605 梳理了一下ORB-SLAM2 的流程:一、数据结构 enum eSensor{ MONOCULAR=0, STEREO=1, RGBD=2 };从...原创 2019-03-11 17:49:20 · 1179 阅读 · 0 评论 -
PCL系列
https://blog.csdn.net/xuezhisdc/article/details/510123001、PCL系列——读入PCD格式文件操作2、PCL系列——将点云数据写入PCD格式文件3、PCL系列——拼接两个点云4、PCL系列——从深度图像(RangeImage)中提取NARF关键点5、PCL系列——如何可视化深度图像6、PCL系列——如何使用迭代最近点法(ICP)...转载 2019-03-25 18:26:48 · 453 阅读 · 0 评论 -
Kinect
一、Kinect结构:【三只眼睛】红外投影机、彩色摄像头、红外深度摄像头(自左往右) 各部分说明:(红外投影机:主动投射近红外光谱,照射到粗糙物体,或是穿透毛玻璃后,光谱发生扭曲,形成随机的反射斑点(散斑),进而被红外摄像头读取 彩色摄像头:用于拍摄视角范围内的彩色视频图像 红外摄像头:分析红外光谱,创建可视范围内的人体、物体的深度图像 以从激...原创 2019-06-26 09:14:51 · 608 阅读 · 0 评论 -
SLAM地图存储加载
1、地图存储2、加载原创 2019-06-20 10:27:27 · 565 阅读 · 0 评论 -
camera calibration及标定结果如何使用
https://blog.csdn.net/aoulun/article/details/78768570求内参和外参1、各个坐标系的定义1.1 像素坐标系:像素坐标就是像素在图像中的位置。1.2 图像坐标系:与像素坐标系在同一个平面,只是做了平移。为什么像素坐标系会在相机坐标系的前面呢,按道理说,相机坐标系是以相机的透镜中心为原点,那像素坐标系和图像坐标系为什么不在后面呢?——&...转载 2019-06-05 09:58:37 · 900 阅读 · 0 评论 -
三维计算视觉研究内容
三维计算视觉研究内容包括: 三维匹配 多视图三维重建 SLAM 目标识别 形状检测与分类 语义分类 立体视觉与立体匹配 ZNCC SFM1、点云滤波方法(数据预处理): 双边滤波、高斯滤波、条件滤波、直通滤波、随机采样一致性滤波。 VoxelGrid2、关键点 ISS3D、Harris3D、NARF...转载 2019-04-02 11:01:15 · 355 阅读 · 1 评论 -
VSLAM算法(三): 3D-3D 的ICP求解方法:SVD 及 BA优化算法
3D-3D模型:1、根据两张图像的特征点(orb特征点)求出匹配点;2、根据obr特征的深度计算 空间左边点位置 P1,P2 ;3、根据 SVD 方法,计算相机 位姿 ( R , t );4、用 BA 方法 优化 位姿( R , t );5、验证 p1 = R*p2 + t//--1、根据两张图像的特征点(orb特征点)求出匹配点; find_feature_mat...转载 2019-03-28 15:37:24 · 1380 阅读 · 0 评论 -
VSLAM算法(四): 后端优化算法 EKF/BA
记录以EKF为代表的滤波器后端和以非线性优化的后端BA原创 2019-04-01 13:32:40 · 1032 阅读 · 0 评论 -
VSLAM算法(二):PnP求解 3D-2D 相机位姿及 BA优化算法
BA优化模型如下:优化变量(空间位置P和相机位姿),边(P在相机平面的投影像素坐标) // 调用OpenCV 的 PnP 求解,可选择EPNP,DLS等方法 solvePnP ( pts_3d, pts_2d, K, Mat(), r, t, false ); cv::Rodrigues ( r, R ); // r为旋转向量形式,用Rodrigues公...转载 2019-03-27 11:41:09 · 4936 阅读 · 0 评论 -
VSLAM算法(一):使用2D-2D的特征匹配估计相机运动
通过匹配得到的特征点对(matches), 通过函数 findEssentialMat() 【 findHomography() ,findFundamentalMat(),】计算得到 矩阵E,变换得到 ( R、t ) ,最后在相机坐标系下验证堆积约束 P^ *E*P = 0。/*****************************************...原创 2019-03-26 08:59:26 · 1580 阅读 · 2 评论 -
Navigation之move_base
https://blog.csdn.net/x_r_su/article/details/53376245 1、move_base包采用action机制接受导航goal,然后移动机器人底座到达指定的goal。 这个过程中move_base node将同时利用局部规划器和全局规划器来完成导航任务,支持任何一种继承了nav_core包中n...原创 2019-01-15 16:27:08 · 293 阅读 · 0 评论 -
Navigation之global planner
https://blog.csdn.net/u013158492/article/details/50504963对于global planner,可以采用以下三种实现之一: "navfn/NavfnROS","global_planner/GlobalPlanner","carrot_planner/CarrotPlanner"最终调用算法核心部分,然后介绍这四种算法的实现:A*, Di...原创 2019-01-15 15:56:05 · 534 阅读 · 0 评论 -
navigation之costmap_2d
https://blog.csdn.net/weixin_37058227/article/details/79068900 costmap_2d这个包提供了一种2D代价地图的实现方案,该方案利用输入的传感器数据,构建2D或者3D代价地图,并根据占用网格和用户定义的膨胀半径计算2D代价地图。 以层的概念来组织图层,用户可以根据需要自己配置,默认的层由static_layer...原创 2019-01-15 15:40:41 · 361 阅读 · 0 评论 -
slam芯片选择
ARM架构:低端:Paspberry Pi ,Odroid-XU4, RK3288 3399 (支持Ubuntu1604)高端:Nvidia Jetson TK1(可以和低端的PC相媲美); S5P4418 四核(镭s)X86架构:在机器人本地计算比较复杂的话:Mini PC,Intel NUC,——》有i5或i7的X86架构,...原创 2018-11-30 16:42:18 · 1145 阅读 · 0 评论 -
用rplidar测cartographer开源算法
一、安装cartographer参照大神hitcm的记录安装:https://www.cnblogs.com/hitcm/p/5939507.html1、首先安装ceres solver,选择的版本是1.11,路径随意;2、然后安装 cartographer,路径随意;(1) git clone https://github.com/hitcm/cartographer....原创 2018-11-15 12:20:56 · 2094 阅读 · 6 评论 -
GMapping原理分析
https://blog.csdn.net/liuyanpeng12333/article/details/81946841博主本篇博客写的非常好,供自己查阅。转载 2018-11-16 11:44:47 · 1804 阅读 · 0 评论 -
先验分布/后验分布/似然估计/贝叶斯公式
转载于:https://blog.csdn.net/qq_23947237/article/details/78265026 博主用一个例子生动形象的介绍了(先验分布/后验分布/似然估计/贝叶斯公式).1、根据结果估计(猜)原因(交通方式)的概率分布即 后验概率: 一般化公式: P(因|果)2、根据...转载 2018-11-05 10:01:02 · 1280 阅读 · 0 评论 -
KF/PF/Graph-based 简要
转载于:http://blog.csdn.net/heyijia0327一直迷惑于KF和PF的公式推导和对比差异,博主讲的很好,虽然很多我没看懂,不过KF/PF发展脉络很清晰,故对比作记。(1)KF 的算法:(2)PF 的算法改进:(3)Graph-based SLAM...转载 2018-11-05 19:03:07 · 437 阅读 · 0 评论 -
激光雷达扫描角度裁剪
采用的是思岚的激光雷达A1,由于base的机构设计,需要对雷达进行角度裁剪。rplidar A1的扫描角度的定义如下: 参考博文:https://blog.csdn.net/lu199012/article/details/73457209我需要的扫描范围是【0,π】,在ROS中,顺时针为负,逆时针为正,裁剪方法:在node.cpp中void publish_sca...原创 2018-10-17 11:29:01 · 5328 阅读 · 5 评论 -
激光slam理论与实践
本篇是记录曾书格老师的课程《激光slam理论与实践》先贴一下个人总结(有理解的不正确的,麻烦指出来):第一章:激光SLAM简要介绍1、输出Metrical map尺度地图,slam分为两种:基于滤波的 filter-based 的SLAM,和Graph-based的SLAM。2、(1)基于Graph-based的代表是cartographer,可以修复 t 时刻之前的误差分...原创 2018-10-22 16:07:36 · 19786 阅读 · 19 评论 -
Kalman Filter的公式推导
https://www.cnblogs.com/xmphoenix/p/3634536.htmlhttps://blog.csdn.net/heyijia0327/article/details/17487467卡尔曼滤波属于一种软件滤波方法,其基本思想是: 以最小均方误差为最佳估计准则,采用信号与噪声的状态空间模型,利用前一时刻的估计值和当前时刻的观测值来更新对状态变量的估...转载 2018-12-13 17:21:47 · 431 阅读 · 1 评论 -
ROS中 Navigation包
ROS Navigation包的理解:https://blog.csdn.net/qq91752728/article/details/798636771、costMap整个代价地图中,我们都会给每一个格子分配一个值,取值为下列几个255 代表 未知区域254 代表 障碍物253 代表 小车会和障碍物冲突128 代表 小车可能会冲突也可能不会,根据朝向决定0 – 128 代表 不...原创 2018-12-06 17:59:15 · 1291 阅读 · 0 评论 -
Navigation之 clear_costmap_recovery
https://blog.csdn.net/wuliyanyan/article/details/60570566 调用这个包,会将global_costmap和local_costmap中给定半径(reset_distance默认值3.0)范围之外的区域进行清理,即将栅格占有或者非占有状态清除为未知。 void ClearCostmapRecovery::c...原创 2019-01-15 14:53:45 · 731 阅读 · 1 评论 -
Navigation之 carrot_planner
https://www.ncnynl.com/archives/201708/1904.html解决的问题: 如下图所示,当指定的运动目标 goal 在障碍区内时,怎么让机器人运动到 目标位置呢?——》找到离目标位置考经的点 goal,然后让机器人运动到这个位置,不至于碰到 障碍区。 ...原创 2019-01-15 14:29:07 · 1237 阅读 · 0 评论 -
Navigation之DWA
https://blog.csdn.net/weixin_42048023/article/details/83989971、nav_core(namespace nav_core里定义了BaseLocalPlanner类)——>base_local_planner——>dwa_local_planner(调用base_local_planner里面定义的接口函数) 在ba...原创 2019-01-15 11:56:40 · 392 阅读 · 0 评论 -
Navigation之AMCL
1、https://blog.csdn.net/u013834525/article/details/801665522、https://blog.csdn.net/ethan_guo/article/details/818090543、https://blog.csdn.net/chenxingwangzi/article/details/500384134、AMCL算法流程如下:h...原创 2019-01-14 17:53:20 · 307 阅读 · 0 评论 -
Probabilistic Robotics 概率机器人(1)
递归状态估计原创 2019-01-08 11:53:52 · 858 阅读 · 0 评论 -
Dijkstra算法和A*、D*算法
目前ROS中可以使用的global planner主要包括:Dijkstra,A*和D*算法。local planner主要有:dwa、trajectory、teb和eband等。目前、teb local planner效果可能会好点。一、Dijkstra算法 http://blog.51cto.com/ahalei/1387799 Dijkstra算法也即:单源最短路径 ...原创 2019-01-03 14:01:19 · 14134 阅读 · 1 评论