- 博客(59)
- 收藏
- 关注

原创 MSCKF2讲:JPL四元数与Hamilton四元数
MSCKF2讲:JPL四元数与Hamilton四元数文章目录MSCKF2讲:JPL四元数与Hamilton四元数2 JPL四元数2.1 定义与区别2.2 JPL四元数的乘法2.3 反对称矩阵2.4 Ω(ω)\Omega(\omega)Ω(ω)矩阵2.5 JPL四元数与旋转矩阵的转换2.6 JPL四元数导数2.7 JPL四元数积分2.7.1 0阶积分2.7.2 1阶积分3 JPL与Hamilton的区别3.1 转换方向3.2 四元数与旋转向量的转换3.3 四元数与旋转矩阵的转换3.4 四元数的乘法3.5 四
2024-03-01 15:19:50
1264

原创 SLAM十四讲之第八讲:光流法、直接法
视觉里程计2文章目录视觉里程计21 光流法1.1 2D光流1.2 LK光流程序1.2.1 单层光流1.2.2 多层光流1.2.3 opencv函数1.2.4 双线性插值1.2.5 C++内置类2 直接法2.1 直接法原理推导2.2 直接法程序解析2.2.1 计算雅可比2.2.2 单层直接法2.2.3 多层直接法2.2.4 讨论3 程序编译问题1 光流法 光流跟踪能够直接得到特征点的对应关系。这个对应关系就像是描述子的匹配,只是光流对图像的连续性和光照稳定性要求更高一些。 光流法可以加速基于特
2023-07-12 11:14:13
1389
6

