《视觉惯性SLAM理论与源码解析》阅读笔记(1)

C++新特性

1 std::swap

原本我们交换两个变量的数据时,通常是以下做法:

int a = 10, b = 20;
// 交换a,b
int tem = a;
a = b;
b = tem;

这在大型数据时,显然做了三次操作,效率非常低,而std::swap函数是直接交换二者的指针,效率非常高,因此在遇到交换两者数据操作时,尽量使用该函数。

2 auto

自动类型推到,该方式不影响编译速度。

3 Lambda表达式

概述

// Lambda表达式的一般形式,返回值类型通常可以省略,如果编译器不能推断,则需要给
[捕获列表](参数列表)->返回类型{函数体}
// 没有参数时,参数列表可以省略,捕获列表和函数体不可省略,如下:
auto fuc = []{std::cout<<"Hello,Lambda"<<std::endl;}

捕获列表
(1)[] 不捕获任何变量

int a = 2;
static int b = 8;
auto fuc1 = []{return a;};	// 会报错,因为无法捕获外部变量
auto fuc2 = []{return b;};	// 不报错,可以捕获静态局部变量

(2)[&] 按引用捕获可见范围内的所有局部变量(不推荐使用)

int a = 2;
auto fuc = [&]{
    a = 28;
    return a;
};
fuc();
std::cout<<a<<std::endl;	// 结果为28,因为是捕获的引用

(3)[=] 捕获可见范围内的所有局部变量,以副本形式(不推荐使用)

int a = 2;
auto fuc = [=] () mutable {
    a = 28;
    return a;
};
fuc();
std::cout << a << std::endl;	
// 因为是副本,结果为2,不加mutable会报错,因为是不加便为const函数

(4)[this] 通常在类中使用, 让 Lambda 表达式拥有和当前类成员同样的访问权限,可以修改类的成员变量,使用类的成员函数。

4 tuple容器

// 1.初始化方法
std::tuple<float, string> t1(2.8, "tuple");
auto t2 = std::make_tuple(28, "Hello");

// 2.拆开tuple,不想要某一个值可以用ignore代替
double a;
string b;
std::tie(a,b) = t1;
std::tie(c, ignore) = t2;

// 3.连接tuple
auto t3 = tuple_cat(t1, t2)

// 4.获取tuple中的信息
auto d = get<0>(t1);	//获取第一个元素
std::tuple_element<0, decltype(t2)>::type	//获取第一个元素的数据类型
std::tuple_size<decltype(t3)>::value;	//获取t3的大小
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
视觉惯性SLAM(Simultaneous Localization and Mapping)是一种在无人机、机器人和增强现实等领域广泛应用的技术,它结合了视觉惯性传感器的信息,实现同时定位和地图构建。这种技术主要基于滤波器、优化和深度学习等方法。 视觉惯性SLAM的基本思想是通过相机和惯性传感器(例如加速度计和陀螺仪)融合数据,估计相机的位姿(位置和方向)以及地图的结构。其中,相机主要用于提取特征点或者进行直接法,从而计算相机位姿;惯性传感器主要用于补偿相机的运动和姿态估计。 在SLAM中,地图通常以稀疏或稠密的形式表示。稀疏地图主要通过特征点或关键帧来表示,而稠密地图则以像素级别的深度图表示。对于特征点的选择和跟踪,通常会使用特征描述子(如SIFT、ORB等)来进行匹配和跟踪。 在实现视觉惯性SLAM时,有一些常用的开源库和工具,例如: 1. OpenCV:一个广泛使用的计算机视觉库,提供了各种视觉算法和工具,如特征提取、特征匹配、相机标定等。 2. OpenVINS:一个基于视觉惯性传感器的SLAM系统,提供了实时的位姿估计和地图构建。 3. OKVIS:一个高性能的开源视觉惯性SLAM库,基于优化方法,提供了稠密地图和位姿估计等功能。 4. g2o:一个用于图优化的开源库,可用于SLAM中的位姿优化和地图构建。 以上是视觉惯性SLAM的基本理论和一些常用的开源工具,希望对你有所帮助。如果你需要进一步了解源码实现细节,可以查阅相关文献或者具体的开源项目代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值