自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

行知SLAM

专注机器人及自动驾驶领域

  • 博客(161)
  • 资源 (1)
  • 收藏
  • 关注

原创 985硕机器人算法方向毕业五年,对读研和求职规划选择的一点感想总结

这7年,从双非到考上985研的开心,读研写论文的焦灼,毕业时候的未来可期,到刚参加工作时的996,以及果断换行寻找所谓热爱的方向,但对未来仍还是有焦虑和迷茫。

2025-01-04 09:15:59 1156

原创 第1章 机器人SLAM定位入门最全知识体系及资料推荐入门

机器人SLAM知识体系:多而杂。

2020-05-14 18:21:22 5589 1

原创 第3.6章 从入门到精通:OpenCV库在机器人SLAM中的全面解析

OpenCV,即 Open Source Computer Vision Library,是一个开源的计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,提供了 Python、Ruby、MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的众多通用算法。OpenCV 拥有超过 2500 个优化算法,涵盖了从基本的图像滤波、边缘检测,到复杂的特征提取、目标识别、立体视觉等各个领域。凭借其开源特性,全球开发者能够自由使用、修改和分享代码,极大地推动了计算机视觉技术的发展。

2025-03-20 16:51:35 29

原创 机器人及自动驾驶导航定位社区成立开篇介绍

计算机基础(ubuntu、vscode、git、vim、grep、bash等工具命令工程使用)、C++语言(CMakeLists、标准库等)、第三方开源库(ROS、PCL、Eigen、Ceres、G2O、OpenCV)及SLAM开源框架(ORB-SLAM3、LOAM等)、数学理论知识、机器人及自动驾驶行业定位(组合导航、IMU、UWB定位)原理及代码实战分享。因此,重新成立了本付费社群,一来可以拦截贴小广告的人,二来也更加有动力分享更多的高质量知识给大家。本知识星球主要面向工作实战应用,主要帮助。

2025-03-20 16:46:26 420

原创 ros::Time 介绍及与其他时间表示(如 UTC)的区别

ros::Time是ROS(Robot Operating System)中用于表示时间点的类,在ROS系统里发挥着核心作用,尤其是在时间同步、消息时间戳标记以及定时任务调度等方面。

2025-03-12 15:33:41 784

原创 ROS(机器人操作系统)中添加自定义消息时,CMakeLists.txt文件代码编写入门实例

使用宏来指定自定义消息文件的位置和名称。FILESDIRECTORY:指定消息文件所在的目录,通常为msg。FILES:列出该目录下的所有自定义消息文件。

2025-03-12 14:25:37 246

原创 第3.5章 一文带你精通机器人SLAM中的Ceres库

在机器人 SLAM(Simultaneous Localization and Mapping,即时定位与地图构建)领域,Ceres 库是一个强大且广泛应用的工具,它主要用于解决非线性最小二乘问题。从数学原理上讲,许多 SLAM 问题都可以建模为最小化一个误差函数的平方和,这正是非线性最小二乘问题的典型形式。

2025-03-03 16:16:47 130

原创 第3.4章 解锁机器人SLAM中g2o库的无限可能

自定义边同样是满足复杂应用需求的重要手段。自定义边时,需要明确边所连接的顶点类型以及边所表示的误差项的计算方式。假设我们要定义一条边,用于约束两个上述自定义顶点之间的相对位姿和传感器偏移量关系。我们可以这样定义边类:public:// 计算误差// 计算雅可比矩阵// 读盘和存盘函数,这里暂不实现。

2025-03-03 14:35:23 32

原创 PCL 库 pcl::getTranslationAndEulerAngles概述及在机器人SLAM中的代码实例

