slam
文章平均质量分 85
古路
这个作者很懒,什么都没留下…
展开
-
Rviz 复选框插件
我想做的插件是类似于 pangolin 侧面的复选框,动态传递 bool 值给程序内部使用。查了一下只能是通过插件的方式进行实现。但是Display 的参数在编译阶段就写死了,我想要在运行期给定参数然后给插件设置 bool 的数量。原本想通过获取插件指针然后由客户端延迟给定参数,但rviz是 launch 文件直接启动的没有引入代码,插件的实例化是 Rviz 中点击 Add 的过程进行的。最终方案,使用 topic 进行通信,将需要设置的参数进行传进去,然后将交互的数据同样通过topic传出来。原创 2024-05-28 17:06:40 · 387 阅读 · 0 评论 -
CSF(Cloth Simulation Filter)点云地面点滤波
⾸先,我们将布粒⼦和LIDAR点投射到同⼀⽔平平⾯,然后在此2D平⾯中找到每个布粒⼦的最近的激光点云(称为对应点,CP)。IHV表⽰粒⼦能到达的最低位置,即如果粒⼦达到由该值定义的最低位置,则不能再向前移动。如果两个连接的粒⼦都是可移动的,我们将它们以相反的⽅向移动。通过分析布的节点与相应的LIDAR点之间的相互作⽤,可以确定布的最终形状,并将其⽤作将原始点分类为地⾯和⾮地⾯。粒⼦的位置和速度取决于作⽤在粒⼦上的⼒。当使⽤内⼒移动粒⼦的运动⽅向时,两个具有不同⾼度值的粒⼦将尝试移动到同⼀⽔平⾯。原创 2024-05-05 17:32:32 · 1532 阅读 · 0 评论 -
pl_vio线特征·part II
现在CSDN有字数限制了,被迫拆分为两篇文章。图2 空间直线投影到像素平面要想知道线特征的观测模型,我们需要知道线特征从归一化平面到像素平面的投影内参矩阵 K\cal{K}K 。如图2,点 CCC 和 DDD 是直线 L=(n⊤,d⊤)⊤\mathcal{L} =(\mathbf{n}^{\top},\mathbf{d}^{\top})^{\top}L=(n⊤,d⊤)⊤ 上两点,点 ccc 和 ddd 是它们在像素平面上的投影。 c=KCc = KCc=KC,d=KDd=KDd=KD ,KKK是相机的内参原创 2023-12-17 14:04:37 · 641 阅读 · 0 评论 -
pl_vio线特征·part I
然而, 使用由法线向量和方向向量表示的 3D 线, 可以简单地从两个几何视图执行三角测量, 并且也可以方便地对线几何变换进行建模。此外,正交表示和普吕克坐标可以相互转换,这意味着我们可以在 SLAM 系统中出于不同的目的同时采用它们。的定义, 这四个 DoF 包括来自旋转矩阵 (将线坐标变换到相机坐标系) 的 3 个 DoF, 以及来自距离。是由直线和坐标原点确定的平面法向量。当在两个不同的摄像机视图中观察到新的线地标时,可以轻松计算出普吕克坐标。匹配的结果,对应关系,其实就是存储的全局ID信息。原创 2023-12-16 19:34:37 · 1085 阅读 · 0 评论 -
Life-long Mapping
在长时间的建图过程中,基于图优化的 SLAM 的方法存在以下问题:PoseGraph 中的节点随着机器人走过的距离越来越多,以至于求解规模不断增大,影响优化效率。而 Lifelong Mapping 的基本思想是实现机器人在进行导航过程中进行建图,使得 PoseGraph 的规模不能随着运行轨迹的增长而增加,而是和建图面积相关联。实现 Lifelong Mapping 的思路是定期删除 PoseGraph 中冗余节点,在这过程中有两个问题需要考虑:SLAM 的目的是构建周边环境的地图。因此,选取冗余节点的时原创 2022-11-21 11:43:02 · 719 阅读 · 0 评论 -
高精地图_语义地图_众包地图相关论文笔记
2021作者:华为诺亚方舟实验室看华为的论文我似乎找到了他们写论文的固有格式:传感器:单目相机(提取语义特征) + IMU + 两个编码器 + GNSSIV.METHODOLOGYA. Semantic Features and DetectionB. Semantic Data Association with HD mapstep 1 在里程计先验位姿附近进行采样得到候选位姿(预测),并根据采样位姿将地图上的特征投影到图像上step 2 执行局部一致性的粗关联,找到近似最优的采样姿态,同时消除由于大的先原创 2022-11-21 11:13:49 · 1928 阅读 · 2 评论 -
cartographer_local_trajectory_builder_2d
对前端做一个总结。前端的主要功能:(1)点云数据处理:滤波、畸变校正(2)位姿外推器推算位姿(3)暴力匹配(scan-to-submap)(4)CSM匹配(5)生成Submap(6)生成Node传入后端系统整体概览:前端概览:cartographer_ros的submap获取与保存参考参考......原创 2022-06-21 15:09:59 · 372 阅读 · 0 评论 -
cartographer_ceres_scan_matcher_2d
同样的以 M(x)M(x)M(x) 概率越大越好,通过 1−M(x)1-M(x)1−M(x)则转为求最小值,也就是转为了最优化问题。最终目标要求最优的 T=(Tx,Ty,Tθ)T = (T_x,T_y,T_{\theta})T=(Tx,Ty,Tθ) 通过优化求解。常数 2 不影响结果,直接丢掉。cartographer 在代码实现过程中直接使用的 ceres 自动求导,没有对以上公式推导的细节进行代码实现。误差项的定义与计算在如下文件中:对外接口实现在 中,核心函数...原创 2022-06-16 10:54:02 · 1569 阅读 · 0 评论 -
cartographer_real_time_correlative_scan_matcher_2d
实时相关性扫描匹配:暴力匹配。主要实现在 与 中,接口函数核心函数为 .相关配置参数:整体思路:1、在设定的初始位置,在窗口范围内搜索,提取出每个候选位姿。2、计算出每个候选位姿下,点云打在栅格图上面的概率,计算其和。3、概率和最大的候选位姿,就为所要寻找的最佳位姿。1.SearchParametersstep 2 根据配置参数初始化 SearchParameters位于中。参考。余弦定理:根据参数角度搜索的范围窗口大小以及角度搜索步长求取角度搜索窗口的步数:所以,参数设原创 2022-06-15 17:12:16 · 969 阅读 · 0 评论 -
cartographer_probability_grid
首先从 上层进入,由于cartographer支持 2D 和 3D,所以在代码基本是面向接口编程的, 不完整类图如下(画得不是很规范,将就看):ActiveSubmaps2D 类:核心函数就是 .这部分代码辨别坐标时:默认resolution:0.05–>5cm/pixel.分辨率还是挺高的,比较耗内存。2.栅格地图的更新这一小节主要搬迁至这篇文章,备忘。相关常量和数值的计算在 里面。举例:假设 looccu = 0.9,lofree = -0.7。那么,显而易见,一个栅格状态的原创 2022-06-15 10:09:38 · 1722 阅读 · 1 评论 -
cartographer_pose_extrapolator
PoseExtrapolator 主要用于前端里程计:PoseExtrapolator主要思想: 采用匀速运动学模型预测未来时间time处的pose. 而匀速运动学模型的平移速度(线速度)是由角速度是由私有变量:数据结构:1.添加观测1.1. AddImuData向imu数据队列中添加imu数据,并进行数据队列的修剪 向odom数据队列中添加odom数据,并进行数据队列的修剪 ,并计算角速度与线速度.从 odometry_data_ 里面取出最老的与最新的两帧的数据。2.状态量的更新与校准Add原创 2022-06-13 15:05:44 · 831 阅读 · 0 评论 -
MsckfVio Estimator/Filter 纸上运行
对 msckf 代码进行简要数据结构管理分析与代码逻辑分析。原创 2022-06-07 10:09:09 · 239 阅读 · 1 评论 -
MsckfVio Estimator/Filter
msckf-vio 后端理论梳理。原创 2022-06-03 00:21:38 · 1119 阅读 · 0 评论 -
ESKF_Error-state kinematics for IMU-driven systems
Error-state kinematics for IMU-driven systems0.引言1.System kinematics in continuous time1.1. The true-state kinematics1.2. The nominal-state kinematics1.3. The error-state kinematics2.System kinematics in discrete time2.1.The nominal state kinematics2.2.The原创 2022-05-30 21:30:43 · 448 阅读 · 0 评论 -
扰动_求导_积分
扰动_求导_积分0.引言1.旋转的加减算子2.旋转的雅克比矩阵2.1.对向量求导(被旋转的向量)2.2.对四元数求导2.3.对旋转向量求导3.旋转对时间的导数3.1.扰动3.2.旋转对时间的导数4.旋转(rotation rates)对时间的积分4.1.四元数零阶时间积分4.2.四元数一阶时间积分0.引言经常查,总结一下。推导看原论文。1.旋转的加减算子S=R⊕θ≜R∘Exp(θ)R,S∈SO(3),θ∈R3\mathrm{S}=\mathrm{R} \oplus \boldsymbol{\th原创 2022-05-30 11:26:06 · 358 阅读 · 0 评论 -
旋转向量_旋转矩阵_四元数_欧拉角
0.引言经常查,总结一下。推导看原论文。1.旋转矩阵与旋转向量1.1.旋转向量转旋转矩阵(指数映射)旋转向量(角速度乘以Δt\Delta tΔt:v=ωΔt=ϕu\mathbf{v}=\boldsymbol{\omega} \Delta t=\phi \mathbf{u}v=ωΔt=ϕu旋转向量转旋转矩阵,指数映射:Exp(v)≜exp([v]×)\operatorname{Exp}(\mathbf{v}) \triangleq \exp \left([\mathbf{v}]_{\tim原创 2022-05-29 17:23:03 · 948 阅读 · 0 评论 -
msckf_image_processor
msckf_image_processor0.引言1.ProcessorConfig2.主要流程3.初始化3.1.createImagePyramids3.2.初始化第一帧4.trackFeatures4.1.计算前后帧imu相对旋转integrateImuData4.2.根据相机相对旋转预测cam0上一帧特征点在当前帧中的位置predictFeatureTracking4.3.cam0前后帧光流跟踪4.5.对cam0和cam1分别进行前后帧2点法ransac5.对cam0当前帧增加(提取)特征点6.发布前原创 2022-05-27 13:57:55 · 519 阅读 · 0 评论 -
激光点云的畸变校正
激光点云的畸变校正0.引言1.理解几个坐标系的关系2.代码阅读0.引言校正由于运动引起的激光点云畸变。参考阅读点云去畸变的方法包括:纯估计方法(ICP/VICP)传感器辅助方法(IMU/ODOM)融合的方法这里学习的也是传感器辅助方法。多余的也不再赘述,自己理一下几个坐标关系并做记录。1.理解几个坐标系的关系畸变产生的原因如图所示,自己理解也是基于这张图进行理解。图片来源这个坐标系关系和后续的代码相对应。通过线性插值,计算补偿矩阵的原理:雷达扫描一帧的时间是固定的,原创 2022-03-22 15:42:19 · 4539 阅读 · 3 评论 -
这个B样条
这个B样条0.引言1.de Boor-Cox 递推定义2.瞎解释3.节点向量4.基函数5.测试0.引言直线方程的参数形式:{x=x1+(x2−x1)ty=y1+(y2−y1)t,t∈[0,1]\left\{\begin{array}{l}x=x_{1}+\left(x_{2}-x_{1}\right) t \\y=y_{1}+\left(y_{2}-y_{1}\right) t\end{array}, \quad t \in[0,1]\right.{x=x1+(x2−x1)ty=y1原创 2022-01-05 20:06:58 · 806 阅读 · 2 评论 -
EKF-SLAM原理推导
EKF-SLAM0.引言1. 运动模型1.1.里程计模型1.2.运动更新2.测量模型0.引言参考链接。基本是基于概率机器人进行实现的,是一个很好的学习材料。此博客只是个人学习记录。AlgorithmExtendedKalmanfilter(μt−1,Σt−1,ut,zt)Algorithm Extended Kalman filter \left(\mu_{t-1}, \Sigma_{t-1}, u_{t}, z_{t}\right)AlgorithmExtendedKalmanfilter(μ原创 2021-12-02 22:46:47 · 2873 阅读 · 10 评论 -
粒子滤波用于机器人定位
粒子滤波学习0.引言1.滤波结果2.数据集0.引言参考链接。基本是基于概率机器人进行实现的,是一个很好的学习材料。1.滤波结果添加了滤波后的轨迹显示,前期容易跳变,可以在刚开始的时候采用里程计发布,滤波稳定后再使用滤波后的path进行显示。2.数据集看到数据集说明文档最后一张图片中的箭头表示,以为TlrT_{lr}Tlr误写为了TrlT_{rl}Trl,实际上没有。只是箭头表示和自己的习惯不一样,其他是一样的,具体体现在Localizer::measurementUpdate()函原创 2021-11-25 11:24:45 · 1498 阅读 · 3 评论 -
常见库矩阵行列优先记录
常见库矩阵行列优先记录0.引言1.行列优先的区别2.常见库的矩阵存储与访问顺序3.code0.引言在学习中遇到一个将Eigen转为栅格地图mapdata的过程,其中栅格地图mapdata是以行优先存储,顺便了解了一下常用的库的储存方式。# This represents a 2-D grid map, in which each cell represents the probability of# occupancy.Header header #MetaData for the map原创 2021-11-20 19:19:04 · 1665 阅读 · 0 评论 -
Jacobian与切空间
Jacobian与切空间0.引言1.Jaocibian与切空间2.旋转矩阵中的切空间3.MLPnP中的切空间0.引言知识的融会贯通,只是一个小的知识点,记录一下。1.Jaocibian与切空间众所周知,Jaocibian矩阵本质上就是导数。初中时学习的一元二次方程ax2+bx+c=0ax^2+bx+c=0ax2+bx+c=0求导,当xxx确定时可以得到xxx处的切线方程,切线就是一维的切空间。切空间是在某一点所有的切向量组成的线性空间。由于线性化本质就是微分,df/dxdf/dxdf/dx表示了雅原创 2021-08-20 16:14:13 · 684 阅读 · 1 评论 -
ORB-SLAM3中的MLPnP
ORB-SLAM3中的MLPnPORBSLAM3中的MLPnP在重定位时计算当前帧和候选帧的位姿变换备忘这篇文章。ORB-SLAM2 中重定位使用的是EPnP,ORB-SLAM3中重定位改为了最新的pnp求解算法:MLPnP.原创 2021-08-20 10:16:18 · 1050 阅读 · 0 评论 -
ORB-SLAM3多地图管理
ORB-SLAM3多地图管理0.引言1.Atlas(地图集)2.Tracking thread(追踪线程)3.Local Mapping thread(局部建图线程)4.Loop and map merging thread(闭环和地图融合线程)4.1.场景识别4.2.视觉地图融合5.重定位6.系统线程0.引言只看地图管理部分。ORB-SLAM3的地图管理,是在另一篇论文ORBSLAM-Altas中进行详细讲解的。本文也只看视觉方面,不讨论融合IMU的情况。系统框图和ORB-SLAM的框图十分相似。原创 2021-08-17 23:34:38 · 2367 阅读 · 0 评论 -
点线特征融合求取相机位姿
点线特征融合求取相机位姿0.引言1.点特征2.线特征3.点线特征4.结果0.引言使用TUM数据集图片进行测试。左图右图左图深度图对,使用PNP!不过Perspective-n-Point(PnP)名字不太恰当,PnPL?1.点特征2.线特征3.点线特征4.结果...原创 2020-08-09 21:35:31 · 1166 阅读 · 8 评论 -
VINS-Mono初始化中的坐标转换
0.引言//输出是优化过后的相机位姿//这里得到的是第l帧坐标系到各帧的变换矩阵,应将其转变为各帧在第l帧坐标系上的位姿for (int i = 0; i < frame_num; i++){ q[i].w() = c_rotation[i][0]; q[i].x() = c_rotation[i][1]; q[i].y() = c_rotation[i][2]; q[i].z() = c_rotation[i][3]; q[i] = q[i].inverse();}fo原创 2020-08-04 17:22:33 · 699 阅读 · 1 评论 -
G2O优化
G2O优化0.引言0.1.参考0.1.G2O的解决问题0.2.G2O整体框架1. 基本使用1.1.构造 g2o 模型1.2.g2o 类图2.g2o 的顶点(Vertex)2.1.顶点的格式2.2.自定义顶点2.3.将顶点添加到图中3.g2o 中的边3.1.边的格式3.2.自定义边3.3.将边添加到图中4.ORB-SLAM2 中的顶点4.1.相机位姿顶点4.2.地图点坐标顶点4.3.闭环时的 sim3 相机位姿5. ORB-SLAM2 中的边5.1.位姿优化时的重投影误差5.2.BA 优化时的重投影误差5.3原创 2020-08-03 15:03:56 · 4501 阅读 · 2 评论 -
g2o_viewer
g2o_viewer0.引言1.安装2.运行0.引言默认安装可能不会安装g2o_viewer.1.安装依赖项:sudo apt-get install libeigen3-devsudo apt-get install libsuitesparse-devsudo apt-get install libqt4-devsudo apt-get install qt4-qmakesudo apt-get install libqglviewer-qt4-dev其他正常安装就是了。2.运行原创 2020-08-01 11:30:28 · 2482 阅读 · 0 评论 -
Lambda Twist: An Accurate Fast Robust Perspective Three Point (P3P) Solver
Lambda Twist: An Accurate Fast Robust Perspective Three Point (P3P)Solver0.引言1.DLT求解PnP2.P3P求解3.Lambda Twist0.引言ECCV2018 paper.code1.code2.特征点的3D可以由三角化或者RGBD相机获取。因此双目或RGBD的视觉里程计中可以直接使用PnP估计相机运动,而在单目视觉里程计中,必须先进行初始化然后才能使用PnP。[uxuy1]=λK⋅[Rt][xyz1]\lef原创 2020-07-14 22:55:22 · 669 阅读 · 0 评论 -
SLAM数据处理小程序备忘
SLAM数据处理小程序备忘0.引言1.程序运行时间计算2.EuRoc2TUM3.file2ROSBag4.去除每行头尾的空格0.引言备忘部分数据集相互处理以及近期用到的一些数据处理小程序.1.程序运行时间计算C++的库函数中,计算程序运行时间使用的知识点:clock_tclock_t数据类型,long型,用来记录一段时间内的clocks数,即CPU的运行单元时间。clock()...原创 2020-05-06 11:12:11 · 592 阅读 · 0 评论 -
Some important reference documents of Intel Realsense D435I
Some important reference documents of Intel Realsense D435I0.introduction1.reference0.introduction备忘一些官方的常用文档,都是对工程实现很实用的介绍说明。官方白皮书1.reference0.Tuning depth cameras for best performance介绍了如何...原创 2020-03-10 14:02:11 · 174 阅读 · 0 评论 -
Intel RealSense D435i Calibration
Intel RealSense D435i Calibration0.引言1.标定工具安装1.1.imu_utils Install1.2.kalibr Install2.IMU标定3.相机标定4.IMU+相机联合标定5.VINS Yaml文件配置0.引言ref0.官方校准白皮书ref1.blogref2.blog. realsense d435i包含两个红外相机、红外发射器、R...原创 2020-03-09 15:40:47 · 8586 阅读 · 45 评论 -
几种相机坐标系的转换关系
集中坐标系的转换关系0.引言1.坐标系转换关系0.引言记录一下,经常用到,需要烂熟于心。1.坐标系转换关系原创 2020-02-20 20:46:07 · 483 阅读 · 0 评论 -
RGBDTAM: A Cost-Effective and Accurate RGB-D Tracking and Mapping System
RGBDTAM: A Cost-Effective and Accurate RGB-D Tracking and Mapping System0.引言1.相关系统(direct RGB-D odometry)2. tracking thread2.1.Photometric error (rphr_{ph}rph )2.2.Covariance-weighted Geometric error...原创 2019-11-13 16:35:15 · 444 阅读 · 0 评论 -
OBVP问题推导
OBVP问题推导0.引言1.推导2.code0.引言时间紧张,不整理了,直接上草稿纸。一元四次方称求解参考博客。1.推导2.code代码完全按照推导书写,包括变量的命令。double OBVP(Eigen::Vector3d _start_position,Eigen::Vector3d _start_velocity,Eigen::Vector3d _target_positio...原创 2019-11-18 09:47:40 · 3614 阅读 · 9 评论 -
一元四次方程的求解
一元四次方程的求解0.引言1.方法一2.方法二3.结论0.引言在学习过程中需要求解一个一元四次方程。由于带有未知参数,本想使用MATLAB求解出它的解析解然后写入C++进行计算。后来发现求解出来的解太长。要是直接放入C++中,通过解析解来实时求它的解甚至会比求解一元四次方程花费的时间更多。于是另谋出路,查阅资料如何求解一元四次方程。1.方法一Ferrari方法,这也是最容易Googl...原创 2019-11-09 15:01:46 · 15329 阅读 · 12 评论 -
3D JPS
3D JPS0.引言1.图解Neighbor Pruning & Forced Neighbors0.引言记录一下,不然久了根本不知道这个图咋看。1.图解Neighbor Pruning & Forced Neighborscase3中,方向为正方体对角线。 // nsz contains the number of neighbors for the four di...原创 2019-10-29 19:36:30 · 1121 阅读 · 12 评论 -
Diagonal distance in 2&3 dimensions
Diagonal distance in 2&3 dimensions0.引言1.Diagonal distance in 2 dimensions2.Diagonal distance in 3 dimensions0.引言D:栅格边长D2:正方形对角线D3:正方体对角线1.Diagonal distance in 2 dimensionsdx = abs(node.x ...原创 2019-10-28 21:20:17 · 852 阅读 · 1 评论 -
Intel Realsense D435i Firmware Update
Intel Realsense D435i Firmware Update0.引言1.更新0.引言固件下载更新教程1.更新固件名称:“ Signed_Image UVC <firmware_version> .bin”执行rs-fw-update -l查看设备。D435i的输出:connected devices:1) Name: Intel RealSense D...原创 2019-10-13 16:38:50 · 2401 阅读 · 3 评论