- 博客(254)
- 收藏
- 关注
原创 ROS catkin_make 报错error: ‘plus’ is not a member of ‘pcl::traits’ 574 | POINT_CLOUD_REGISTER_POINT
【代码】ROS catkin_make 报错error: ‘plus’ is not a member of ‘pcl::traits’ 574 | POINT_CLOUD_REGISTER_POINT。
2025-04-29 16:27:23
56
原创 ROS catkin_make出错Unable to find either executable ‘empy‘ or Python module ‘em‘... try
【代码】ROS catkin_make出错Unable to find either executable 'empy' or Python module 'em'... try。
2025-04-29 15:14:37
191
原创 双目立体视觉理论深度最大值计算
现有一个双目相机,焦距2.3mm,像元尺寸3.0um,基线距离50.0mm,现在想要得到双目深度理论最大值,该如何计算?根据双目测深的原理,深度最大值出现在视差最小时。( B = 50.0mm)(基线距离)( d = 1pixel)(最小视差)( s = 3.0um)(像元尺寸)( f = 2.3mm)(焦距)双目相机的理论最大深度为。
2025-04-16 08:58:32
269
原创 系统监控的命令行工具-htop中列信息解释
S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。%MEM:该进程占用的物理内存和总内存的百分比。TIME+:该进程启动后占用的总的CPU时间。COMMAND:进程启动的启动命令名称。%CPU:该进程占用的CPU使用率。PID:进程标志号,是非零正整数。VIRT:进程占用的虚拟内存值。USER:进程所有者的用户名。RES:进程占用的物理内存值。SHR:进程使用的共享内存值。NI:进程的优先级别数值。PR:进程的优先级别。
2025-04-02 16:33:25
192
原创 FAST-LIVO2 Fast, Direct LiDAR-Inertial-Visual Odometry论文阅读
本文提出了FAST-LIVO2:一种快速、直接的LiDAR-惯性-视觉里程计框架,旨在实现精确且鲁棒的同步定位与建图(SLAM)任务,并在实时、机载机器人应用中展现出巨大潜力。FAST-LIVO2通过误差状态迭代卡尔曼滤波器(ESIKF)高效地融合了IMU、LiDAR和图像测量。为了解决LiDAR和图像测量之间的维度不匹配问题,我们在卡尔曼滤波器中使用了顺序更新策略。
2025-03-27 13:45:30
866
1
原创 科普类——双目立体视觉与 RGBD 相机的简单对比
双目立体视觉与 RGBD 相机生成的深度图在原理、性能和应用场景上有显著差异。其中,( Z ) 为深度,( f ) 为焦距,( B ) 为基线距离(两摄像头间距),( d ) 为视差。通过两个摄像头模拟人眼视差,计算匹配像素点的水平位移(视差),利用三角测量原理推导深度。
2025-03-18 09:30:36
582
原创 ORB-SLAM3 中的图像数据与IMU数据融合策略
主要在后端优化阶段引入IMU约束,而非在底层与视觉特征联合优化。这种设计在保证实时性和模块化的同时,牺牲了部分动态环境下的精度和鲁棒性。ORB-SLAM3 中的相机图像数据与IMU数据采用的是**松耦合(Loose Coupling)**的方式进行融合定位。ORB-SLAM3 虽然支持IMU,但其核心设计仍以视觉SLAM为主,IMU作为辅助传感器。在局部BA或全局BA中,将IMU预积分误差作为约束项,优化相机位姿和IMU参数(如零偏)。检测到回环时,IMU数据参与全局位姿图优化,减少累积误差。
2025-03-17 13:51:59
801
原创 slam 松耦合与紧耦合
是两种多传感器数据融合的核心策略,尤其在结合视觉、IMU、激光雷达等传感器时至关重要。在SLAM(同步定位与地图构建)系统中,
2025-03-17 13:41:23
631
原创 c++ 位域(bit-fields)和 volatile 关键字
/ 结构体中的位域// 占用 1 位// 占用 3 位// 未命名位域,填充 4 位// 占用 8 位// 二进制值:1// 二进制值:101// 二进制值:01111111// 输出:4 bytes(假设 unsigned int 为 4 字节)// 错误:无法取位域成员的地址return 0;
2025-03-13 10:52:06
1004
原创 c++ 嵌套名字空间和匿名名字空间
嵌套名字空间用于代码的模块化组织,支持逻辑分层(如),C++17 简化语法提升可读性。匿名名字空间实现翻译单元内部的私有逻辑,避免全局命名污染,比static更符合 C++ 规范。合理使用嵌套名字空间和匿名名字空间,可以显著提升代码的可维护性和封装性。
2025-03-13 10:17:19
451
原创 c++ 嵌套类(Nested Class)、局部类(Local Class)
嵌套类:用于逻辑紧密关联的类设计,隐藏实现细节。局部类:用于函数内部的一次性封装,简化局部逻辑。合理使用这两种特性可以提升代码的封装性和可维护性,但需避免滥用导致结构混乱。
2025-03-13 10:12:28
364
原创 c++ union使用笔记
C++联合(union)是一种特殊的数据结构,允许在相同内存位置存储不同的数据类型,其核心价值在于。(所有成员共享同一块内存)。:通过枚举标记联合当前存储的数据类型,避免错误访问。对于需要更安全的类型存储,推荐使用。
2025-03-13 09:08:18
355
原创 c++ enum使用笔记
前向声明需指定底层类型(C++11起):// 头文件中声明// 源文件中定义无作用域枚举:简单但易命名冲突,隐式转整型。有作用域枚举(推荐):类型安全,避免污染作用域,需显式转换。底层类型:控制枚举项的存储大小,支持前向声明。初始化:灵活指定值,适用于位掩码或特定编码场景。
2025-03-12 22:22:27
1003
原创 c++20 Concepts的简写形式与requires 从句形式
在 C++20 Concepts 中,使用简写形式的与使用完整形式的是等价的。
2025-03-11 22:27:39
371
原创 c++ constraints与concepts使用笔记
(1) 单参数 Concept// OK// 错误:int没有size()方法(2) 多参数 Concept// 使用两参数Concept// OK,char + int 返回int。
2025-03-11 21:56:51
288
原创 c++ 类模板与类成员函数模板(深入)
模板代码的调试复杂度较高,建议配合C++20的Concept特性进行类型约束。类模板允许开发者编写与类型无关的通用类结构,通过模板参数实现泛型编程。在非模板类中定义函数模板,允许成员函数支持多类型参数。:当类模板被具体使用时(如创建对象、调用成员函数)。在类模板中定义成员函数模板,实现更灵活的泛型操作。:编译器根据代码使用自动生成具体类。:手动指定模板参数生成具体类。为特定类型提供完全不同的实现。为特定类型模式提供优化实现。
2025-03-11 16:47:40
292
原创 c++ 类模板与类成员函数模板(简单)
类模板:用于定义通用的类,支持多种类型。显式实例化:明确指定类模板的实例化类型。隐式实例化:编译器根据使用场景自动实例化。类成员函数模板:类中的成员函数可以是模板函数。类模板特化:为特定类型提供特殊的实现。通过合理使用类模板及其特性,可以编写出高效且灵活的代码。
2025-03-11 15:49:50
327
原创 c++ 模板函数
显式实例化定义是指在代码中明确指定模板函数针对某种类型的实例化。int(int);// 显式实例化定义// 显式实例化定义(省略模板参数)模板的显式实例化定义和特化必须遵守一处定义原则(ODR),即在整个程序中只能有一个定义。显式实例化声明可以出现在多个编译单元中,但定义只能出现一次。显式实例化:用于控制模板函数的实例化,避免重复实例化。特化:为模板函数针对特定类型提供特殊实现。特化与重载:特化是模板的一部分,重载是独立的函数。模板形参推导:编译器根据实参推导模板参数。
2025-03-11 11:44:58
417
原创 c++ 空基类优化与[[no_unique_address]]属性
/ 空分配器类(无状态)public:// 容器类:通过组合使用空分配器,并优化其存储private:T* data;// 可能不占空间// 输出:16(仅指针和size)return 0;优先使用EBO:当需要继承空类(如策略类、标签类)时,利用编译器强制优化。优先使用:当需要组合空类对象时,提供更灵活的内存优化手段。避免滥用:确保代码可读性,仅在性能敏感场景使用这些优化。
2025-03-11 09:39:54
337
原创 c++ 多重继承与虚继承
特性多重继承虚继承用途组合多个类的功能解决菱形继承问题,避免数据冗余和二义性语法基类构造顺序按继承顺序依次构造虚基类由最底层派生类直接构造内存开销可能较高(多个基类实例)通过指针共享基类,略微增加开销最佳实践仅在需要组合多个独立功能时使用多重继承。遇到菱形继承问题时,必须使用虚继承。优先使用组合(对象成员)代替多重继承,降低复杂性。
2025-03-11 09:32:39
504
原创 c++ 虚函数使用笔记
虚函数是 C++ 多态的核心机制,通过动态绑定实现灵活的运行时行为。的核心机制,允许通过基类指针或引用调用派生类的函数。:通过基类指针或引用调用虚函数时,实际执行的是。标记,强制派生类实现。可以声明为虚函数,构造函数不能是虚函数。
2025-03-10 13:56:45
617
原创 c++ dynamic_cast使用笔记
主要用于处理多态类型(即包含虚函数的类)。:基类必须至少有一个虚函数(如虚析构函数)。是处理多态类型安全的利器,但需谨慎使用。往往意味着设计需要重构。:始终检查指针是否为。
2025-03-10 11:41:36
485
原创 c++ 操作符重载详解与示例
操作符重载允许为自定义类型赋予与内置类型相似的操作行为,但需遵循特定规则。以下从基本规则、实现方式、具体运算符示例及注意事项展开讲解。
2025-03-07 15:39:43
732
原创 c++ 类成员指针及其与`std::bind`交互使用的简单说明
可以将成员指针与对象实例绑定,生成一个可调用对象。),需确保对象在调用时仍然有效。它们需要通过类的实例来访问具体成员。表示第二个参数,依此类推。关于C++类成员指针及其与。
2025-03-07 11:19:05
596
原创 c++ 类特殊成员函数的编译器隐式声明规则
移动语义的隐式生成若用户声明了拷贝操作(拷贝构造/拷贝赋值)、析构函数或移动操作中的任意一个,编译器不会自动生成移动操作。若未声明上述函数,且类支持移动语义(如无不可移动的成员),编译器会生成默认移动操作。拷贝语义的隐式生成若用户声明了移动操作,编译器不会自动生成拷贝操作(需手动定义)。析构函数的特殊影响若用户声明析构函数,编译器不会生成移动操作,但保留默认拷贝操作。
2025-03-06 15:32:33
395
原创 c++ 拷贝赋值(Copy Assignment)、移动赋值(Move Assignment)
特性拷贝赋值移动赋值参数类型const T&(左值引用)T&&(右值引用)资源操作深拷贝资源转移(避免拷贝)自赋值处理必须检查建议检查性能较低(需拷贝数据)高(直接转移指针)适用场景常规赋值操作临时对象或显式转移资源(std::move。
2025-03-06 14:25:06
345
原创 c++ 拷贝构造函数、移动构造函数
拷贝构造函数用于创建一个新对象,并将其初始化为另一个对象的副本。参数是一个常量引用(),表示源对象。通常用于深拷贝,即复制源对象的所有资源。移动构造函数用于将资源从一个对象“移动”到另一个对象,而不是复制资源。参数是一个右值引用(),表示源对象。通常用于优化性能,避免不必要的深拷贝。拷贝构造函数当需要创建对象的独立副本时。当对象通过值传递或返回时。移动构造函数当对象是临时对象(如函数返回值)时。当显式使用std::move移动对象时。当需要优化性能,避免不必要的深拷贝时。
2025-03-06 11:19:42
746
原创 c++ 友元(friend)
友元函数:允许一个普通函数或另一个类的成员函数访问类的私有和保护成员。友元类:允许一个类访问另一个类的私有和保护成员。使用场景:当两个类或函数需要紧密协作时,可以使用友元机制。注意事项:友元机制破坏了封装性,应谨慎使用。
2025-03-06 10:02:25
711
原创 c++ 类的静态成员函数
public:// 声明静态成员函数// 定义静态成员函数(不需要 static 关键字)// 函数实现静态成员函数是与类本身关联的函数,不依赖于类的实例。它们可以直接通过类名调用,主要用于操作静态成员变量或提供与类相关的工具函数。合理使用静态成员函数可以提高代码的模块化和可读性。
2025-03-06 09:41:12
394
Joint Camera Intrinsic and LiDAR-Camera Extrinsic Calibration.pdf
2025-02-24
Motion-and-Structure-from-Motion-in-a-Piecewise-Pl.pdf
2024-02-27
Quaternion kinematics for the error-state Kalman filter
2023-09-11
三星固态硬盘管理 Samsung-SSD-Integrated-Software-Installer.zip
2023-04-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人