在点云处理的PCL(Point Cloud Library)库中,是一个实用的工具。它能帮助开发者从给定的变换矩阵中提取出平移和欧拉角信息,在很多需要分析和处理点云变换的场景中发挥着重要作用。接下来将详细介绍它的相关信息、使用方法以及在机器人SLAM领域的应用。这个函数接受一个类型的变换矩阵transform,并通过引用参数xyz存储平移信息,rollpitchyaw存储欧拉角信息。使用包含必要的头文件和(用于处理Eigen矩阵)。定义一个表示变换的矩阵。定义存储平移和欧拉角的变量。调用。

2025-02-24 15:02:54 793

原创 PCL 库 pcl::transformPointCloud概述及在机器人SLAM中的代码实例

在点云处理领域,PCL(Point Cloud Library)库是一个强大且广泛使用的工具。其中,函数扮演着重要角色,它为点云数据的坐标变换提供了便捷的实现方式。下面将详细介绍该函数的各项信息、使用方法以及在机器人SLAM中的应用。这两个重载函数的主要区别在于传入的变换矩阵类型不同,一个是类型,另一个是类型,但功能都是将输入点云cloud_in按照给定的变换矩阵进行变换,并将结果存储在cloud_out中。使用包含必要的头文件。定义输入点云、输出点云和变换矩阵。调用函数进行点云变换。

2025-02-24 14:36:31 59

原创 PCL 库 pcl::getTransformation概述及在机器人SLAM中的代码实例

在点云库(PCL)的使用中,是一个非常实用的工具。它在处理点云数据时能发挥重要作用,帮助我们完成点云之间的转换等操作。下面将详细介绍它的具体信息、相关函数方法、用法以及在机器人SLAM领域的应用。该函数接受三个平移参数(xyz)和三个旋转参数(roll,绕X轴旋转;pitch,绕Y轴旋转;yaw,绕Z轴旋转),返回一个表示该平移和旋转的仿射变换矩阵。使用包含必要的头文件。定义平移和旋转参数。调用函数计算变换矩阵。使用计算得到的变换矩阵对需要进行变换的点云进行变换。在机器人SLAM项目中,和。

2025-02-24 14:25:47 851

原创 第3.3章 一文带你入门PCL点云库及在机器人SLAM中的代码实战

PCL 库,即点云库(Point Cloud Library),是一个专门用于处理三维点云数据的开源 C++ 库。它由一系列高度优化的算法和数据结构组成,旨在提供高效、便捷的点云处理解决方案。PCL 库涵盖了点云数据处理的各个方面,包括滤波、特征提取、分割、配准、模型拟合以及可视化等功能。其强大之处在于,它能够帮助我们快速处理和分析激光雷达、深度相机等传感器获取的点云数据,为机器人的定位、导航和环境感知提供有力支持。在机器人领域,PCL 库占据着举足轻重的地位。

2025-02-24 10:48:32 35

原创 第3.2章 一文带你吃透Eigen库:从入门到在机器人SLAM中的进阶应用

Eigen 库是一个开源的 C++ 模板库,专注于线性代数运算 ,涵盖矩阵、向量操作以及数值求解算法等领域。它具备高效、灵活和易用的特性,在科学计算、工程、机器学习、计算机图形学等众多领域广泛应用。Eigen 库的核心优势在于采用模板元编程设计,让众多运算在编译阶段就能完成,极大提升了代码的运行效率。它支持多种数据类型,包括常见的浮点型(如 float、double)和定点数类型,还能自动处理对称矩阵、稀疏矩阵等特殊结构。

2025-02-24 10:41:47 392

原创 GTSAM库介绍及代码实例

GTSAM(Georgia Tech Smoothing and Mapping library)是一个用于解决机器人领域中平滑与映射问题的C++库。它主要应用于同时定位与地图构建(SLAM)、视觉里程计、传感器融合等任务。该库提供了高效的非线性优化算法,能够处理大规模的优化问题,并且支持增量式求解,可在新数据到来时快速更新估计结果,从而满足实时性要求。:实现增量平滑与映射第二代算法,用于实时、增量式地求解非线性优化问题。适用于需要快速处理新测量数据并更新估计的实时SLAM场景。

2025-02-20 15:21:44 252

