C++笔记-针对从0到1学习VIO中代码中的遗忘知识点

CVPR 2024机器人三大落地突破:具身视觉、LLM编译、跨模态记忆 具身智能正从算法演示迈向工业级部署,其核心在于让AI真正理解‘自身动作—感知变化—环境响应’的闭环关系。具身视觉理解模型(如EgoVLM)通过联合建模自我运动与视觉特征,解决传统CV在抖动、遮挡、光照突变下的失效问题;LLM-to-Control编译链路将大语言模型降维为安全可验证的动作汇编器,弥合自然语言指令与实时微控制之间的语义鸿沟;跨模态记忆锚定机制则利用李群约束构建空间一致的物体表征,显著提升长时序任务中的目标追踪鲁棒性。这三类技术共同构成当前服务机器人、工业分拣与医疗物流系统升级的关键底座。 阅读详情

C+±项目笔记-针对从0到1学习VIO中代码中的遗忘知识点

代码举例

父类

class Edge {
public:
    EIGEN_MAKE_ALIGNED_OPERATOR_NEW;

    /**
     * 构造函数,会自动化配雅可比的空间
     * @param residual_dimension 残差维度
     * @param num_verticies 顶点数量
     * @param verticies_types 顶点类型名称,可以不给,不给的话check中不会检查
     */
    //explicit关键字的作用就是防止类构造函数的隐式自动转换 
    explicit Edge(int residual_dimension, int num_verticies,
                  const std::vector<std::string> &verticies_types = std::vector<std::string>());

    virtual ~Edge();//基类的析构函数是虚函数
    
	virtual void ComputeResidual() = 0;
    ,,,
   }

子类

class CurveFittingEdge: public Edge
{
public:
    EIGEN_MAKE_ALIGNED_OPERATOR_NEW
    CurveFittingEdge( double x, double y ): Edge(1,1, std::vector<std::string>{"abc"})//子类显示调用父类的构造函数
    {
        x_ = x;
        y_ = y;
    }
    // 计算曲线模型误差
    virtual void ComputeResidual() override //virtual override 同时修饰函数讲解 https://blog.youkuaiyun.com/quietbxj/article/details/112979555
    {
        Vec3 abc = verticies_[0]->Parameters();  // 估计的参数
        residual_(0) = std::exp( abc(0)*x_*x_ + abc(1)*x_ + abc(2) ) - y_;  // 构建残差
    }
    ,,,
}

1. 继承

以下代码表示公共继承,基类public中成员函数与成员变量均可以被子类继承

class CurveFittingEdge: public Edge 

以下代码表示子类显示调用父类的构造函数,即子类初始化前应该完成父类的初始化

    CurveFittingEdge( double x, double y ): Edge(1,1, std::vector<std::string>{"abc"})//子类显示调用父类的构造函数
    {
        x_ = x;
        y_ = y;
    }

2.explicit关键字

explicit关键字详细解释

以下代码中explicit关键字的作用就是防止类构造函数的隐式自动转换,但是在下面无意义,因为参数不是单独参数,而且多参数也没有默认值

    explicit Edge(int residual_dimension, int num_verticies,
                  const std::vector<std::string> &verticies_types = std::vector<std::string>());

2.virtual、override关键字同时修饰函数

详细解释

父类中用virtual修饰,不实现,纯虚函数,子类实现同名函数的时候重写函数,用基类指针或子类指针调用时,调用到的都是子类的函数。
父类

	virtual void ComputeResidual() = 0;

在派生类的成员函数中使用override时,如果基类中无此函数,或基类中的函数并不是虚函数,编译器会给出相关错误信息,子类中的virtual可加或者不加
子类

 virtual void ComputeResidual() override
    {
        Vec3 abc = verticies_[0]->Parameters();  // 估计的参数
        residual_(0) = std::exp( abc(0)*x_*x_ + abc(1)*x_ + abc(2) ) - y_;  // 构建残差
    }
