- 博客(211)
- 资源 (4)
- 收藏
- 关注
原创 TUM数据集associate.py报错AttributeError: ‘dict_keys‘ object has no attribute ‘remove‘
【代码】TUM数据集associate.py报错AttributeError: ‘dict_keys‘ object has no attribute ‘remove‘
2024-04-03 15:53:15 313
原创 Pangolin_FOUND to FALSE so package “Pangolin“ is considered to be NOT FOUND.
在find_package(Eigen3 REQUIRED)后加NO_MUDULE,
2024-04-01 11:31:26 271
原创 error: ‘CV_RGB2BGR’ was not declared in this scope; did you mean ‘CV_RGB’等问题的解决方法
【代码】error: ‘CV_RGB2BGR’ was not declared in this scope;did you mean ‘CV_RGB’等问题的解决方法。
2024-03-24 15:57:58 391
原创 论文阅读:EDPLVO: Efficient Direct Point-Line Visual Odometry
本文介绍了一种利用点和线的直接视觉里程计(VO)算法。直线上的像素一般采用直接法。然而,原始光度误差仅定义为点。似乎很难把它扩展到线条上。在以往的研究中,要么忽略直线上点的共线约束[1],要么在优化系统中引入大量的计算量[2]。本文扩展了线的光度误差。证明了二维直线上点的三维点是由直线端点的深度逆决定的,并导出了该问题的封闭解。这一特性可以显著减少变量的数量,加快优化速度,并能使共线约束得到精确满足。在此基础上,我们引入了一种两步法来进一步加快优化速度,并证明了该方法的收敛性。
2024-01-26 11:08:20 1296
原创 SLAM中使用闭环检测进行重定位 以及C++代码实现
首先加载当前帧和地图。然后,使用特征匹配算法提取当前帧特征,并计算当前帧与地图之间的匹配。对匹配结果进行评分和验证,如果匹配数大于阈值,则构成闭环。最后,计算闭环帧与当前帧之间的位姿。在实际应用中,可以根据SLAM系统的具体情况调整闭环检测的参数,如匹配阈值、内点阈值等。
2024-01-18 11:45:01 1002
原创 实现scan-to-map匹配,使用NDT的C++代码实现(2)
使用 C++ 实现 scan-to-map 匹配时,选择正态分布变换(Normal Distributions Transform,NDT)与迭代最近点(Iterative Closest Point,ICP)算法,存在几个关键区别。这些区别主要体现在算法的原理、性能、适用场景以及实现细节上。
2024-01-18 11:21:41 922
原创 实现scan-to-map匹配,使用ICP的C++代码实现(1)
该实现可以满足基本的scan-to-map匹配需求。如果需要提高匹配精度,可以调整ICP算法的参数,例如迭代次数、误差阈值等。函数用于计算匹配误差。如果匹配收敛,则输出。函数用于判断ICP算法是否收敛。匹配误差越小,匹配效果越好。
2024-01-18 10:50:14 671
原创 点云对齐函数icp.align(*result)
迭代最近点(ICP)算法是一种常用于点云对齐(或配准)的算法。它的目的是找到两个点云之间的最佳对齐方式,使得一个点云可以尽可能精确地对齐到另一个点云上。这通常涉及到旋转和平移这两个点云。
2024-01-17 15:36:14 928
原创 ROS中的回调函数
ROS中回调函数的作用是处理消息。当节点订阅了一个话题时,ROS会将来自该话题的消息传递给节点。节点可以通过回调函数来处理这些消息。回调函数的参数通常是一个消息指针。消息指针指向了节点收到的消息。回调函数可以通过消息指针来访问消息的内容。回调函数可以是静态函数或成员函数。静态函数可以由任何节点使用,而成员函数只能由定义它的节点使用。回调函数是一个函数指针,它会在节点收到消息时被调用。类型的消息时,ROS会将消息指针传递给。函数可以通过消息指针来访问消息的内容。函数会打印消息的内容到控制台。
2024-01-17 11:47:14 1184
原创 C++中用于精度控制的在1e-6 的含义
在C++编程中,这种表示法常用于定义非常小的数,特别是在处理浮点数精度问题时。例如,当比较两个浮点数是否“足够接近”以认为它们相等时,通常会使用一个小的阈值(比如。)来判断它们的差异是否在可接受的范围内。这是因为浮点数的表示通常并不精确,直接比较可能会因为极小的差异而失败。这是一种使用科学计数法表示非常小的浮点数的方式。在C++中就是 1×10−61×10−6,或者。表示 1 乘以 10 的负6次幂,即。
2024-01-17 10:48:40 4186
原创 C++中的引用及指针变量
C++中的引用(reference)是一种特殊的变量,它是某个已存在变量的另一个名字。引用变量与指针变量类似,但引用变量必须在声明时进行初始化,并且一旦引用变量与某个变量关联起来,就无法再与其他变量关联。C++中的指针变量(pointer)是一种特殊的变量,它存储了另一个变量的地址。当引用变量作为函数参数时,它将成为实参列表中相应变量的别名。对引用参数进行的任何更改都将真正更改正在调用它的函数中的变量。对指针参数进行的任何更改都将真正更改正在调用它的函数中的变量。是指针变量所指向的变量的类型,
2024-01-17 10:04:21 1405
原创 2023年人工智能的最新发展(下)
到了2016年,一种新型的AI模型开始流行,这大大提升了AI绘图的质量,并最终使得AI绘图技术走出实验室,进入大众视野。AI在这个过程中扮演了引导者的角色,确保墨水沿着预期的路径扩散,并在这个过程中根据对用户意图的理解和对绘画的知识,不断补充信息,最终形成一幅完整的画面。比如,网上那些根据你的照片预测你老了的样子,或者将照片变成漫画风格的应用,都是基于GAN技术。这组照片看起来普通,就像一对小情侣的合影,但实际上这两个人并不存在,完全是由AI绘制出来的,对于不常关注科技的普通人来说,这可能有些震惊。
2024-01-10 17:02:33 585
原创 2023年人工智能的最新发展(上)
大多数公司,包括许多中国公司,选择了追随谷歌的BERT路径,因为这种方法对于小型业务场景,如电商公司的客服机器人,可以快速达到不错的效果。GPT-4的参数量据说远超1万亿,相较之下,其他大型模型的参数量显得微不足道。到2018年,基于Transformer架构的自然语言模型开始出现,其中最受关注的是谷歌发布的BERT和来自不起眼的一家创业公司OpenAI的GPT模型。而OpenAI的方法更像是让模型阅读文章,然后写出类似的内容,这种方法假设如果模型能写出类似的文章,那么它可能已经理解了文章的内容。
2024-01-10 17:01:15 561
原创 [论文阅读]4DRadarSLAM: A 4D Imaging Radar SLAM System for Large-scale Environments
这篇论文介绍了一种名为“4DRadarSLAM”的新型4D成像雷达SLAM系统,旨在提高大规模环境下的定位与地图构建性能。与传统的基于激光雷达的SLAM系统相比,该系统在恶劣天气条件下表现更佳。它包括前端、回环检测和后端三个主要部分:前端通过扫描匹配计算里程计数据,回环检测模块识别回环,后端则构建并优化姿态图。该系统的显著特点是考虑了每个点的概率分布,从而改善性能。论文中还展示了在不同平台和数据集上的实验结果,证明了该系统的准确性、鲁棒性和实时性。此外,为了进一步促进相关研究,研究者将系统代码开源。
2024-01-08 20:02:14 1640
原创 申请CSDN博客专家的历程
之后主要是为了记录自己平时遇到的问题,以及问题解决的办法。一方面为了记录自己解决问题的过程,以及理清自己解决问题的思路。今天是2024年第一周的周五下午13:55,我怀着非常非常激动的心情写下这篇博客记录这难忘的时刻:我的。2023年我开始考虑如何写一些高质量的博文,跟更多的同领域的技术人员进行交流。
2024-01-05 16:19:02 672
原创 ROS发布消息与接受消息的机制
在 ROS (Robot Operating System) 中,消息的发布和接收是通过一个基于主题的发布/订阅模型来实现的。这个模型允许节点之间的松耦合通信,即发布者(publisher)和订阅者(subscriber)不需要知道对方的存在。下面详细解释这一机制:定义发布者(Publisher):创建和发送消息:ROS主节点(Master):定义订阅者(Subscriber):接收和处理消息:ROS主节点(Master):通过这种机制,ROS能够在不同的节点之间有效地传递信息,从而实现复杂的机器人控制和数
2024-01-05 12:11:59 1080
原创 ROS订阅和发布的点云保存为.pcd文件
在 ROS 中,您可以将订阅或发布的点云数据保存为.pcd(Point Cloud Data)文件。这是一个常用的点云文件格式,由 Point Cloud Library (PCL) 支持。
2024-01-05 12:10:28 1311 1
原创 视觉SLAM和激光SLAM适合的应用领域以及哪个更有前景
视觉SLAM(Simultaneous Localization and Mapping)和激光SLAM(通常基于LIDAR)各有其独特的优势和局限性,它们在不同的应用场景中表现不同。总的来说,视觉SLAM和激光SLAM各有所长,未来的趋势可能是两者的融合或互补,而不是单一技术的主导。:小型或成本敏感的机器人,如家用清洁机器人,可能更倾向于使用视觉SLAM,因为它们需要轻便和低成本的解决方案。:激光SLAM因其高精度和稳定性,是自动驾驶汽车中重要的感知技术,尤其是在复杂和动态的交通环境中。
2024-01-04 11:46:06 1495
原创 视觉SLAM中对极几何的原理和基本步骤是什么
对极几何(Epipolar Geometry)是计算机视觉领域的一个基本概念,主要用于描述和理解两个摄像机视角(或同一摄像机在不同时间拍摄的两幅图像)之间的几何关系。
2024-01-04 11:17:42 1068
原创 视觉SLAM中的PnP原理以及计算过程是什么
SLAM(Simultaneous Localization and Mapping)中的PNP(Perspective-n-Point)是一个计算机视觉问题,用于估计一个刚体物体相对于相机的姿势。这种技术在SLAM中非常重要,因为它帮助机器人或自动驾驶汽车在环境中定位自己,并构建或更新地图。PNP问题的基本原理是:如果你知道至少三个(通常是三个或更多)空间点在世界坐标系中的位置,以及它们在相机坐标系中的对应投影位置,你就可以计算出相机相对于这些点的位置和方向。这里的“点”可以是环境中的任何显著特征。
2024-01-04 11:12:20 1292
原创 SLAM中用到的TF树是什么
TF树(Transform Tree)是在机器人操作系统(ROS)中使用的一种数据结构,用于跟踪和管理多个坐标系之间的关系。TF树使得在复杂的系统中,可以轻松管理和转换不同坐标系下的数据,从而简化了空间位置计算和路径规划等任务。TF 树的根节点表示世界坐标系,每个子节点表示相对于其父节点的变换。例如,如果有一个 TF 树,其根节点表示世界坐标系,第一个子节点表示相对于世界坐标系的里程计坐标系,第二个子节点表示相对于里程计坐标系的激光雷达坐标系,那么这个 TF 树就表示了从世界坐标系到激光雷达坐标系的变换。
2023-12-29 15:03:20 890
原创 激光SLAM中获取当前扫描帧点云的函数是什么
在激光SLAM(Simultaneous Localization and Mapping)中,获取当前扫描帧的点云数据通常依赖于使用的SLAM框架和激光雷达(LiDAR)的SDK(软件开发工具包)。- 在使用GTSAM这类SLAM框架时,获取点云数据通常不是框架本身的一部分,需要与外部传感器接口相结合的部分。- 对于特定的激光雷达,如Velodyne或Hokuyo,它们的SDK可能提供了专门的函数来读取数据。- 在这种情况下,需要先使用激光雷达的SDK获取数据,然后将数据转换为GTSAM可以处理的格式。
2023-12-29 09:24:30 356
原创 SLAM中用到的GTSAM是什么,如何构建和使用GTSAM
GTSAM (Georgia Tech Smoothing and Mapping library) 是一个开源C++库,用于解决机器人和自动驾驶车辆的定位与地图构建(SLAM)问题。它包含了一系列高效的算法,用于处理传感器数据和地图信息,以估计机器人或车辆的路径和周围环境。GTSAM 通过使用因子图和非线性优化技术,提供了一种灵活而强大的方式来表示和解决SLAM问题。
2023-12-29 09:19:25 2425
原创 SLAM中的KDTree是什么,如何构建KDTree
点云数据通常包含了大量的三维空间点,通过构建KD树,可以高效地管理这些点,并快速回答关于空间关系的查询。具体来说,它选择一个维度和该维度上的一个点(如中位数点),并以此点为界,将空间分割为两部分,然后对每个子空间重复这个过程,直到满足某种终止条件(如子空间中点的数量低于预定阈值)。每个子树的根节点是子集的分割点。递归的终止条件通常是子集的大小达到了预设的阈值(比如少于某个数量的点),或者达到了预设的树的深度限制。在点云处理中,KD树能够显著提高数据处理的效率,特别是在处理大规模点云数据时,其优势更为明显。
2023-12-28 16:25:17 580
原创 如何直观的理解Transformer模型
在这个流程中,自注意力机制像是重要的零件,通过权重揭示单词间的相互关系,并将上下文信息嵌入其中。这个过程分为六个阶段,每个阶段又细分为八个部分,每部分都有自己独特的“变形说明书”,记录了各个零件的权重和它们之间的相互关系。在自注意力机制中,尽管输出矩阵Z的维度与输入矩阵X相同,但它编码了其他单词的上下文信息,使得每个单词都融入了周围的环境信息。在这个过程中,Q、K、V三个向量的作用类似于数据库操作中的查询(query)、键(key)和值(value),因此它们被赋予了这样的名称。
2023-12-28 10:51:50 941
原创 十大最佳SLAM开源算法
该方法亮点:首先,该方法在多种应用场景中展现出了卓越的稳定性,如无人机、手持设备以及汽车,显著扩展了单目方法的适用范围。方法的核心在于分层的、基于网格的神经隐式编码。这种并行化不仅提高了处理速度,使得系统能够以更高的帧速率处理图像,而且在快速运动的环境中能够获得更好的性能。在处理图像时,系统不仅仅使用上一个关键帧进行跟踪,而是利用整个时间窗口内的数据,这种方法可以更全面地利用可用信息,从而提高跟踪的稳定性和准确性。除了重建精确的平面结构外,这种方法还能在保持非平面区域细节的同时,实现高质量的场景重建。
2023-12-28 10:19:48 2812
原创 为什么深度学习神经网络可以学习任何东西
尽管如此,神经网络在处理一些对计算机而言极具挑战性的任务上表现出色,特别是在需要直觉和模糊逻辑的领域,如计算机视觉和自然语言处理,神经网络已经彻底改变了这些领域的面貌。在探讨神经网络如何学习的过程中,我们首先遇到了一个基本问题:如果我们不完全知道一个函数的形式,只知道它的部分输入和输出值,我们能否对这个函数进行逆向工程?重要的是,只要知道了这个函数,就可以针对任意输入x计算出对应的输出y。一种简单而有力的思考世界的方式,通过结合简单的计算,我们可以让计算机构造任何我们想要的功能,神经网络,从本质上讲,
2023-12-26 16:25:44 3880 4
原创 Linux介绍、安装和常用指令
Linux 是一个广泛使用的开源操作系统,它是基于Unix的多用户、多任务系统,适用于服务器、桌面和嵌入式系统。Linux系统以其稳定性、安全性和灵活性而闻名。Linux的核心是Linux内核,最初由Linus Torvalds在1991年开发。它是自由软件,任何人都可以自由地使用、修改和重新分发。
2023-12-26 10:36:44 398
原创 关于edge浏览器以及插件推荐
Microsoft Edge 是一款基于Chromium开源项目的现代网络浏览器,由微软开发。它是Internet Explorer的继任者,旨在提供更快、更安全且更兼容的网页浏览体验。Edge支持Chrome Web Store中的大多数扩展,这意味着用户可以访问大量的插件。Microsoft Edge 浏览器支持许多插件,特别是由于其基于Chromium,使得它兼容许多为Google Chrome设计的扩展。
2023-12-26 10:32:30 1340
原创 激光SLAM中scan-context是什么
Scan Context是一种高效且鲁棒的环境感知和定位方法,尤其适用于那些对GPS信号依赖较小的应用。它通过将复杂的3D点云转换为简化的二维表示,来实现快速而准确的环境匹配和定位,为自动驾驶和机器人导航提供了有力的工具。
2023-12-26 10:14:05 710 1
原创 写算法用C++还是用JAVA?
图像中的掩膜(Mask)是什么_bitcarmanlee的博客-CSDN博客_掩膜写算法,用 C++ 还是用 Java ,差别大吗?_CSDN人工智能头条-CSDN博客
2023-12-26 09:57:24 824
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人