原创 PCL点云库中密集点云和非密集点云的区别

在处理点云数据的上下文中,和主要是用于标记点云簇(

2025-02-14 16:56:47 380

原创 PCL(Point Cloud Library)库:<pcl/sample_consensus/sac_model_line.h> 定义和实现与直线模型相关的采样一致性算法概述及代码实例

在PCL(Point Cloud Library)库中,头文件主要用于定义和实现与直线模型相关的采样一致性算法所需的功能。该头文件提供了用于从点云数据中拟合直线模型的类和方法。是该头文件中定义的一个模板类,模板参数为点云的类型,例如。这种设计允许该类处理不同类型的点云数据。命名方面,头文件名清晰地表明了其用途,sac代表采样一致性(Sample Consensus),model_line明确是直线模型。类名同样遵循了这种清晰的命名规则,便于开发者理解和记忆。

2025-02-14 11:30:10 668

原创 PCL点云库:<pcl/sample_consensus/ransac.h> 随机抽样一致性(Random Sample Consensus,RANSAC)算法概述及代码实例

在PCL(Point Cloud Library,点云库)中,头文件主要用于实现随机抽样一致性(Random Sample Consensus,RANSAC)算法。RANSAC是一种迭代的方法,用于从包含异常值的数据集中估计数学模型的参数。它通过随机选择数据点的子集来拟合模型,然后计算其他数据点与该模型的拟合程度,最终选择具有最多内点(符合模型的数据点)的模型作为最优模型。ransac.h中定义的是一个模板类,模板参数为点云类型。其命名遵循PCL库的命名规范,直接反映了该类所实现的算法名称,便于记忆。

2025-02-14 11:15:22 499

原创 Eigen库头文件分类总结

Eigen 库是一个用于 C++ 的强大线性代数库,旨在提供高效、类型安全且易于使用的矩阵和向量运算。它涵盖了从基础的矩阵操作到复杂的矩阵分解、几何变换等功能,广泛应用于计算机视觉、机器人学、数值分析、物理学模拟等领域,能极大地简化线性代数相关的编程任务,帮助开发者快速实现各种涉及矩阵运算的算法。基础运算#include<Eigen/Core>:提供 Matrix 和 Array 类,用于基础的线性代数运算和数组操作。适用于各种简单的矩阵定义、元素访问以及基本的算术运算场景。几何变换。

2025-02-10 15:28:15 564

原创 第3.1章 985硕从业5年分享:机器人ROS从入门到代码实战

ROS 作为机器人开发领域的核心技术,为机器人赋予了强大的智能和灵活的交互能力,在众多领域发挥着不可替代的作用。从智能家居的贴心服务到工业自动化的高效生产,再到无人驾驶的出行变革,ROS 的应用正不断拓展,为我们的生活和工作带来了极大的便利和创新。展望未来,随着人工智能、传感器技术、计算能力的不断发展,ROS 有望迎来更加辉煌的篇章。在性能优化方面,将不断提升系统的运行效率和响应速度,以满足机器人在高速、高精度任务中的需求;

2025-02-10 15:13:34 273

原创 CMake 中设置 C++ 标准方式总结

适合需要精细控制编译选项,同时要指定 C++ 标准和其他特定编译选项的场景,但要注意代码的可移植性。:推荐在大多数情况下使用,尤其是注重代码可移植性和遵循 CMake 最佳实践的项目,它能让 CMake 自动处理 C++ 标准的设置。:适用于需要为所有源文件统一添加编译选项的场景,但不适合仅为 C++ 文件设置 C++ 标准。

2025-02-08 08:49:52 694

原创 undefined reference to ros::package::getPath报错问题解决,及roslib库介绍

roslib为 ROS 系统提供了基础的功能支持,是构建 ROS 节点和应用程序不可或缺的一部分。通过掌握roslib的使用,可以更高效地开发和管理 ROS 项目。

2025-02-06 16:07:30 811

原创 add_compile_options和set(CMAKE_CXX_FLAGS)设置C++ 编译器使用 C++11 标准的区别总结

二者的核心目的都是让 CMake 在编译 C++ 代码时使用 C++11 标准。C++11 引入了众多新特性,如自动类型推导(auto)、智能指针(等)、范围 for 循环等,使用 C++11 标准可以提升代码的编写效率和安全性。

2025-02-06 15:13:01 368

原创 ros::package::getPath获取相对路径

这行代码在 ROS(机器人操作系统)中有着特定的用途,下面来详细解释它以及相关注意事项。

2025-02-06 14:52:52 142

原创 pcl中kdtree和kdtree_flann头文件的区别

更侧重于通用性和与 PCL 搜索模块的集成。在实际使用时,根据具体需求选择合适的 k-d 树实现,例如对于性能要求高且主要进行近邻搜索的场景可以优先考虑。需要注意的是,在使用这些代码时,确保正确安装和配置了 PCL 库,并根据实际情况处理可能的异常情况,例如搜索结果为空或点云数据的合法性等。,并和广大星球小伙伴交流激发更多知识火花,促进大家进步,欢迎大家点击加入了解。,而对于需要更多灵活性和与其他 PCL 搜索算法集成的情况,可以考虑使用。更侧重于快速的近邻搜索,特别是利用 FLANN 库的特性,而。

2025-01-25 08:00:00 588

原创 C++ 标准库中 <list>容器总结

std::list是 C++ 标准库中的一个容器,位于<list>头文件中。它是一个模板类,用于实现双向链表的数据结构。双向链表意味着每个节点除了存储数据外,还包含指向前一个节点和后一个节点的指针。std::list高效的插入和删除操作:在链表的任意位置插入或删除元素的时间复杂度为 O(1),这使得它在需要频繁进行插入和删除操作的场景中表现出色。不要求随机访问:与不同,std::list不支持通过下标直接访问元素,因为链表的节点在内存中不是连续存储的。return 0;

2025-01-24 11:44:34 854

原创 C++标准库高频使用容器<vector>代码总结,及在机器人SLAM中的使用总结

是 C++ 标准库中的一个容器,它位于<vector>头文件中。它本质上是一个模板类,提供了动态数组的功能。动态数组意味着其大小可以在运行时改变,这与传统的 C 风格数组不同,后者的大小在编译时就必须确定。可以存储各种类型的元素,只要这些元素满足一定的要求(如可复制、可移动等)。数据存储:可以用来存储一系列相同类型的数据,例如整数、浮点数、自定义对象等。动态大小调整:根据程序运行时的需要动态地增加或减少元素数量。随机访问:支持通过下标快速访问任意位置的元素。return 0;

2025-01-24 11:24:26 923

原创 如何删除C++标准库<vector>容器元素? remove 、 erase、clear方法总结

在 C++ 中,

2025-01-24 11:17:50 855

原创 C++标准库全面解析及最全代码实例学习

C++ 标准库全面解析引言C++ 标准库发展历程C++ 标准库内容架构4.1 常用头文件分类及功能4.2 头文件命名规律及记忆方法代码实例。

2025-01-24 09:56:28 671

原创 pcl库filter中<pcl/filters/boost.h>头文件总结

它可能涉及使用 Boost 的各种特性,如多线程、数据结构或算法,来提高过滤操作的性能、实现更复杂的过滤逻辑或更好地管理资源。Boost 是一个广泛使用的 C++ 开源库集合,提供了很多有用的功能,包括但不限于智能指针、多线程、日期时间、正则表达式等。在 PCL 中,当涉及到一些需要 Boost 库功能的过滤器扩展或增强时,可能会使用到。可以在需要额外性能提升或特殊过滤功能时发挥重要作用,但由于其依赖于 Boost 库,可能会增加开发的复杂性,需要开发者根据具体情况权衡使用。,点击链接进入该星球可以。

2025-01-24 09:30:00 689

原创 C++头文件stdint代码总结

中的类型和宏,可以编写出更具可移植性和健壮性的程序,避免了因不同平台上基本数据类型大小不同而产生的潜在问题。它是 C 和 C++编程中进行精确数据类型控制的重要工具,为跨平台开发提供了便利和保障。在使用这些类型时,要注意不同平台的范围和溢出问题,确保程序在各种环境下都能正确处理数据,尤其是对于涉及不同硬件和操作系统的项目,使用精确宽度的整数类型可以保证程序的正确性和性能。是 C 和 C++中的一个头文件,它提供了具有固定宽度的整数类型的定义,确保了跨平台的整数类型大小一致性。等)的大小可能会有所不同,而。

