- 博客(111)
- 资源 (3)
- 收藏
- 关注
原创 shell常实用命令
利用ssh远程执行服务器命令fuction expect_server(){ expect <<EOF set timeout 1000 spawn $@ expect { "(yes/no)?" {send "yes\r"; exp_continue} "asswor*" {send "${SERVER_PASSWD}\r"; exp_continue} eo...
2019-08-09 14:33:04 6148 1
原创 PX4软/硬件(SITL/HITL)SLAM在环仿真
文章目录介绍依赖PX4 Firmware:软件在环(SITL)仿真Gazebo 软件无人机STIL连接简要示意SITL SLAM仿真总结示例HITL 仿真pxh常用命令MAVLink 指令使用这些命令时的注意事项参考链接介绍为https://blog.csdn.net/weixin_41469272/article/details/117919845的补充篇依赖Dependencies:PX4 Firmware v1.8.0地面站:QGC视景:gazabo通信:mavrosPX4 Fi
2024-09-09 22:21:09 994
原创 TexWorks配置使用latexmk实现增量编译
TexWorks默认使用pdfLaTeX+MakeIndex+BibTeX,修改后,重新编译等待时间较长。latexmk的参数可以在命令行指定,也可以在配置文件中指定。个人推荐使用配置文件,这样可以避免命令过长,也方便与其他工具集成。Miktex console 可以用来管理安装包,提供打开TexWorks的接口以及终端,终端则与普通windows cmd差别不大。回到TexWorks主页面,下拉处理菜单,选中latexmk,点击左侧绿色右三角,进行编译。打开TexWorks,点击编辑->首选项->排版。
2024-08-13 22:14:09 1221
原创 LM(Levenberg-Marquardt) & PCG(预条件共轭梯度法)
LM算法在处理非线性最小二乘问题时表现更好,能够更准确地求解参数。PCG算法虽然主要用于线性系统求解,但在引入预条件和线性化近似后,也能在一定程度上解决非线性问题。对于大规模稀疏线性系统,PCG有显著优势;而对于非线性优化问题,LM算法则表现出色。LM参考链接。
2024-07-16 17:19:07 957
原创 iSAM: Incremental Smoothing and Mapping
SAM是一个全轨迹方法(即没有变量或观测会被marg),随着时间的推移,A阵会变的越来越大,ISAM提出增量更新R阵的方法,当新的观测来到时,仅需要对R阵中相关变量行列进行增量补充,而后使用Givens Rotations 将新增的下三角非零元素转换为0,从而重新构成上三角矩阵进行求解。经过Givens重新三角化得到的R与原先的R相比,只有与当前观测相关的变量行受到影响,即特征点相关的对角矩阵块,以及最后(6)列对应的新的pose(6DOF)。每当一次新的观测到来后,完整计算一次协方差成本是非常大的。
2024-07-14 18:46:55 469
原创 House holder reflections and Givens rotations
具体来说,Householder反射可以用于将一个向量变成一个特定方向的向量,比如将一个向量变成与标准基向量平行的向量。这种方法的主要特点是,它可以在很少的运算步骤中完成这一操作,因此在数值计算中非常高效。Householder反射和Givens旋转是两种常见的线性代数方法,用于将一个矩阵分解为正交矩阵(Q)和上三角矩阵®,即QR分解。Givens旋转是一种通过旋转将一个向量的某个分量置零的方法。总体来说,QR分解的目标是通过一系列的正交变换(Householder反射或Givens旋转)将原矩阵。
2024-07-11 15:32:59 681
原创 SLAM中的块矩阵与schur补
特征点位置对应的更新量。SLAM问题中的信息矩阵的结构对应如下图所示,其中关于特征点的部分(该矩阵中的C块矩阵)为对角块矩阵。因而型如以下的SLAM求解问题,可以使用schur补+对角块矩阵逆的特性,高效求解。从而可以看出,我们通过回代同样得到了Schur补的情况。,此外也可以通过消元与回代的基本原理得到相同的结论。从而可以将求逆问题简化为对角块矩阵求逆的问题,先得到。矩阵,可以通过求解块对角矩阵的逆来找到。通常对于SLAM问题,信息矩阵中的{可以看到,右边的矩阵确实是。是 B$ 的逆矩阵。
2024-07-07 21:50:56 909
原创 Square Root SAM论文原理
文章目录Square Root SAM论文原理核心原理SLAM问题的3种表示贝叶斯网络因子图(Factor graph)马尔科夫随机场(Markov Random Field, MRF)SLAM最小二乘问题&线性化因式分解 factorization矩阵与图(Matrices ⇔ Graphs)因式分解&变量消元(Factorization ⇔ Variable Elimination )Cholesky分解(或LDL分解)变量消除在Cholesky分解中的作用步骤QR分解变量消除在QR分解
2024-07-07 17:05:10 1077
原创 VINS滑窗及边缘化
滑窗优化思想是指定一个待优化的窗口宽度,随着新帧的到来,将老的帧信息移出窗口,每次都优化窗口内的帧及特征点。由于在滑窗problem进行求解前,需要将先验约束加入到problem中,然而,先验结束是上一轮边缘化得到的,从而对于窗口内的变量及约束而言,边缘化使用的是次新帧是不是关键帧,而不是通过对新帧的判断。在VINS初始化过程中,使用SFM对特征点及相机位姿进行不带尺度(up-to-scale)的估计后,就使用了一次滑窗优化,此时尺度是任意设置的,且使用的是ceres自动微分功能。
2024-05-16 18:43:30 1253
原创 VINS初始化原理及代码
⋅w⋅w表示世界坐标系下的表示,Z轴与重力方向重合。⋅b⋅b表示体坐标系下的表示,与IMU坐标系绑定。⋅c⋅c表示相机坐标系下的表示。qbwq_b^wqbw和pbwp_b^wpbw分别表示imu 体坐标系下转换到世界坐标系下对应的旋转和平移。qcbq_c^bqcb和pcbp_c^bpcb分别表示相机坐标系下转换到体坐标系下对应的旋转和平移。⋅bk⋅bk表示第k帧图像对应的体坐标系。⋅ck⋅ck。
2024-05-08 15:32:37 768
原创 VINS预积分与误差模型
在VIO系统中,IMU的发布频率通常是高于图像的,VINS系统中,使用k来表示对应的图像帧时刻,通过积分两个图像帧之间的IMU数据,来与视觉估计的位姿进行对比,来得到更加精确的位姿。),即将两帧图像发布时间内,IMU的数据进行积分(将[k,k+1]时刻内的IMU数据进行积分,从而得到IMU两帧图像之间的位姿变化量)。真实的零偏是包含了游走偏差的,而加速度计和陀螺仪需要体现实际的物理量,要去除噪声所带来的影响。因此状态的传递,误差的传递均是指两个图像帧之间的IMU积分值的传递,以下的预积分均以。
2024-05-07 16:12:37 516
原创 Fisher矩阵与自然梯度法
Fisher矩阵和自然梯度法是机器学习中重要的概念和方法,用于优化问题的求解。Fisher矩阵可以帮助我们理解参数空间的曲率,而自然梯度法则利用Fisher矩阵的信息来更好地学习函数。通过结合这两个概念,我们可以更有效地优化模型参数,并提高学习的效率和性能。
2024-03-04 22:56:04 1276
原创 信息矩阵、hessian矩阵与协方差矩阵
由此,我们便可以具体看出hessian矩阵与协方差矩阵之间的联系,当我们需要边缘化marginalize一个变量时,可以将信息矩阵求逆转化为相关的协方差矩阵,然后剔除掉变量后,再次求逆得到新的信息矩阵。如此我们可以将问题转化为一个最小二乘问题,同时我们看出信息矩阵与协方差的数学意义。本节探讨信息矩阵、hessian矩阵与协方差矩阵的关系,阐明边缘化的原理。,提取与b无关的矩阵A,再对A求逆,即得到marg 后的信息矩阵。以Marg b为例:需要先将信息矩阵(此例中为。)求逆,得协方差矩阵。
2024-02-23 11:28:04 1491
原创 非精线搜索步长规则Armijo规则&Goldstein规则&Wolfe规则
如最速下降法,拟牛顿法这些常用的优化算法等,其中的线搜索步骤通常使用Armijo规则、Goldstein规则或Wolfe规则等。线搜索规则的选择直接影响了优化算法的性能和收敛速度,因此在应用中需要进行仔细的实验和调优。Goldstein规则是对Armijo规则的一种改进,它引入了一个额外的上界条件。Wolfe规则旨在确保步长既满足足够的下降条件,又满足足够的曲率条件,以保证收敛性和数值稳定性。Armijo规则是最简单的线搜索规则之一,它基于函数值的下降来决定步长。是Wolfe规则的参数,通常。
2024-02-03 22:18:45 2542
原创 牛顿法与拟牛顿法
文章目录牛顿法&拟牛顿法1 牛顿法2 拟牛顿法2.1 对称秩1校正2.2 DFP2.3 BFGS牛顿法&拟牛顿法设无约束优化问题:minf(x), x∈Rn\min f(x),{\kern 1pt} \,x \in {R^n}minf(x),x∈Rn1 牛顿法基本思想,通过泰勒二阶展开,通过对泰勒展开求导,并令其等于0,从而求得极小值。将f(x)f(x)f(x)在xkx_kxk处进行泰勒展开:f(x)≈f(xk)+Δf(xk)(x−xk)+12(x−xk)TΔ2f(xk)(
2024-01-30 21:39:38 1433
原创 ubuntu程序性能分析
valgrind工具:valgrind是一个用于调试和性能分析的工具集,其中包括了多个工具,如memcheck、cachegrind等。你可以使用cachegrind工具来测量程序的缓存命中率。perf命令:perf命令是一个强大的性能分析工具,可以用于测量程序的各种指标,如CPU周期、缓存命中率等。以上工具可以帮助你测量程序的计算量,并提供各种性能指标和分析结果。time命令:time命令可以用于测量程序的执行时间。这将输出程序的执行时间,包括用户时间、系统时间和实际时间。
2024-01-12 14:33:20 632
原创 pythonPIL 将tif修改为jpg
请输入您需转换的文件路径及文件名:imagepath/img.tif,同样会在在imagepath会生成img.jpg文件。会提示:"请输入要转换的tif图片路径及名称: "则在imagepath会生成img.jpg文件。
2023-11-28 21:43:48 391
原创 李群&李代数:SO3 与so3 & SE3与se3 & SIM3
文章目录1 旋转*叉乘1.1 旋转矩阵的导数1.2 物理意义1.3 实例1.4 角轴与反对称矩阵2 SO3 与so32.1 so3 2 SO32.2 SO3 2 so33 SE3 与se33.1 se3 2 SE3:3.2 SE3 2 se34 SIM3 与sim35 Adjoint Map1 旋转*叉乘1.1 旋转矩阵的导数根据旋转矩阵的性质:RRT=IRR^T=IRRT=I,对两侧进行求导可得:R˙RT=−RR˙T\dot{R} R^T=-R\dot R TR˙RT=−RR˙T从而可知,R˙R
2023-11-21 16:33:18 889
原创 margnalize&Huber&Jacibian测试Demo
当误差 r 大于阈值 δ 后,函数增长由二次形式变成了一次形式,相当 于限制了梯度的最大值。同时,Huber 核函数又是光滑的,可以很方便地求导。以经典特征点法为例:归一化坐标。Huber核函数使用说明。
2023-08-24 10:13:30 450
原创 GDB调试cmake工程
(5)指定某线程执行某gdb命令:thread apply 线程id gdb_cmd。(6)全部的线程执行某gdb命令:thread apply all gdb_cmd。(4)运行全部的线程:set scheduler-locking off。此时,可以将动态库对应的源文件及符号表导入到gdb,从而可以通过。info breakpoints(info b):查看所有的断点。(1)查看可切换调试的线程:info threads。(2)切换调试的线程:thread 线程id。n:next,下一步,不进入函数。
2023-07-04 17:01:22 1974
原创 远程访问(内网穿透)
远程:1804 ubuntu软件依赖:ssh,xrdp, cpolar本地:win10软件依赖:mstsc.exe(远程桌面)
2023-05-08 18:01:53 987 1
原创 STL的并行遍历:for_each(依赖TBB)和omp parallel
guided:循环迭代划分成块的大小与未分配迭代次数除以线程数成比例,然后随着循环迭代的分配,块大小会减小为chunk值。chunk的默认值为1。dynamic:动态调度迭代的分配是依赖于运行状态进行动态确定的,当需要分配新线程时,已有线程结束,则直接使用完成的线程,而不开辟新的线程。这个分配是静态的,线程分配规则根据for的遍历的顺序。其中,shared括号中说明所有线程公用的变量名,private括号中的变量为各个线程均独立的变量。当遍历的操作较多,这里sleep来模拟较多的工作,并行体现出优势。
2023-04-10 11:46:09 1431
原创 点云对齐/轨迹对齐方法及论文讲解
对齐两个轨迹或者对齐两组点云所要求解的自由度包含两组坐标系的3个平移,3个旋转及一个放缩尺度共7个自由度。或者计算里程计的精度问题,得到里程计估计的时间离散位姿后以及轨迹位姿真值后,如何评判里程计的精度。为x轴方向,y轴位于三个点构成的平面上,垂直于x轴,z轴符合右手定则正交与x轴与z轴。在已知两组坐标系之间的旋转变换后,求解平移及尺度因子是相对比较简单的。分别为三个点构成的坐标系的基础向量在两个原始坐标系的表示。为对应z轴的单位向量,得到新坐标系单位矩阵构成的基向量。利用3个点分别建立新的坐标系,设。
2022-08-22 17:14:11 2553
原创 Lucas-Kanade 20 Years On 正反向/累加/合成求解算法
主要翻译及概述基于图像对齐的正向累加、正向合成、反向合成及反向累积迭代算法Forward additive algorithm、Forward Compositional algorithm、Inverse additive algorithm & Inverse Compositional algorithm对应代码下载地址-https://download.csdn.net/download/weixin_41469272/862451421981年提出的图像对齐的算法Lucas-Kanade在计算
2022-07-19 21:58:16 887
原创 欧拉角转换特殊情况(万向锁等)
文章目录问题说明欧拉角到旋转矩阵旋转矩阵到欧拉角万向锁与π\piπ结合测试代码问题说明旋转的表示方式有:角轴,旋转矩阵、四元数、欧拉角。具体见旋转矩阵、欧拉角、四元数及四元数插值欧拉角表示优点:理解友好;3个变量3个自由度缺点:奇异性(万向锁);同一个旋转可由多组欧拉角来表示,即一个旋转对应多组欧拉角。这篇文章从旋转矩阵转化欧拉角来分析这些情况。主要说明同一个旋转解析出不同欧拉角的特殊情况。首先提以下旋转矩阵概念:旋转矩阵根据内外旋可以写成左右乘的形式,左右乘的旋转矩阵是互相的转置。旋转矩
2022-05-11 14:48:32 1644
原创 单目初始化及尺度不确定
单目里程计:问题:通过单目相机图像序列,计算得到图像序列对应的相机位姿(R,t)(R,t)(R,t)两个特点:1、需要足够平移才能完成初始化2、尺度不确定及尺度漂移1、单目初始化需要相机足够的平移,才能够完成初始化。使用2D-2D的方式来估计两帧相机之间的位姿时,可以通过求解**H(单应矩阵homography)或F(基础矩阵fundamental)以及BA(bundle adjustment)**等方式来解析出相机的位姿。在近纯旋转(低偏移)的情况下,F阵解算失效,通过H和BA的方式可以
2022-04-21 14:38:21 3021 1
原创 三角化特征点(triangulation)方法及实现对比
三角化特征点(triangulation)方法及实现对比问题已知两帧相机在世界坐标下的位姿[R,t][R,t][R,t], 求两帧的共视点的3维坐标。设两帧为参考帧(reference)和当前帧(current),共视点ppp在两帧下的坐标分别为xrx_rxr和xcx_cxc,对应深度为drd_rdr和dcd_cdc。图像归一化齐次坐标为prp_rpr和pcp_cpc(非像素坐标)。pr=[urvr1], pc=[ucvc1]p_r=\left[\begin{mat
2022-03-23 22:26:33 3812
原创 TUM RGBD数据集工具及使用
TUM RGBD数据集工具及使用1. 工具工具下载地址:https://vision.in.tum.de/data/datasets/rgbd-dataset/tools• add_pointclouds_to_bagfile.py 给bag中加入点云topic• associate.py 生成depth 和 rgb的匹配信息• evaluate_ate.py 绝对误差评估,常用• evaluate_rpe.py 相对误差评估• generate_pointcloud.py 生成点云数据•
2022-03-15 14:40:26 5413 5
原创 RGBD-slam和DVO-slam安装及运行
文章目录RGBD-slam1 下载2 编译3 运行DVO 编译运行:1.下载dvo-slam2.下载编译Sophus3.下载编译g2o4.修改dvo的几个package的CMakeLists.txt5. 编译dvo_slam6运行dvo_slamRGBD-slam1 下载(1)源码包下载cd <ros_ws>/srcgit clone https://github.com/felixendres/rgbdslam_v2.git(2) 修改以下文件:1)src/misc.cpp8
2022-03-14 21:30:56 2632
原创 ORB-Mono原理梳理
ORB-Mono原理梳理1. ORB主要特点: 1)ORB特征点;2)共视图;3)本质图的回环处理1)ORB特征点描述子相对SIFT轻量,节省计算时间。利用角点(Fast关键点)的尺度方向恢复角点因为相机旋转带来的方向变化,恢复角点方向,再计算描述子,才能得到更加准确的匹配关系。2)共视图用于局部BA优化,并辅助回环检测。共视图根据观测权重可以被删减为本质图(Essential graph),其包含单链的生成树(Spanning tree)。3)本质图用于回环处理时进行的全局BA优化。缩小计
2022-02-13 20:39:08 746
原创 H(单应矩阵homography),本质矩阵(Essential Matrix)和F(基础矩阵fundamental)
H(单应矩阵homography),本质矩阵(Essential Matrix)和F(基础矩阵fundamental)H矩阵适用于:1)特征点位于平面上;2)纯旋转,使用Faugeras 和 Lustman方法通过H阵解算出8种可能的(R,t)(R,t)(R,t)F使用于普通场景(非平面场景),但是从E/F中解算位姿有四种可能性,且不适用于低视差的场景。因此单应矩阵H可以更好的应用于低视差(接近纯旋转)的场景下。而当平移接近零时,E和F阵则接近零(E=t∧R, F=K−TEK−1
2022-02-13 12:41:04 8031
原创 概率&滤波器&图优化&最小二乘求解
文章目录SLAM后端优化1 预知识点1.1 高斯分布的正则形式(canonical form)及马氏距离:1.2 状态方程的协方差及信息矩阵传递1.3 信息矩阵和Hessian矩阵1.4 协方差矩阵与信息矩阵1.5 Schur补概念1.6 信息矩阵的边缘化1.7 贝叶斯后验滤波器2 概率在线/全局SLAM算法2.1 卡尔曼滤波(KF)2.2 扩展卡尔曼滤波器(EKF)2.3 UKF:TODO。2.4 Information Filter (IF)2.5 Extended Information Filte
2021-12-17 23:14:43 3662
原创 SVO原理解析
一、SVO框架: 从上图可以看出SVO的分为两个主要部分:定位和建图。这两部分以并行线程执行,保证算法的实时性。从图中也可以看出来,两个线程是有所耦合的,如定位线程的第二步(图像坐标对齐)时使用了建图中估计的特征点的深度(三维坐标点)。 SVO算法分解开后,就是几个比较传统的求解思路的组合。定位中包含三步: 1、 直接法求解粗略的相机初始位姿:这里作者不再使用大范围的图像块进行直接法的tracking,进在关键帧进行离散的特征点提取,并保证特征点在图像中分布的均匀性。将特征点按帧进行传递,使
2021-11-19 17:29:51 8656 1
原创 DVO-slam原理介绍
文章目录1、误差约束公式2、权重最小二乘迭代求解(IRLS):2.1 论文1中的迭代公式:论文1中只说明了光度误差:2.2 论文2中的迭代公式3、关键帧的选择参考论文1:Robust Odometry Estimation for RGB-D Cameras参考论文2:Dense Visual SLAM for RGB-D Cameras1、误差约束公式基于直接法的稠密建图,误差采用两部分:灰度误差和深度误差:灰度误差:灰度误差表示匹配点在图像中被观测到的光度误差,误差方程定义如下:深度误
2021-11-05 21:15:59 1703
原创 直接法FC(Forward Compositional )&IC( Inverse Compositional )&ESM求解方法介绍
直接法FC&IC*ESM求解方法介绍论文:Efficient Compositional Approaches for Real-Time Robust Direct Visual Odometry from RGB-D Data以下公式与原文出入较大,批判阅读一、介绍这篇论文讲述使用RGBD实现直接法VO的求解思路基于直接法的求解方法:提出三种求解思路:Forward Compositional (FC);Inverse Compositional (IC);Efficient
2021-10-29 23:24:36 2211 1
原创 LSD-slam算法原理
LSD-slam算法原理论文:LSD-SLAM: Large-Scale Direct Monocular SLAM一、 预先知识:1、三维刚体与相似变换1.1 三维刚体变换仅包括6个自由度,即三轴旋转和三轴偏移,变换矩阵定义如下:李代数与变换矩阵的转换关系:定义李代数:ξ∈se(3)\xi \in se\left(3\right)ξ∈se(3)G=expse(3)(ξ),ξ=logSE(3)(G){G}={exp}_{se(3)}(\xi), \xi = log_{SE(3)}(G)G=
2021-10-29 20:59:13 5369
矩阵运算 Matrix Computations 4th
2024-07-11
MT_Software_Suite_linux-x64_2019.3.2.zip
2020-07-22
ercixingzuiyou&shixianjiaozuiyou&huamo.zip
2020-06-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人