几度春风里
几度春风里,看花谢花开,含羞的程序员,惹人爱!
展开
-
ROS安装与报错的解决办法
ROS安装与报错的解决办法原创 2022-12-23 18:10:39 · 18791 阅读 · 8 评论 -
Eigen线性代数库学习大全
Eigen是C++的线性代数库,能提供有关矩阵的线性代数运算,还包含解方程等功能。原创 2022-11-17 20:52:19 · 2269 阅读 · 2 评论 -
Linux - CMake详细教程
本文详细的介绍了CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile。原创 2023-03-12 21:13:08 · 4150 阅读 · 0 评论 -
Pangolin库学习大全
详细介绍了Pangolin。它是基于OpenGL完成的,它不但支持OpenGL的基本操作,还提供了一些GUI的功能。对于在SLAM的学习中,它是必不可少的3D显示工具。原创 2023-03-02 20:47:51 · 2318 阅读 · 0 评论 -
Sophus线性代数库学习大全
一个较好的李群和李代数的库是Sophus库,它很好的支持了SO(3),so(3),SE(3)和se(3)原创 2022-11-25 20:41:13 · 823 阅读 · 0 评论 -
ORB-SLAM2项目实战(1) — ORB_SLAM2安装与编译报错的解决办法
ORB_SLAM2安装与编译报错的解决办法原创 2022-11-12 16:39:48 · 4752 阅读 · 4 评论 -
ORB-SLAM2项目实战(2) — 流程与函数功能说明
ORB-SLAM2的稠密重建实战原创 2023-05-09 20:44:49 · 1228 阅读 · 0 评论 -
ORB-SLAM2项目实战(3) — ORB-SLAM2稠密地图重建
文章参考部分开源代码和报错文章。原创 2023-06-04 10:19:29 · 6755 阅读 · 220 评论 -
ORB-SLAM2项目实战(4) — ROS下运行ORB-SLAM2稠密地图重建
在./orbslam2_ws下source ./devel/setup.bash,然后运行roslaunch ORB_SLAM2 orbslam2.launch可以得到相同的效果。如果进行了滤波处理,可以修改double resolution = 0.00000001,修改后颜色显示正常,但存在明显的漂移,但效果较以前好很多。在./orbslam2_ws/src/ORB_SLAM2想创建launch文件夹,创建orbslam.launch文件。将ros_rgbd.cc下的话题名称修改。原创 2023-06-16 09:41:50 · 3063 阅读 · 0 评论 -
A-loam代码详解(1) — A-loam安装运行与编译报错的解决办法
A-loam安装运行与编译报错的解决办法原创 2023-03-25 17:13:20 · 1081 阅读 · 0 评论 -
A-loam代码详解(2) — a-loam源码图文详解
a-loam源码图文详解原创 2023-03-31 20:20:42 · 2527 阅读 · 0 评论 -
SLAM面试笔记(1) -《视觉SLAM十四讲》
本内容以《视觉SLAM十四讲》为参考资料,对可能出现的面试题进行汇总,同时也可以帮助复习。原创 2023-03-05 11:14:49 · 1604 阅读 · 0 评论 -
SLAM面试笔记(2) - ORB-SLAM2
ORB-SLAM2知识点和面试汇总,持续更新!原创 2023-04-20 17:10:06 · 947 阅读 · 0 评论 -
SLAM面试笔记(3) - 视觉SLAM
SLAM面试笔记,持续更新中!原创 2023-04-15 21:28:01 · 3063 阅读 · 1 评论 -
SLAM面试笔记(4) — 企业面试汇总
SLAM企业面试汇总,持续更新中!原创 2023-04-30 11:48:53 · 1434 阅读 · 0 评论 -
SLAM面试笔记(5) — ROS面试
ROS面试题汇总,持续更新中!原创 2023-05-08 20:33:53 · 2407 阅读 · 0 评论 -
SLAM面试笔记(6) — C++面试题
野指针”不是NULL指针,而是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用f语句很容易判断。但是“野指针”是很危险的,f语句对它不起作用。指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的默认值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。原创 2023-06-26 22:20:22 · 1029 阅读 · 0 评论 -
SLAM面试笔记(7) — Linux面试题
du 显示目录或文件的大小df 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。(文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i 节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。) du 命令是用户级的程序,它不考虑 Meta Data,而 df命令则查看文件系统的磁盘分配图并考虑 Meta Data。df 命令获得真正的文件系统数据,而 du 命令只查看文件系统的部分情况。原创 2023-10-03 14:31:14 · 425 阅读 · 0 评论 -
SLAM面试笔记(8) — 计算机视觉面试题
若将长、宽与深度方向的卷积操作进行分离操作,变为先与 HXW方向卷积,再与C方向卷积的两步卷积操作,则同样有 K 个相同的尺寸的卷积核,只需要 (HxW+C) XK个参数,便可得到同样的输出尺度。综上所述,卷积核的大小并没有绝对的优劣,需要视具体的应用场景而定,但是极大和极小的卷积核都是不合适的,单独的 1X1极小卷积核只能用作分离卷积而不能对输入的原始特征进行有效的组合,极大的卷积核通常会组合过多的无意义特征,从而浪费大量的计算资源。比如黑白图片的深度为1,而在RGB色彩模式下,图像的深度为3。原创 2023-10-06 22:38:49 · 1214 阅读 · 0 评论 -
R3LIVE项目实战(1) — ZED双目相机配置
同样的思路降低zed-ros-wrapper的版本,重新编译,本人将文件降为zed-ros-wrapper-v.3.7.x后成功,建议先用方法2,因为重新安装SDK文件时间过长。下载 CUDA11.4、Ubuntu20.04、NVIDIA Tegra Xavier(nvgpu)/integrated对应的SDK,文件要与自己的环境匹配。上述测试仅能说明双目相机是好的、传感器也没有故障,真正的测试才刚刚开始。SDK与ROS包依赖冲突,重新安装最新的SDK,重新编译。关于CUDA的配置可参考相关博客。原创 2023-07-18 14:55:23 · 942 阅读 · 6 评论 -
R3LIVE项目实战(2) — LIVOX AVIA激光雷达配置
根据 Livox Avia 用户手册说明,所有的 Livox Avia 出厂默认为静态 IP , IP 地址为 192.168.1.1xx (xx为序列号最后两位数字),子网掩码为 255.255.255.0 ,默认网关为 192.168.1.1。目前测试使用时,利用USB转网口的工具连接雷达与开发板进行数据连接时,正确更改IP地址和子网掩码后会出现雷达和开发板不在同一网络的情况。将电脑连接网线,进行有线连接的设置,选择IPv4,方式调整为手动,然后填入相对应的地址和子网掩码。使用界面方式进行更改。原创 2023-07-18 15:08:39 · 1627 阅读 · 0 评论 -
R3LIVE项目实战(3) —双目相机与激光雷达 lidar_camera_calib联合标定
lidar_camera_calib是一个在无目标环境中,用于高分辨率LiDAR(例如Livox)和摄像机之间准确的外部标定工具。我们的算法可以在室内和室外场景中运行,并且只需要场景中的边缘信息。如果场景适合,我们可以实现类似于或甚至超过基于目标的方法的像素级准确度。我们使用标定的外部参数给点云上色,并与实际图像进行比较。A和C是点云的局部放大视图。B和D是与A和C中的点云对应的摄像机图像的部分。原创 2023-08-07 17:09:36 · 2205 阅读 · 2 评论 -
R3LIVE项目实战(4) — 双目相机与激光雷达livox_camera_lidar_calibration联合标定
获得外参后我们可以用两个常见的应用看一下融合的效果。第一个是将点云投影到照片上,第二个是点云的着色[注 10]。原创 2023-08-31 15:57:54 · 1309 阅读 · 0 评论 -
R3LIVE项目实战(5) — R3LIVE数据采集与时间同步
采集数据需要注意的一点是,不同传感器之间的时间同步问题,因为LIVOX默认是从开始启动激光雷达开始算时间的并不是ROS系统时间,如果直接记录数据,是跑不起来的。在R3LIVE中设置外参时,要对此处的得到的外参结果求逆,不然得不到最后的点云着色效果。在线运行时,与提前录制数据集方法相同,修改相应的雷达和相机的话题名称,启动相机和雷达的节点,同时要注意启动时间同步的功能。robag play录制的数据集,最后得到正确的结果,如果没有时间戳同步,则接受不到对应的图像,激光点云也没有颜色。PTP时间同步的方法。原创 2023-08-31 17:16:49 · 2621 阅读 · 4 评论 -
R3LIVE源码解析(6) — R3LIVE流程详解
R3LIVE是香港大学Mars实验室提出的一种融合imu、相机、激光的SLAM方法,R3LIVE由两个子系统组成,一个激光惯性里程计(LIO)和一个视觉惯性里程计(VIO)。LIO子系统(FAST-LIO)利用来自激光雷达和惯性传感器的测量数据,并且构建地图的几何结构(即3D点位置)。VIO子系统使用视觉惯性传感器的数据,并且渲染地图的纹理(即3D点颜色)。更具体而言,VIO子系统通过最小化帧到地图的光度误差直接且有效地融合视觉数据。原创 2023-08-31 22:13:47 · 1303 阅读 · 0 评论 -
R3LIVE源码解析(7) — R3LIVE中LiDAR_front_end.cpp文件
激光点云首先在LiDAR_front_end节点中提取特征点,将处理完的信息通过完成节点的发送出去,与FAST-LIO2相同R3LIVE也只用到了面特征作为ESIKF融合。首先主函数会根据不同的雷达类型运行不同的回调函数接着通过give_feature()提取角点和面点提取面点时,通过plane_judge()面点类型的判断提取过程中,会进行边缘点判断,也就是LOAM论文中的进行异常点剔除最后将提取的角点和面点发布出去。原创 2023-09-02 11:17:59 · 468 阅读 · 0 评论 -
R3LIVE源码解析(8) — R3LIVE中r3live.cpp文件
我们在R3LIVE流程解析中提到R3LIVE主要由两个node节点所依赖的cpp文件组成,我们在上一节中完成了r3live_LiDAR_front_end简单介绍,下面我们需要详细的看这个节点。这个节点也是我们R3LIVE的核心。r3live.cpp文件的主要是进行一系列的初始化,然后创建LIO线程。原创 2023-09-05 17:21:56 · 415 阅读 · 0 评论 -
R3LIVE源码解析(9) — R3LIVE中r3live_lio.cpp文件
在r3live.cpp文件中创建LIO线程后,R3LIVE中的LIO线程本质上整体流程和FAST-LIO2基本一致。原创 2023-09-05 22:14:26 · 514 阅读 · 0 评论 -
R3LIVE源码解析(10) — R3LIVE中r3live_vio.cpp文件
R3LIVE主要的公式推导在VIO上,所以我们来细细的分析这部分的功能。R3LIVE将VIO分成了两步,一是直接通过帧间的光流来追踪地图点,并且通过最小化追踪到的地图点的PNP投影误差来获取系统状态;二是通过这些地图点的出现的帧到地图的光度误差来优化状态。原创 2023-09-14 22:47:06 · 612 阅读 · 0 评论 -
R3LIVE源码解析(11) — livox_camera_calib标定论文翻译
在本文中,我们提出了一种新颖的方法,用于在无目标环境中自动外部标定高分辨率激光雷达和RGB相机。我们的方法不需要棋盘格,但可以通过对两个传感器中的自然边缘特征进行对齐,实现像素级的精度。在理论层面上,我们分析了边缘特征所施加的约束以及与场景中边缘分布相关的标定精度的敏感性。在实施层面上,我们仔细研究了激光雷达的物理测量原理,并提出了一种基于点云体素分割和平面拟合的高效准确的激光雷达边缘提取方法。由于自然场景中边缘的丰富性,我们在许多室内和室外场景中进行了实验。原创 2023-09-09 11:46:19 · 469 阅读 · 0 评论 -
动态SLAM论文(1) — A survey: which features are required fordynamic visual simultaneous localization
近年来,动态环境下的同时定位与建图(动态SLAM)引起了学术界和工业界的广泛关注。一些开创性的工作扩展了机器人应用的潜力。翻译 2023-06-20 19:00:12 · 646 阅读 · 0 评论 -
动态SLAM论文(2) — DynaSLAM: Tracking, Mapping and Inpainting in Dynamic Scenes
场景刚性性的假设是SLAM算法中的典型假设。这样强大的假设限制了大多数视觉SLAM系统在人口稠密的现实世界环境中的使用,这些环境是多个相关应用的目标,如服务机器人或自动驾驶车辆。本文介绍了DynaSLAM,这是一个建立在ORB-SLAM2[1]基础上的视觉SLAM系统,它增加了动态物体检测和背景修复的能力。DynaSLAM在单目、立体和RGB-D配置下对动态场景非常稳健。我们能够通过多视角几何、深度学习或两者结合来检测移动物体。拥有场景的静态地图允许修复被这些动态物体遮挡的帧背景。翻译 2023-06-24 15:30:30 · 1014 阅读 · 0 评论 -
动态SLAM论文(3) — Detect-SLAM: Making Object Detection and SLAM Mutually Beneficial
近年来,在SLAM和目标检测方面取得了显著进展,但仍存在一系列挑战,例如在动态环境中进行SLAM和在复杂环境中检测目标。为了解决这些挑战,我们提出了一种新颖的机器人视觉系统,将SLAM与基于深度神经网络的目标检测器集成在一起,使这两个功能相互受益。所提出的系统能够在未知和动态环境中可靠高效地完成任务。实验结果表明,与最先进的机器人视觉系统相比,所提出的系统具有三个优点:原创 2023-06-30 17:23:35 · 1267 阅读 · 0 评论 -
动态SLAM论文(4) — DS-SLAM: A Semantic Visual SLAM towards DynamicEnvironments
— SLAM被认为是智能移动机器人的基本能力。在过去的几十年里,许多令人印象深刻的SLAM系统已经被开发出来,并在特定环境下取得了良好的性能。然而,仍然存在一些问题尚未得到很好的解决,例如如何处理动态环境中的移动物体,如何使机器人真正理解周围环境并完成高级任务。本文提出了一种面向动态环境的稳健语义视觉SLAM(DS-SLAM)。DS-SLAM中有五个线程并行运行:跟踪、语义分割、局部建图、闭环检测和密集语义地图创建。翻译 2023-07-01 19:04:48 · 2964 阅读 · 0 评论 -
动态SLAM论文(5) — SOF-SLAM: A Semantic Visual SLAM for DynamicEnvironments
本文提出了一种面向动态环境的视觉语义SLAM系统,即Semantic Optical Flow SLAM (SOF-SLAM),该系统是建立在ORB-SLAM2上的。该框架旨在在动态环境中使系统更加准确。所提出的SOF-SLAM系统可以通过我们的动态特征检测和移除方法,即语义光流,在紧密关联的方式下利用几何和语义信息高度减少环境中动态物体的影响。翻译 2023-07-04 19:26:39 · 511 阅读 · 0 评论 -
动态SLAM论文(6) — Dynamic-SLAM: Semantic monocular visual localization and mapping...
在动态环境中工作时,传统的SLAM框架由于受到动态物体的干扰而表现不佳。为了解决动态环境下SLAM的问题,提出了一种基于深度学习的语义同时定位与地图构建(Dynamic-SLAM)框架。首先,基于卷积神经网络构建了一个结合先验知识的SSD目标检测器,用于在新的检测线程中以语义级别检测动态物体。然后,针对现有SSD目标检测网络的低召回率问题,提出了一种基于相邻帧中速度不变性的漏检补偿算法,大大提高了检测的召回率。原创 2023-07-05 21:20:50 · 1324 阅读 · 2 评论 -
动态SLAM论文(7) — DOT: Dynamic Object Tracking for Visual SLAM
图2展示了我们提案的概述。DOT的输入可以是以某一定视频速率拍摄的RGB-D或立体图像,输出是编码场景的静态和动态元素的掩码,可以直接供SLAM或里程计系统使用。图2. DOT的概述。路径A(红色)显示从网络获得分割掩码的帧的处理过程。路径B(绿色)显示通过DOT几何传播获得分割掩码的帧的处理过程。第一个块(实例分割)对所有可能的动态物体进行逐像素的分割的CNN。在我们的实验中,使用自动驾驶数据集,只对车辆进行了分割,认为它们是可能的运动物体。原创 2023-07-06 15:54:13 · 784 阅读 · 2 评论 -
动态SLAM论文(8) — DynaSLAM II: Tightly-Coupled Multi-Object Tracking and SLAM
— 在视觉SLAM算法中,假设场景是刚性的是常见的。然而,这限制了它们在真实环境中的适用性。此外,大多数情况,包括自动驾驶、多机器人协作和增强/虚拟现实,都需要明确的周围运动信息来帮助决策和场景理解。本文介绍了一种名为DynaSLAM II的视觉SLAM系统,用于立体和RGB-D配置,并紧密集成了多目标跟踪能力。DynaSLAM II利用实例语义分割和ORB特征来跟踪动态物体。静态场景的结构和动态物体的结构与摄像机和移动主体的轨迹一起在新颖的束调整提议中进行优化。原创 2023-07-07 20:26:26 · 856 阅读 · 0 评论 -
DynaSLAM代码详解(1) — RGBD模式DynaSLAM运行流程
随后开始进行图像分割,对分割的结果利用膨胀操作;最后根据不同的参数利用不同的TrackRGBD函数开启跟踪线程,并将跟踪线程输出的结果imRGBOut,imDOut, maskOut 保存到创建的文件路径中。:因为有关于图像分割的操作,因此在设置了图像膨胀的相关参数,后面也创建了相关的的文件路径用于TrackRGB中的输出imRGBOut,imDOut,maskOut。检查和加载相关的配置文件,首先判断传入的参数数是否符合要求,然后进行变量的声明用于存放彩色图像、深度图像的路径,以及对应的时间戳的变量。原创 2023-07-09 17:00:23 · 1514 阅读 · 0 评论 -
DynaSLAM代码详解(2) — Mask RCNN物体检测框架
Mask R-CNN是何恺明大神于2017年发表的文章,该论文也获得了ICCV 2017的最佳论文奖(Marr Prize)。Mask R-CNN是一个非常灵活的框架,可以增加不同的分支完成不同的任务,可以完成目标分类、目标检测、语义分割、实例分割、人体姿势识别等多种任务。Mask R-CNN是在Faster R-CNN的基础上加了一个用于预测目标分割Mask的分支(即可预测目标的Bounding Boxes信息、类别信息,也可以预测分割Mask信息)。原创 2023-07-10 15:35:48 · 1188 阅读 · 0 评论