2025-01-24 09:15:00 685

原创 C++标准库unique_lock、lock_guard等几种锁的区别总结

在选择锁时,根据具体的多线程编程需求和场景,综合考虑代码的复杂性、是否需要多个锁、是否需要超时等待、是否涉及递归等因素,选择最适合的锁类型。同时,为了提高代码的安全性和可维护性,尽量使用 RAII 方式管理锁,如。,并和广大星球小伙伴交流激发更多知识火花,促进大家进步,欢迎大家点击加入了解。,点击链接进入该星球可以。

2025-01-23 09:00:00 1124

原创 C++配置文件yaml库代码使用及在机器人中的应用总结

使用 YAML 格式的文件可以让配置信息易于编辑和管理,避免将配置硬编码到程序中,方便不同环境和实验的配置调整。同时,通过解析和生成 YAML 数据,可以实现不同模块之间的数据交换和存储,提高程序的可配置性和可维护性。YAML 是一种人类可读的数据序列化语言,常用于配置文件、数据交换和存储,它的格式简洁明了,比 XML 和 JSON 更易于阅读和编写。库,并在编译时包含相应的头文件和库路径。此外,要注意 YAML 数据的结构和类型转换,确保程序能够正确处理各种可能的数据类型和数据结构,以避免运行时错误。