视觉AI技术趋势解析:从模型小型化到工业应用实战 计算机视觉作为人工智能的核心分支,其核心原理是通过算法让机器“看懂”图像与视频内容。随着深度学习技术的成熟,视觉AI正从追求精度的模型竞赛,转向追求实用性的工程化落地。这一转变催生了模型小型化与边缘部署的刚需,使得视觉算法能够在资源受限的嵌入式设备上实时运行,从而释放出巨大的技术价值。在工业制造、机器人、无人机等应用场景中,视觉系统正从单一的“检测”功能,演进为复杂的“感知与引导”系统,实现与机器人控制、多模态理解的深度融合。例如,模型压缩与量化技术使得轻量级网络能在工控机上高效执行定位任务,而视觉-语言模 阅读详情

相关推荐

cmake中编译生成动态库文件.so,静态库文件.a到指定文件夹及安装

CMAKE关于生成库文件的简单用法 1.本文主要针对某个具体实例给出,首先建立一个文件夹test,现在有以下几个文件: test/useHello.cpp #include "libHelloSLAM.h" int main(int argc,char** argv) { printHello(); return 0; } test/include/libHelloSLAM.h #ifndef LIBHELLOSLAM_H_ #define LIBHELLOSLAM_H_ void prin

cmdxly的博客 7673

ORBSLAM3跑KITTI VIO精度上不去?可能是你的IMU噪声参数和轨迹对齐没做对

本文深入解析ORBSLAM3在KITTI VIO任务中精度提升的关键技术,重点解决IMU噪声参数配置和轨迹对齐问题。通过科学设置OXTS R3003 IMU模块参数、正确处理外参矩阵转换链、补偿轨迹初始化延迟以及精确时间对齐,显著降低绝对位姿误差(APE),提升SLAM系统在车载环境下的稳定性与精度。

weixin_28222493的博客 361

避坑指南:Livox Mid-360双雷达SLAM配置中,那些官方文档没说的细节(IP设置、话题分离与时间同步)

本文详细解析了Livox Mid-360双雷达SLAM配置中的关键优化点,包括IP设置、话题分离与时间同步等官方文档未提及的细节。通过实战案例和代码示例,帮助开发者解决点云错位、IMU数据混乱等问题,提升SLAM系统的稳定性和精度。特别针对网络架构设计、驱动修改和时间同步机制提供了专业指导。

weixin_29745609的博客 426

C++ 整洁代码教程(四)

原文:Clean C++ 协议:CC BY-NC-SA 4.0 八、测试驱动开发 水星计划在很短的时间内(半天)反复运行。开发团队对所有变更进行了技术审查,有趣的是,应用了测试优先开发的极限编程实践,在每个微增量之前规划和编写测试。——Craig Larman 和 Victor R. Basili,《迭代和增量开发:简史》。IEEE,2003 年 在“单元测试”一节中(见第二章),我们已经了解到一套好的小型快速测试可以确保我们的代码正确运行。目前为止,一切顺利。但是测试驱动开发(TDD)有什么特别之处,

龙哥盟 1321

CGAL-5.6的安装与编译(Win10+vs2022+CGAL-5.6+Boost1.82.0)

CGAL是Computational Geometry Algorithms Library(计算几何算法库)的缩写,C++的高效算法库。CGAL只是一个头文件库(从5.0版本开始),这意味着CGAL无需编译,只需安装好CGAL的依赖项即可。CGAL5.6。

baidu_34931359的博客 3902

DSP配置I2C通讯(非IO口软件模拟时序)

dsp即数字信号处理器,是一种广泛应用的嵌入式处理器,主要应用是实时快速地实现各种数字信号处理算法,目前,国际主要的dsp供应商是ti公司,其tms32系列产品占据了dsp市场近一半的份额,本文以TMS320F28377D为例,使用ti公司dsp开发工具ccs10.1配置i2c模块。 写这篇文章的缘由,因为市面上很多DSP其实内部是具有硬件I2C接口的,但由于网络上大部分资料和例程都是利用IO口模拟I2C时序进而实现I2C通讯的。给很多想学习硬件I2C通讯的小伙伴带来了困难。 下面先介绍一下配置步骤 1.E

