- 博客(33)
- 收藏
- 关注
原创 ros1编译工具catkin_tools用法总结
1. catkin_tools 核心概念与传统 catkin_make 的区别2. 工作空间初始化与配置完整初始化流程高级配置选项3. 多配置档案管理创建不同构建配置配置档案操作4. 构建控制与优化并行构建控制增量构建策略5. 包管理与依赖处理包操作命令依赖管理6. 测试与验证测试执行测试结果分析7. 清理与维护精确清理策略工作空间维护8. 高级构建技巧条件构建交叉编译配置构建钩子9. 开发最佳实践标准化配置脚本开发工作流脚本10. 问题排查与调试构建问题诊断性能优化11. 生产环境部署持续集成配置。
2025-10-24 10:24:01
392
原创 【大端存储与小端存储】
数据: 0x12345678 (32位整数)内存地址增长方向 →(低地址) (高地址)| 12 | 34 | 56 | 78 | ← 大端存储 (Big-endian)| 78 | 56 | 34 | 12 | ← 小端存储 (Little-endian)
2025-09-12 11:29:46
448
原创 【#pragma pack(1)——内存对齐】
计算机为了高效访问内存,通常不会按「1字节」为单位读取数据,而是按「2字节、4字节、8字节」等对齐单位读取(具体取决于 CPU 架构和编译器)。这会导致编译器在结构体字段之间自动插入「填充字节」,让字段的起始地址是对齐单位的倍数。uint8_t a;// 1字节uint16_t b;// 2字节按默认对齐(通常是 2 字节),a占用 1 字节后,编译器会插入1 字节填充,让b从地址 2 开始(是 2 的倍数)。因此结构体总大小是1 + 1(填充) + 2 = 4 字节,而非直观的。
2025-09-10 16:23:04
256
原创 小孔成像原理
单目成像是一个,这个过程是的。它丢失了深度信息Zc,这就是为什么从单张图片无法直接得到物体的真实深度(尺寸、远近)。XwYwZwXcYcZcZ_cxyuvK:相机固有属性,fxfy是焦距,u0v0是主点。R∣t:相机在世界中的位姿。PPKR∣t,是整个成像过程的数学概括。现在,我们将和结合起来,得到从到的完整映射关系。Zcuv1投影矩阵P内参矩阵K。
2025-09-06 19:39:56
1056
原创 C++ unordered_multimap用法总结
是 C++ 标准模板库中的一种无序关联容器,它允许存储相同键的多个副本,并提供高效的插入、查找和删除操作。以下是。
2024-01-08 21:30:20
915
原创 C++ unordered_multiset用法总结
是 C++ 标准模板库中的一种无序容器,它允许存储相同键的多个副本,并提供高效的插入、查找和删除操作。以下是。
2024-01-08 21:27:28
872
原创 C++ priority_queue用法总结
如果元素类型不支持操作符,或者你希望使用自定义的比较规则,可以通过提供比较函数来初始化。这样创建的是最小堆,元素按照升序排序。
2024-01-07 16:35:09
1455
原创 C++ stack用法总结
std::stack是 C++ 标准模板库(STL)中的容器适配器,它提供了栈(stack)的功能,基于其他序列容器实现。以下是std::stack。
2024-01-07 16:31:46
1249
原创 C++ unordered_map用法总结
是 C++ 标准库中的一个哈希表实现的关联容器,用于存储键-值对,提供了快速的查找、插入和删除操作。以下是。
2024-01-06 17:19:59
941
原创 IMU预计分公式
在SLAM(Simultaneous Localization and Mapping)中,IMU(Inertial Measurement Unit,惯性测量单元)常用于提供关于移动体(例如机器人或车辆)的加速度和角速度信息,这对于估计运动过程中的位姿变化非常重要。在SLAM中,IMU的数据可以与其他传感器数据(如视觉或激光雷达)一起使用,以更准确地估计系统的运动。IMU预计分(IMU预积分)是一种方法,它对IMU的测量进行积分,以估计系统的位姿和速度。
2024-01-05 16:36:02
745
原创 SVD如何分解矩阵?
奇异值分解(Singular Value Decomposition,简称SVD)是一种将矩阵分解为三个矩阵乘积的方法,其用途广泛,包括矩阵压缩、降维、最小二乘问题等。下面我将详细解释SVD分解矩阵 A的过程,并提供一个简单的例子。奇异值矩阵是一个对角矩阵,其对角线上的元素是特征值的平方根。将 U的列设置为 A的特征向量,归一化每一列。的特征向量单位化后的形式。的特征向量单位化后的形式。现在,让我们看一个简单的例子。的特征向量的单位化形式,我们可以得到。的特征向量的单位化形式,我们可以得到。
2024-01-05 09:52:09
1503
原创 vim常用命令总结
以上只是 Vim 的一小部分命令,Vim 具有非常丰富的功能和命令,笔者将在后续使用中不断完善。Vim 是一款强大的文本编辑器,具有很多功能和命令。
2024-01-04 22:42:17
768
原创 conda常用命令总结
Conda 是一个用于管理 Python 环境和软件包的开源包管理系统和环境管理系统。创建一个指定 Python 版本的新环境。将当前环境导出为 YAML 文件。在当前激活的环境中安装指定包。列出当前环境中已安装的所有包。根据 YAML 文件创建环境。查看 Conda 的帮助信息。从当前环境中移除指定包。更新指定包到最新版本。列出所有存在的环境。搜索可用于安装的包。
2024-01-04 22:16:41
767
原创 如何从单应矩阵H中分解旋转矩阵R和平移向量t?
在计算机视觉中,单应矩阵通常用于图像配准和相机标定等任务。下面是使用SVD分解单应矩阵来求解旋转矩阵(R)和平移向量(t)的简要推导过程。单应矩阵H可以分解为旋转矩阵R和平移向量t。是一个3x3的矩阵。我们取N的最后一列是因为SVD中,对角矩阵。的对角元素按从大到小的顺序排列,而我们想要取尺度因子。这就完成了通过SVD分解单应矩阵求解旋转矩阵。是一个3x3的上三角矩阵。通过SVD,我们可以将矩阵。
2024-01-04 15:12:22
2711
原创 如何从本质矩阵E中分解旋转矩阵R和平移向量t?
这四组解分别对应于相机在两个可能的姿态下。在实际应用中,我们需要选择正确的解,这通常需要使用额外的信息,例如深度一致性(将点投影到图像上并确保它们的深度信息一致)来解决。因此,详细解释如何选择正确的解需要考虑具体的问题和应用场景。在计算机视觉和相机几何中,Essential Matrix(本质矩阵)与相机运动之间存在特殊的关系。通过对Essential Matrix进行奇异值分解(SVD),可以提取出相机的旋转矩阵。接着,通过以下公式可以提取出旋转矩阵。
2024-01-04 14:39:00
2243
原创 terminator快捷键总结
Ctrl + Alt + Shift + Right/Left/Up/Down:将当前窗格移动到相邻的位置。Ctrl + Shift + Left/Right:切换到左/右侧的标签页。Ctrl + Alt + Right/Left:将焦点移动到右/左侧的窗格。Ctrl + Shift + Up/Down:切换到上/下侧的标签页。Ctrl + Alt + Up/Down:将焦点移动到上/下侧的窗格。Ctrl + Shift + W:关闭当前标签页。Ctrl + Shift + Q:关闭其他标签页。
2024-01-01 17:49:20
1142
原创 Ubuntu终端常用快捷键总结
基本导航快捷键:Ctrl + A:将光标移到行首Ctrl + E:将光标移到行尾Ctrl + U:删除光标前的所有字符Ctrl + K:删除光标后的所有字符Ctrl + L:清屏(相当于执行 clear 命令)编辑命令行:Ctrl + W:删除光标前的一个单词Ctrl + Y:粘贴之前使用 Ctrl + U 或 Ctrl + K 删除的文本Ctrl + _:撤销上一步的操作历史命令:Ctrl + R:逆向搜索历史命令Ctrl + G:退出历史命令搜索模式Ctrl + P(或上箭头
2024-01-01 17:24:07
1356
原创 Git与Github管理代码简要教程
下面是在Ubuntu上使用Git和Github管理代码的简要教程,更详细的用法自行查阅Git和GitHub的官方文档。
2023-12-30 11:19:37
477
原创 C++关键字之const用法总结
(1)声明常量变量:使用 const 声明的变量需要在声明时就赋值,且在其生命周期内不能被修改。指向常量的指针(指针不能修改所指向的值):常量指针(指针本身不能被修改,但可以修改所指向的值):指向常量的常量指针(指针本身和所指向的值都不能被修改):(3)函数参数和 const:使用 const 修饰函数参数可以确保参数在函数体内不被修改,从而提高代码的可读性和安全性。// ...(4)const 成员函数:在成员函数声明后面添加 const 关键字,表示该成员函数不会修改类的任何数据成员。
2023-10-27 11:41:25
123
原创 《自动驾驶与机器人中的SLAM技术》之三维空间点云直线拟合
高博的新作《自动驾驶与机器人中的SLAM技术》中提出了一个点云直线拟合的问题,其中的直线方程以及最小二乘目标函数的引出有点突兀(P185-186),这里记录一下理解过程。
2023-10-25 22:36:09
400
1
原创 C++ override关键字
使用override关键字可以有效防止一些常见的错误,如函数名拼写错误、参数类型错误等,增加了程序的可读性和可维护性。
2023-08-25 20:22:46
562
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