2025-01-23 09:00:00 1011

原创 C++标准库<limits>中NaN(Not a Number)值代码总结

NaN 没有一个具体的数值,它是一种特殊的浮点数表示,用于表示无效或未定义的计算结果。在编程中,需要特别注意 NaN 的处理,避免因错误的比较操作而产生意外结果,通常使用。函数来正确识别 NaN 值。

2025-01-22 15:45:16 388

原创 C++标准库<memory>中std::allocator内存分配用法总结

功能在 C++中,allocator主要用于管理容器的内存分配和释放操作。它将内存分配和对象构造分离开,使容器可以根据不同的需求采用不同的内存管理策略。通过allocator,可以为容器动态分配所需的内存空间,并且在该空间上构造对象,同时也能析构对象和释放内存。这为内存管理提供了更大的灵活性,例如,可以避免频繁使用new和delete操作,提高性能或满足特殊的内存需求(如内存池、共享内存等)。在 C++标准库中的位置allocator是 C++标准库的一部分,它定义在<memory>头文件中。类别。

2025-01-22 15:12:35 766

原创 C++`assign` 函数功能总结及代码实例

函数的功能:优点:示例 1:使用 和 代码解释:示例 2:使用 和 代码解释:示例 3:使用 和 代码解释:这些示例展示了如何在不同的容器(、、)中使用 函数,无论是使用 还是 形式,都可以方便地对容器进行元素的重新分配和初始化。这在需要重新初始化容器或复制其他容器元素的情况下非常有用,避免了复杂的元素添加和删除操作,使代码更简洁和易维护。将上述代码保存为 文件,使用 C++ 编译器编译运行,例如:使用 函数可以让你灵活地操作容器的元素,根据不同的需求对容器进行初始化、重置或复制元素

2025-01-22 15:06:18 436

原创 c++谷歌开源库gflag总结