原创 Failed to contact master at [localhost:11311]. Retrying...
[ERROR] [1685197203.713679712]: [registerPublisher] Failed to contact master at [localhost:11311]. Retrying...RLException: [irataus.launch] is neither a launch file in package [ratslam_ros] nor is [ratslam_ros] a launch file name The traceback for the
2023-05-27 22:25:30
10256
原创 imu+wheel融合
误差主要来源于平移积分过程中认为角度恒定。直线运动时不受影响,以及 Δt 很小时误差影响也较小。代码实现:下面旋转矩阵展开就是上面的形式。手推即可验证,有时间补充。 平移积分过程中认为角度为运动前后的均值,误差比欧拉积分小一点。积分、群空间闭式积分。在我们代码中,分别实现了前面两种递归公式!作为观测值,而且观测方程刚好是线性的! 常见的轮速计积分的方式有三种:欧拉积分、二阶。对于imu和wheel的处理(有时间再补代码)① 简单处理:找到wheel最近的imu数据。② 线性插值处理,更精确!
2024-09-08 22:18:35
1412
原创 MSCKF7讲:特征管理与优化
MSCKF7讲:特征管理与优化文章目录MSCKF7讲:特征管理与优化1 Feature.h2 OptimizationConfig3 initializePosition三角化+LM优化3.1 计算归一化坐标深度初值generateInitialGuess① 理论推导② 代码分析3.2 计算归一化误差cost① 理论推导② 代码分析3.3 计算雅可比jacobian()① 理论推导② 代码分析3.4 计算视差checkMotion—能否三角化① 理论分析② 代码分析3.5 初始化Position4 特征管
2024-09-08 22:15:10
1163
原创 EVO进行轨迹评估
“对齐”(Alignment)通常指的是将两组数据(观测轨迹和真值)进行匹配的过程。这样做的目的是为了量化它们之间的差异,或者调整它们以使它们在空间或时间上更加一致。时间对齐如果轨迹数据在时间上不同步,时间对齐可能涉及重新采样或插值,以确保两个轨迹在相同的时间点上有对应的数据。空间对齐**空间对齐可能涉及平移、旋转或缩放(尺度)**操作,以使两个轨迹在空间位置上更加吻合。特征对齐。
2024-09-08 20:34:41
3051
原创 Docker学习
wget http://fishros.com/install -O fishros && . fishros # 一件安装。
2024-08-03 19:01:27
1076
1
原创 Windows上可视化ubuntu程序图形界面
① 测试X11转发是否工作,如果显示了时钟窗口,则说明X11转发配置正确,可以继续运行。③ 执行一个程序验证,下图所示,已经构建一个连接,程序可视化也能在Windows显示。)来模拟一个显示环境(实际上我们是看不到真实画面的,但是程序可以运行了)。为了在本地机器上显示虚拟机程序的图形界面,可以使用X11转发。如果不是利用vscode,可以直接下面命令进行配置,效果是等价的。1 点击左下角SSH进行远程连接,选择添加新的SSH主机。3 配置完成,选择主机,输入密码即可!到此,配置好之后,即可验证。
2024-07-21 21:45:01
3576
3
原创 ORB-SLAM3中的IMU预积分
IMU预积分之前也博客也提到几次了,这次把ORB-SLAM3中相应的流程记录下,与推导公式一一对应,顺带复习。
2024-04-13 11:09:29
979
原创 SLAM问题:特征匹配如何避免误/漏匹配
具体的过程,是在被选中的重要点为中心,周围画一个圈,这个圈内不允许有别的特征点的存在,避免特征点过于集中。通常直方图中前三个最大的格子里就是正常的匹配点对,那些误匹配的特征点对此时就会暴露出来,落在直方图之外的其他格子里,这些就是需要剔除的错误匹配。而成功的闭环需要在闭环候选帧和当前帧之间尽可能多地建立更多的匹配关系,这时可以利用初步估计的Sim(3)位姿进行相互投影匹配,忽略已经匹配的特征点,只在尚未匹配的特征点中挖掘新的匹配关系。当然,新的特征点的追踪次数也设置为1,因为都是刚刚追踪到的。
2024-03-29 15:54:02
1353
原创 视觉轮速滤波融合1讲:理论推导
边缘化,就是说如何删除滑窗里的状态,这里使用最简单的策略,把最老的一帧去掉,删掉协方差矩阵中对应块,去掉的这帧里的所有特征点都被拿来做更新。,等同IMU测量的角速度。左右轮速的速度我们是可以计算得到的,但是半径R一开始肯定未知,所以利用下面公式计算,其中。这里先引出论文中的公式,貌似顺序写反了,δp在前,δθ在后,更多详细推导可以参考论文。2 状态增广:当新的frame到来,利用里程计位姿,通过外参预测相机位姿,更新。来讲,前面定义世界系与初始轮速坐标系重合,轮速只有绕z轴的旋转,所以坐标系。
2024-03-26 22:42:03
1076
原创 CMake笔记
写在最外层CMakeLists.txt## set(CMAKE_MODULE_PATH "../cmake") 这里可以写绝对路径,然后可以分子项目,具体见test4target_link_libraries(test ${HELLO_LIBRARY}) # 链接库文件 .cpp libhello.so也可如果分为子项目,即最外层只写和上面的cmakelists相同,只需要改一句。
2024-03-08 22:20:28
1083
原创 相机标定实验
可以使用下面命令自定义一个Aprilgrid标定板(前提安装好kalibr,因为执行ROS命令没有加# 这样子实际大小在一张A4左右参考。
2024-03-07 22:48:49
1566
4
原创 Ubuntu18/20运行ORB-SLAM3
这是因为当相机提供的是矫正过的立体图像时,意味着相机制造商或数据集已经对相机之间的畸变进行了矫正。在这种情况下,畸变已经被移除,相机图像上的点的位置更加准确。 随机打开头文件查看,对于sophus库的引用,一个指明了ORB-SLAM3第三方库下的文件,一个没有指明,估计是这里引发的问题。改了之后会出现其它问题,因为原来程序中会引用到这里的文件,所以还需要改各种头文件,很是麻烦。 估计报错提到的文件都有这个问题,修改完之后重新编译下c++版本,再编译ROS版本的。 假设它们遵循布朗运动。
2024-03-05 21:59:11
1973
2
原创 MSCKF5讲:后端代码分析
:提供了 Nodelet 类的定义,是用于实现节点的基类。Nodelet 是一种轻量级的ROS节点,它可以在同一个进程中共享节点管理和ROS通信,以提高系统的效率。Nodelet 允许将不同的ROS节点合并到一个进程中,从而减少通信开销。:提供了一组宏,用于导出和加载ROS插件,包括节点类(nodelets)。 是该库中的一个重要宏,用于将一个类导出为ROS插件,以便它可以在运行时被动态加载。通过这些宏,ROS能够在运行时根据类名查找和加载相应的插件。 在这里, 用于获取一
2024-03-04 22:28:02
555
2
原创 MSCKF3讲:后端理论推导(上)
MSCKF3讲:后端理论推导(上)文章目录MSCKF3讲:后端理论推导(上)1 MSCKF中的状态变量① `IMU`状态:② `cam0`状态:③ `IMU`和`cam0`间状态关系2 微分方程递推(数值解)3 IMU状态预测3.1 连续时间下**IMU状态**运动学方程(微分方程)① 状态(理想值)② 状态(测量值)3.2 离散时间下**IMU状态**运动学方程(差分方程)3.2.1 预测姿态GIqT_G^Iq^TGIqT3.2.2 预测速度GvIT^Gv_I^TGvIT和位置GpIT^Gp_I^T
2024-03-02 21:34:06
999
2
原创 MSCKF1讲:卡尔曼滤波
说白了,ESKF就是预测的时候对状态和误差状态都预测了,但实际上只用了状态的预测值,对于误差状态,主要是利用了协方差。5 实际上,MSCKF中为保证状态协方差矩阵正定,采用如下形式(看了代码并不是,实际上还是按照常规的,之不过加了自生转置后除以2了,保证了对称正定)的状态依据IMU递推到了k时刻,对应状态的协方差一定是变大的,因为IMU是有误差的,引入了新的误差,协方差自然变大。引入其它传感器的观测,求取对误差状态的雅可比,计算卡尔曼增益,更新状态、协方差。上面提到,协方差描述了状态的稳定性。
2024-02-29 17:28:14
1357
1
原创 VIO第5讲:后端优化实践
在上面解决位姿优化问题中并没有真正使用marg,而是在最后给了一个具体的信息矩阵H,把对齐操作的结果展示了出来。1 确定维度-----优化变量的维度n = 6p+3l,残差维度m,则单个残差雅可比J(1*n),推断出单个。是海塞矩阵中每个优化姿态的实际索引,因为每一个姿态占6维,所以要每次更新其在H中的左上角索引!是优化变量要优化的维度,比如位姿,如果用四元数表示,输入参数维度是7,但实际优化维度是6!到次为止,H有了,残差有了,LM参数有了,那么我们就能够直接求解这个方程。可求解,但是求得的结。
2024-02-25 22:20:38
1083
原创 VIO第4讲:基于滑动窗口法的vio系统可观性与一致性
VIO第4讲基于滑动窗口算法的 VIO 系统:可观性和一致性文章目录VIO第4讲基于滑动窗口算法的 VIO 系统:可观性和一致性1 从高斯分布到信息矩阵1.1 SLAM和高斯分布1.2 协方差矩阵与信息矩阵2 舒尔补应用:边际概率、条件概率2.1 舒尔补2.2 舒尔补的应用2.2.1 结论12.2.2 结论22.2.3 总结3 滑动窗口算法与边缘化 Marginalization3.1 最小二乘的图表示3.2 最小二乘问题信息矩阵的构成3.3 信息矩阵的稀疏性3.4 信息矩阵组装过程的可视化3.5 基于边
2024-02-24 16:54:41
1194
原创 VIO第3讲:基于优化的IMU与视觉信息融合之预积分残差雅可比推导
VIO第3讲:基于优化的IMU与视觉信息融合之预积分残差雅可比推导文章目录VIO第3讲:基于优化的IMU与视觉信息融合之预积分残差雅可比推导4 IMU 预积分残差的雅克比4.1 预积分残差4.2 残差对两个关键帧i、j状态量的雅可比① 速度误差rvr_{v}rv对`i`时刻状态量雅可比<1> 位移p<2> 旋转q<3> 速度v<4> 加速度偏置<5> 角速度偏置② 角度误差rqr_{q}rq对`i`时刻状态量雅可比<1> 位移p&
2024-02-23 10:00:47
1035
3
原创 VIO第3讲:基于优化的IMU与视觉信息融合之视觉残差雅可比推导
VIO第3讲:基于优化的IMU与视觉信息融合之视觉残差函数构建文章目录VIO第3讲:基于优化的IMU与视觉信息融合之视觉残差函数构建3 视觉重投影残差的 Jacobian3.1 视觉重投影残差① 估计值(预测值)<1> 推导<2> 引出因子图-优化变量<3> 简化形式② 观测值3.2 重投影残差雅可比J① 残差对归一化坐标点fcj{\mathbf{f}_{c_j}}fcj导数② 归一化坐标点fcj{\mathbf{f}_{c_j}}fcj对扰动量求导<1&
2024-02-22 11:03:08
448
原创 VIO第3讲:基于优化的IMU与视觉信息融合之IMU预积分
VIO第3讲:基于优化的IMU与视觉信息融合之IMU预积分文章目录VIO第3讲:基于优化的IMU与视觉信息融合之IMU预积分1 IMU预积分1.1 IMU常规积分—连续时间—不适用1.2 预积分形式① 定义② 如何推导出预积分定义③ 用预积分表达IMU积分公式④ 预积分误差(残差)⑤ 预积分的离散形式1.3 为什么采用预积分1.4 预积分量的误差递推(噪声模型)① 基于一阶泰勒展开的误差递推方程② 基于误差随时间变化的递推方程③ 预积分误差传递的形式1.4 零偏更新1 IMU预积分1.1 IMU常规
2024-02-21 16:10:57
1058
原创 VIO第2讲:IMU随机误差标定实验
生成模拟的IMU数据,然后使用imu_utils和kalibr_allan软件波进行IMU的标定,对两种方法进行对比
2024-02-20 21:15:57
1398
原创 在Vscode中使用gdb调试程序
详情参考官方文档1 创建launch.json文件 调试多个程序和调试一个程序是一样的道理,只需要后面把两个文件2 创建tasks.json文件tasks.json\textcolor {red} {tasks.json}tasks.json 这个文件是通用的,直接复制粘贴即可。这个文件主要为了编译代码,所以如果不对代码修改,其实也可以不加这个文件。
2023-12-26 20:58:03
1899
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人