weixin_44387442的博客 5546

HoloAgent-0:基于3D空间记忆的统一具身智能体框架解析与实践

在机器人学和人工智能领域,智能体对环境的感知与理解是其实现自主决策和交互的基础。传统方法多依赖于2D地图或隐式记忆,难以处理复杂的三维空间关系与长期任务规划。其核心原理在于构建一个显式、结构化且可查询的3D空间记忆系统,将几何信息与语义理解深度融合。这项技术的价值在于显著提升了智能体在动态环境中的状态保持、历史上下文利用以及可解释性,为高级别自主性提供了关键支撑。典型的应用场景包括家庭服务机器人、仓储物流自动化以及虚拟环境中的智能NPC开发,这些场景均要求机器人能理解“在...之上”、“在...内部”等三维

weixin_30423977的博客 325

实战指南(一)SCAPS-1D太阳能电池模拟软件从零到一:模型构建与参数解析

本文详细介绍了SCAPS-1D太阳能电池模拟软件的使用方法,从模型构建到参数解析,帮助用户快速掌握这一免费且功能强大的工具。特别适合用于单结/多结电池的电学性能分析,涵盖钙钛矿电池等常见结构的模拟实践,并提供参数调试和收敛性问题处理的实用技巧。

weixin_30588675的博客 445

PEPA项目解析:如何为机器人注入“人格”实现持久自主生存

在人工智能与机器人技术领域,构建能够长期自主运行的智能体是核心挑战之一。其原理在于融合认知架构、强化学习和环境感知,使机器具备自主决策与持续学习能力。这项技术的价值在于推动机器人从单一任务执行向具备内在驱动力的“类生命体”演进,为服务、勘探、救援等复杂场景提供更智能、更灵活的解决方案。其中,具身智能强调智能体通过身体与环境的交互来学习和适应,而强化学习则是让机器通过试错来优化行为策略的关键方法。本文以PEPA项目为例,探讨如何通过量化“人格”参数作为行为驱动力,结合分层目标管理与Sim2Real等技术,构建

ciya3282的博客 454

图解电动汽车:电动汽车电控系统

电动汽车的电控系统通常包含三个子控制系统 —— 整车控制器、电池管理系统、驱动电机控制器。 整车控制器 VCU 整车控制器 VCU(Vehicle Control Unit)作为电动汽车的中央控制单元,是整个控制系统的核心,也是各个子系统的调控中心。VCU 的主要功能就是协调管理整车的运行状态,包括采集电机及电池状态,采集加速踏板信号、制动踏板信号、执行器及传感器信号,根据驾驶员的意图综合分析做出相应判定后,监控下层的各部件控制器的动作,它负责汽车的正常行驶、制动能量回馈、整车发动机及动力电池的能量管理、.

程序员「阿基米东」的编程之旅 1万+

数据结构之博弈树搜索(深度优先搜索)

数据结构之博弈树搜索(深度优先搜索)

LucianaiB的博客 1526

STL中vector容器实现反转(reverse)

STL中vector容器实现反转(reverse) #include "stdafx.h" #include<iostream> #include <cmath> #include <vector> using namespace std; int main() { int temp; vector <int> inputVector; cin>>temp; while(temp != 0) { inputVector.push_b

cmdxly的博客 3530

全面指南:PyTorch与ROCm版本兼容性及多版本环境管理

本文详细介绍了在AMD GPU上配置PyTorch开发环境的完整流程,重点解决版本兼容性和多版本ROCm环境管理问题。主要内容包括:1) PyTorch与ROCm版本对应关系查询;2) 四种查看ROCm版本的方法;3) 使用update-alternatives管理多版本ROCm;4) 环境变量配置与冲突解决方案;5) 完整的验证流程和性能测试方法。文章提供了最佳实践建议和故障排除清单,帮助开发者快速搭建稳定高效的深度学习开发环境,充分发挥AMD GPU硬件性能。通过系统化的验证流程确保各组件协同工作,解决

数字人生 607

opencv3.0以上-CvMat* cvMat Mat 定义转换