的头文件,它提供了一种声明和解析命令行参数的便捷方式,可用于 C++程序。它不是 C++标准库的一部分,但在许多 C++项目中被广泛使用,特别是在大型项目和 Google 的开源项目中,用于处理命令行参数的定义、解析和使用。提供了一种强大的命令行参数处理机制,它可以帮助 C++程序更好地处理命令行输入,使程序更具可配置性和灵活性。可以提高程序的可维护性和用户友好性,将命令行参数处理从程序的主要逻辑中分离出来,使程序的命令行参数部分更加清晰和易于管理。例如,在一个图像处理程序中,可以使用。

2025-01-22 09:30:00 591

原创 第3.0章 机器人SLAM第三方库:ROS、Eigen、PCL、g2o、Creres、OpenCV史上最全总结介绍

ROS 为机器人 SLAM 提供了一个高效的软件框架,实现了系统的集成与通信;Eigen 凭借其强大的线性代数运算能力,为姿态估计和坐标变换提供了数学基础;PCL 专注于点云处理,助力机器人感知周围环境并构建地图;g2o 和 Ceres 则分别从图优化和非线性优化的角度,提高了 SLAM 系统的精度和稳定性;OpenCV 在视觉 SLAM 中发挥着关键作用,实现了图像的处理和分析。这些技术相互协作,共同推动了机器人 SLAM 技术的发展。

2025-01-22 09:18:04 422

原创 第2.10章 解锁C++11新特性:从基础特性到机器人SLAM实战应用

C++11 的一系列创新特性,为机器人 SLAM 领域带来了前所未有的变革与发展机遇。从优化数据处理与存储,到提升算法性能,再到增强代码的可读性与可维护性,这些特性已成为推动 SLAM 技术进步的关键力量。在实际项目中,如动态 - ORB - SLAM2 和基于 C++11 的导航系统,C++11 特性的应用显著提升了系统的性能和可靠性,充分展现了其在机器人 SLAM 领域的巨大潜力。展望未来,随着 C++ 语言的持续演进,新的特性和功能将不断涌现,有望为机器人 SLAM 带来更多的创新与突破。

2025-01-22 08:59:25 174

原创 第2.9章 机器人及自动驾驶中C++标准库algorithm算法的“超能力”

算法库无疑是机器人与自动驾驶领域的中流砥柱,为复杂系统的构建注入强大动力。从精准的查找、有序的排序,到灵活的遍历与修改,每一个算法方法都在实际应用中发挥关键作用,助力机器人灵活避障、自动驾驶汽车智能决策,让科幻场景逐步落地为现实。对于开发者而言,深入研习 库是开启智能世界大门的必经之路。持续探索新算法、优化现有算法应用,方能在激烈的科技竞争中脱颖而出。展望未来,随着人工智能、物联网技术蓬勃发展,算法库将持续进化。在机器人领域,群体协作算法有望优化,实现多机器人高效协同作业;

2025-01-22 08:48:37 41

原创 C++标准库<tuptle>元组代码总结及在机器人SLAM中的应用

C++<tuple>头文件是 C++ 标准库的一部分,它主要提供了一个名为std::tuple的类模板,用于创建一个固定大小的异构值集合。std::tuple可以将多个不同类型的值组合成一个单一的对象,这在处理需要同时传递多个不同类型数据的场景时非常有用,例如在函数返回多个值、数据打包传输等情况下,能够以一种简洁且类型安全的方式组织数据,提高了代码的灵活性和可读性。默认构造:创建一个所有元素都初始化为默认值的元组。cpp复制值初始化:通过指定每个元素的值来构造元组。cpp复制列表初始化。

2025-01-22 08:00:00 1380

pcl源码point-types.h

pcl源码point-types.h

2025-01-13

机器人及自动驾驶SLAM定位知识体系构建思维导图

详细总结了自动驾驶SLAM定位所需要的知识

2025-01-03

计算机视觉中的多视图几何(中文版)

计算机视觉中的多视图几何(中文版),很适合搞slam学习.

2018-05-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除