- 博客(25)
- 收藏
- 关注
原创 InfiniTAM 原理
InfiniTAM是一个开源、跨平台、实时的大范围深度信息融合与跟踪技术框架。该算法有好几个版本,有很大的借鉴意义。值得一提的是,InfiniTAM能够比KinectFusion重建更加大范围的3D环境,其关键因素在于InfiniTAM采用了的方式来存储隐式的体积表示,极大地节省了内存空间的消耗。二Depth Map Conversion:读入的深度图像转换为三维点云,计算每一个点云的法向量;
2024-06-13 10:23:23
1227
原创 ros之navigation
Navigaiton的功能实现起始点到目标点的导航。功能主要分为全局规划和局部规划,全局规划搜索出全局路径,局部规划实现机器跟随全局路径进行导航控制。Navigation输入为目标点、当前位姿、地图信息、传感器数据,输出为全局路径、局部轨迹及速度控制指令。
2024-04-08 20:13:57
1584
原创 apollo cyber RT初学
模块化的component,分布式部署(动态化加载),标准化的通信,灵活的调度,且component还支持插件。易于部署,灵活,好维护。main()
2024-02-29 17:22:53
1195
原创 linux---内存管理
即使是现代操作系统中,内存依然是计算机中很宝贵的资源,看看你电脑几个T固态硬盘,再看看内存大小就知道了。为了充分利用和管理系统内存资源,Linux采用虚拟内存管理技术,利用虚拟内存技术让每个进程都有4GB互不干涉的虚拟地址空间。进程初始化分配和操作的都是基于这个「虚拟地址」,只有当进程需要实际访问内存资源的时候才会建立虚拟地址和物理地址的映射,调入物理内存页。
2024-02-13 18:48:44
3080
原创 C++ 笔记
公有成员:对其对象是可见的继承时,对派生类是可见的保护成员:对其对象不可见,等同于私有成员继承时,对派生类是可见的私有成员:对其对象不可见。继承时,对派生类是不可见的。(派生类新增加的成员函数不能访问基类的私有成员,但继承基类的成员函数可以访问)保护成员,在不继承时等同于私有成员。当在继承时,等同于公有成员。对于对象,只有公有成员可见。
2024-02-11 20:55:27
887
1
原创 linux---同步方法
在中断处理程序中使用自旋锁时,一定要在获取锁之前,首先禁止本地中断(在当前处理器上的中断请求),否则中断处理程序就会打断持有锁的内核代码,有可能试图争用这个已经被持有的锁。这样一来,中断处理程序就会自旋,等待锁重新可用,但是锁的持有者在这个中断处理程序执行前不可能运行。此外,如果读取的值为偶数,那么久表明写操作没有发生(要明白因为锁的初值为0,所以写锁会使值为奇数,释放的时候又变成了偶数)。当持有信号量的进程将信号量释放后,处于等待队列中的那个任务将被唤醒,并获得该信号量。计数信号量和互斥信号量。
2023-12-09 15:56:23
745
原创 linux--进程
一般进程在用尽它们的时间片后,都会被移到过期数组,当活动数组中没有剩余时间时,这个两个数组被交换,活动数组变为过期数组,过期数组变为活动数组。活动数组内的可执行队列上的进程都还有时间片剩余,而过期数组内的可执行队列上的进程都耗尽了时间片。子进程作为父进程的一个单独的线程在它的地址空间里运行,父进程被阻塞,直到子进程退出或执行exec()。在一个进程创建的时候,新建的子进程和父进程均分剩余的进程时间片。在进程的内核栈的栈低或栈顶(尾端),创建一个新的结构体struct_thread_ifo。
2023-12-08 18:03:24
1388
原创 linux-中断
中断申请函数 int request_irq()可能会睡眠。不能在中断上下文或其他不允许阻塞的代码中调用该函数。Free_irq()必须从进程上下文中调用。
2023-12-07 10:07:43
507
1
原创 liv-sam---前世今生
LOAM 到LeGO-LOAM到LIO-SAM 到LVI-SAM。LOAM 、LeGO-LOAM、LIO-SAM都是纯激光算法。LeGO-LOAM、LIO-SAM 和LVI-SAM为Tixiao Shan的最新力作。
2023-11-30 11:18:30
2177
原创 orb-slam2 前端
对每层金字塔提取特征点,具体步骤就是将图像划分成小网格区域(orb2里设置的是30大小的窗格),然后对每个网格单独使用fast角点检测。为了使每个小网格都有角点检测到,设置了两个阈值,如果没有检测到角点,则使用更低的阈值。先画网格半径10,半径100个像素内的网格内找候选特征点,候选特征点进行标准的描述符匹配,最后用角度差直方图去除误匹配。然后对这些地图点,与当前帧的特征点匹配(搜索窗口大小与平均观测方向,尺度有关),不在的去除。找到的所有关键帧的地图点,对应的就是上面红色的地图点。八点法算出H和F矩阵。
2023-11-23 16:06:14
658
原创 slam---非线性优化
预处理被称为PCG方法(preconditioned conjugated gradient method)既然共轭梯度法的收敛速度取决于系数矩阵的特征值,那么我们可以将A x = b 转化为等价的B x = c,使得B x = c在与A x = b同解的前提下,而B的最大、最小的特征值之比远小于A的最大、最小的特征值之比。求解A x = b 的共轭梯度法。步长的求法:两种方法,一种是直接对步长求导,令导数为零,求出步长,如下面的例子。另一种,是进行二阶泰勒展开近似,然后对步长求导,令导数为零,求出步长。
2023-11-20 16:04:16
316
1
原创 slam--数学基础--矩阵理论
在二维空间中,旋转可以用一个单一的角 定义。作为约定,正角表示逆时针旋转。(英语:Rotation matrix)是在乘以一个。的时候有改变向量的方向但不改变大小的效果并保持了。
2023-11-16 16:52:50
650
1
原创 cartography 概述
自适应的目的,就是用二分法,选取一个最小的边长立方体,使其点云数目接近Min_num_points(上一次个数比它少,再二分一次就比他多了)。平移的预测: 通过pose数据队列开始和末尾的2个数据计算出的线速度乘以时间。ROS实现sensor数据的采集,及地图和点云数据的显示。平移的预测: 通过里程计数据队列开始和末尾的2个数据计算出的线速度乘以时间。平移的预测: 通过里程计数据队列开始和末尾的2个数据计算出的线速度乘以时间。平移的预测: 通过pose数据队列开始和末尾的2个数据计算出的线速度乘以时间。
2023-11-10 11:16:44
337
原创 vins 后端
t_drift和rdrift的更新,要把回环帧丢到滑窗里去算得出当前关键帧的T_w_i和R_w_i,再用当前关键帧的T_w_i和R_w_i更新图的t_drift和rdrift。最后用t_drift和rdrift更新关键帧列表中所有关键帧的T_w_i和R_w_i。如果没有放入滑窗更新位姿差(回环),T_w_i、R_w_i和vio_T_w_i和vio_R_w_i相等。Sequence建新的时候,t_drift和r_drift,w_t_vio和w_r_vio都要复位为零。也就是没有被图优化优化过的帧。
2023-11-09 15:27:28
200
1
原创 ORB-SLAM2 回环
(2)将候选闭环帧中的路标点投影到当前帧中,通过优化的方法进一步计算Sim3。首先将当前帧转化为词袋向量描述,然后将共视图中每个关键帧转化为词袋向量,计算他们之间的距离即分数,然后对分数进行排序,将最大距离即最小的分数设定为查找候选关键帧的。计算了当前帧和闭环帧的Sim3变换后,去更新当前帧及其共视帧的位姿,以及路标点的坐标。其中涉及了地图点的融合,共视图的更新,本质图的优化。在除去共视图关键帧的关键帧数据库中,逐个将每个关键帧转为词袋向量描述,计算当前帧词袋向量与该关键帧词袋向量之间的距离。
2023-11-09 14:41:56
94
1
原创 gtsam 原理学习
里程计添加关键帧时,回环添加新的观测时,不区分,一样进行上面的处理找到贝叶斯树中需要更新的部分。然后重新因子化,添加新的因子,再消元。当前端新加入一个观察或者关键帧时,产生一个新的因子f(xi, xj),首先找到所有受影响的团,为起点是包含xi或 xj的团,终点是根团。当前端新加入一个观察或者关键帧时,产生一个新的因子f(xi, xj),首先找到所有受影响的团,为起点是包含xi或 xj的团,终点是根团。在每一个团上,我们都可以检测变量估计之间的差值,解的更新向下传播,直到差值小于一定的阈值,传播才停止。
2023-11-08 11:47:04
576
1
原创 惯导积分----码盘,加速度计,陀螺仪
ORB-SLAM3的IMU的积分采用流形上的预积分,采用论文《On-Manifold Preintegration for Real-Time Visual-Inertial Odometry》理论。VINS的预积分,速度和位移与ORB-SLAM3相同,只是姿态采用四元素的方式。四元素的积分,用对四元素时间求导的结果进行积分。imuTypes.cc中的积分公式都为离散时间积分,采用的是中值积分。码盘与imu的同步,每次读取IMU数据时,同时读取码盘的计数增量。计算两帧图像之间的IMU预积分和码盘积分。
2023-11-02 14:02:44
312
1
原创 视觉slam----特征总结 sift fast harris superpoint以及线特征
下图所示,左图的中央为当前关键点的位置,每个小格代表为关键点邻域所在尺度空间的一个像素,求取每个像素的梯度幅值与梯度方向,箭头方向代表该像素的梯度方向,长度代表梯度幅值,然后利用高斯窗口对其进行加权运算。辅方向的定义是,当一个柱体的高度大于主方向柱体高度的80%时,则该柱体所代表的的方向就是给特征点的辅方向。在二维图像空间,中心点与它3*3邻域内的8个点做比较,在同一组内的尺度空间上,中心点和上下相邻的两层图像的2*9个点作比较,如此可以保证检测到的关键点在尺度空间和二维图像空间上都是局部极值点。
2023-10-29 11:49:28
495
原创 视觉slam之点线结合
因此我们选择了SIFT特征点,其特征稳定,对旋转、尺度变换、亮度保持不变性,对视角变换、噪声也有一定程度的稳定性。直线是一种大尺度的特征,在水面环境中具有更为理想的适用性,线特征具有光照和视角不变性特点,表现更为稳定、有效。线特征对角度敏感,线特征的重投影误差,采用端点到直线的距离,此重投影误差对角度敏感,可以大大提升位姿的姿态准确性。尺度不变性,噪声的稳定性,都是基于高斯金字塔实现的,而线特征也和SIFT一样,提取特征都是基于高斯金字塔图像上提取的,因此线特征也具有尺度不变性和噪声的稳定性。
2023-10-28 17:38:12
585
1
原创 视觉SLAM之相机标定
这其中有几个坐标系, 基础坐标系(用 base 表示) 是机器臂的基底坐标系,末端坐标系(用 end 表示) 是机器臂的末端坐标系, 相机坐标系(用 cam 表示) 是固定在机器臂上面的相机自身坐标系,标定物坐标系(用 cal 表示)是标定板所在的坐标系。世界三维坐标系固定在棋盘格上,外参矩阵反映的是标定板和相机的位置关系,对于不同的图片,标定板和相机的位置关系已经改变,此时每一张图片对应的外参矩阵都是不同的。检测边缘的交点作为角点,精度低,因为实际的棋盘格标定板的边缘存在过滞带,不是直接的由白瞬间变黑。
2023-10-27 16:47:57
538
1
原创 视觉slam之相机模型
第一步,先采用针孔模型的逆畸变运算将像素坐标转换成归一化平面坐标。一般认为16mm或焦距更短的镜头即为鱼眼镜头,但是在工程上视角范围超过140 度的镜头即统称为鱼眼镜头。而定位过程中大量特征点都需要进行逆畸变运算,因此一个高效的逆畸变运算方法是十分重要的。鱼眼相机成像步骤与普通相机基本一致, 主要的区别在于镜头聚光的部分, 其为了获得更大的FOV, 通过透镜折射实现聚光。相机模型用数学的方式描述了一个真实世界中的三维点到图像上像素坐标的映射关系。针孔模型这里讲下逆畸变过程,针孔模型有径向畸变和切向畸变。
2023-10-26 11:09:32
211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人