opencv3.0以上-CvMat* cvMat Mat 定义转换

cmdxly的博客 3477

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

c++ 父类指针指向子类对象 子类指针指向父类对象

c++ 父类指针指向子类对象 子类指针指向父类对象。

cmdxly的博客 2424

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

c++STL 迭代器失效的三种情况总结

c++ STL迭代器失效的三种情况总结

cmdxly的博客 1614

c++学习笔记-c++primer

c++笔记-c++primer 1.基础汇总 int main(void);// 等价于 int main(),接口函数头 &;//即可以表示地址运算符,也可以表示按位AND运算 *;//即可以乘法,也可以表示对指针接触引用 2. 类 构造函数 析构函数 类与结构体之间唯一的区别是结构体的默认访问方式是public,类的默认访问方式为private class Sales_item { public: Sales_item(); virtual ~Sales_item(); //st

cmdxly的博客 1563

c++ 结构体-struct

c++ 结构体-struct 结构体,类似于数据结构的实现体,其数据访问控制权限是public C中格式 c中结构体不可以包含函数 //两种方法等价 //定义 typedef struct Student { int age; string name; } S; struct Student { int age; string name; } typedef struct Student S; int main() { struct Student me; // 或

cmdxly的博客 1391

c++ 基础知识-const字符-private-public用法

c++ 基础知识-const字符-private-public用法 private私有成员,包括变量,成员函数,其中私有成员变量和私有成员函数均可以通过public中成员函数调用,但是不能通过定义的类调用。 注意:私有成员函数也不能调用私有成员变量 const 常量,修饰变量,变量不可以修改,修饰函数,在函数前面修饰,一般是修饰函数返回值不可以修改,在函数后面修饰,则该函数不可以修改数据成员的值 注意:const 修饰类,该类默认调用常成员函数 // 类 class A { //私有成员 private:

cmdxly的博客 1363

编写示例程序,实现printf、sprintf和snprintf函数的功能

编写示例程序,实现printf、sprintf和snprintf函数的功能 /* * name: book8.cpp 编写示例程序,实现printf、sprintf和snprintf函数的功能 * author: xiaoliyu * time:2021/01/27 */ #include <stdio.h> #include <string.h> #include <stdarg.h> class Test { public: Test();//构造函数

cmdxly的博客 1249

c++面试题汇总-58-118

c++面试题汇总

cmdxly的博客 1061

关于c++ 中 #pragma pack(n)用法

关于c++ 中 #pragma pack(n)用法 #pragma pack(4) class TestC { public: char a;//第一个成员,自身长1,#pragma pack(4),取1,按照1字节对齐,放在[0]偏移的位置, short b;;//第二个成员,自身长2,#pragma pack(4),取2,按照2字节对齐,放在偏移[2,3]的位置。 char c;//第三个,自身长为1,#pragma pack(4),取1,按照1字节对齐,放在[4]的位置。 }; int main

cmdxly的博客 1032

c++ 基础知识-类和对象的访问权限

c++ 基础知识-类和对象 1.类访问权限 #include <iostream> #include <string> using namespace std; //访问权限 //public 公共权限 类内可以访问 类外可以访问 //protected 保护权限 类内可以访问 类外不可以访问 //private 私有权限 类内可以访问 类外不可以访问 //注意protected 和 private的区别主要体现在继承,继承后子类可以访问父类的protected,但是不

cmdxly的博客 1012

C/C++程序库记录1-5

C/C++程序库记录1-5 1. #include <windows.h> Windows.h是一个最重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是: Windef.h 基本数据类型定义。 Winnt.h 支持Unicode的类型定义。 Winbase.h Kernel(内核)函数。 Winuser.h 用户界面函数。 Wingdi.h 图形设备接口函数。 这些头文件定义了Windows的所有资料型态、函数调用、资料结构和常数

cmdxly的博客 964

c++面试题目汇总-1-57

c++面试题汇总

cmdxly的博客 942
上一篇: c++面试题汇总-58-118
xiaoliyu00
博客等级 码龄9年 4180粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值