自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

avenger_fang的博客

致力于机器人、SLAM、自动驾驶相关的探索与学习

  • 博客(46)
  • 收藏
  • 关注

原创 ubuntu 设置环境变量和程序调库路径

通过ldd可知程序运行链接的是robot下的glog,既然运行程序报error,说明robot下面的glog不包含_ZN6google21kLogSiteUninitializedE这个量,怀疑是在别的库包含这个量。通过上述两个的PATH和LD设置,也许能解决某个库的冲突,但是并不非常高效,这时解决方法:在cmake中 使用。设置库的路径,这里的设置在原来路径之上添加,可以看到保留了原来的$LD_LIBRARY_PATH。在其中找到库的位置,即可实现对此程序的库查找。找到当前运行时连接的glog。

2023-06-08 09:03:30 2330

原创 视觉VIO之-open_vins 环境搭建

为了学习,我这边从一个新Ubuntu18.04系统开始,单纯的环境来尝试open_vins。已经看了一遍MSCKF论文了,还有open-vins的论文。需要翻墙,/(ㄒoㄒ)/~~ 有没有可以翻墙的方法。等待安装成功,检测roscore、小海龟校验安装成功;6.安装ceres库,选择1.14.x版本;1.安装buntu18.04系统,不用多说。3.有了上面的编译器就可以安装cmake了。看完论文开始研究代码。

2023-04-26 19:36:20 919 1

原创 fast-lio2代码解析

代码结构很清晰,从最外层看包含两个文件夹,一个是fast-lio,另外一个是加上scan-context的回环检测与位姿图优化。

2023-04-13 17:30:51 2664

原创 伯克利BLAM纯激光SLAM

PointCloudFilter.cc是点云预处理算法,封装成库,而point_cloud_filter.cc只是提供测试的一个接口,用来 验证点云预处理,只有ros初始化和main入口。而BlamSlam.cc为为SLAM算法接口,它封装成库, main程序通过它进入算法,包括ros的初始化、参数读取、传感器数据回调等。- point_cloud_filter:对输入的点云数据进行如进行统计滤波处理,得到过滤后的点云数据。对当前帧的点云数据与历史点云数据对比判断回环是否发生,发布位姿数据。

2023-03-29 17:57:12 610 2

原创 PointLocalization: Real-Time,Environmentally-Robust3D LiDAR Localization

港科大2019论文Abstract定位或位置确定是机器人技术研究中的一个重要问题。在本文中,我们提出了一种利用三维激光雷达在不断变化的环境中进行的新方法。我们首先使用GPS和激光雷达创建一个真实环境的地图。然后,我们将地图划分为几个小部分作为点云配准的目标,这不仅提高了鲁棒性,而且还减少了配准时间。点定位技术使我们能够融合不同类型的里程计,这可以优化定位结果的准确性和频率。我们使用激光雷达和车轮编码器在无人地面车辆(UGV)上评估了我们的算法,并获得了融合后20 Hz以上的定位结果。

2023-03-27 16:28:03 346

原创 2014ICRA 宾大沈邵杰 《Multi-Sensor Fusion for Robust Autonomous Flight in Indoor andOutdoor Environments》

第一个关键的贡献,是我们工作的核心,是一个有原则的方法,建立在[11]的基础上,通过增加车辆状态和以前的状态的副本来融合相对测量,创建一个增强的状态向量,使用过滤框架获得和保持一致的估计。然而,这种融合是次优的,因为。最后,我们用一个新的实验平台(图1)来演示结果,以说明我们的框架在大规模的室内外自主空中导航实验中的鲁棒性,该实验包括平均速度超过440米,风速约为每小时10英里。我们强调,尽管基于SLAM的多传感器融合方法[12,13]产生最优结果,但对于自动控制的实时状态反馈,它们的计算成本是昂贵的。

2023-03-22 17:43:43 261

原创 武大《GIL: a tightly coupled GNSS PPP/INS/LiDAR method for precise vehicle navigation》

GIL:一种紧密耦合的GNSS PPP/INS/激光雷达方法,用于精确的车辆导航。

2023-03-22 10:19:40 388

原创 武汉大学《GNSS、INS和激光雷达的紧密耦合预积分,用于城市环境中的车辆导航》

定位和导航的需求不断增长。目前,全球导航卫星系统(GNSS)被认为是全球定位服务的重要手段。然而,由于严重的信号衰减、反射和阻塞,其在城市地区的应用受到了限制。惯性导航系统(INS)可以在短时间内提供高精度的导航输出,但其精度存在误差累积的问题,特别是在配备低成本的2微纳制造的(MEMS)惯性测量单元(IMUs)时。此外,光检测和测距(LiDAR)在车辆中越来越普遍,它可以检测环境中丰富的几何信息,从而进行自我运动估计。针对利用这些车载技术的互补特点。

2023-03-21 17:45:42 1047

原创 A portable three-dimensional LIDAR-based system for long-term and widearea people behavior measurem

目录 AbstractIntroductionRelated WorkSystem OverviewOfflfline Environmental MappingGraph SLAMGround Plane ConstraintGPS ConstraintSLAM framework evaluationOnline People Behavior MeasurementSensor LocalizationPeople Detection and TrackingSensor Localization E

2023-01-10 10:47:15 333

原创 ART-SLAM: Accurate Real-Time 6DoF LiDAR SLAM

Abstract意大利米兰理工学院Abstract地面车辆实时六自由度姿态估计,由于自动驾驶和三维建图等诸多应用,是机器人技术中一个相关和被研究广泛的课题。虽然有些系统已经存在,但它们要么不够准确,要么在实时运行中比较局限。在本文中,我们提出了一种快速、准确和模块化的激光雷达系统。我们首先应用降采样和离群值去除,以过滤噪声,减少输入点云的大小。过滤后的点云被用于姿态跟踪和地面检测,以地面优化估计的轨迹。

2023-01-09 16:35:06 835

原创 2020 ICRA论文《Real-Time Graph-Based SLAM with Occupancy Normal DistributionsTransforms》

仅仅将一些基于NDT的匹配器[6]、[7]与ICP进行了比较,ICP是一种帧到帧匹配的标准方法,不再在最先进的SLAM实现中使用。正如Biber和斯特拉瑟[2 二维NDT论文]在最初的出版物中提出的那样,我们的(O)NDT地图由多个相同分辨率的子地图组成,沿着不同的轴移动了分辨率的一半。这可以用数值方法来解决,例如用ALGLIB [20]中的LM方法或NLopt [21]提供的不同方法,从中我们发现NEWUOA [22]最好,或者使用自动推导和适当的求解器来解析,例如用Ceres [18]。

2023-01-09 11:02:30 417

原创 《NDT-LOAM: A Real-Time Lidar Odometry andMapping With Weighted NDT and LFA》深大学生

不同的是,我们的里程计采用正态分布变换(NDT)方法,而不是在里程计模块中直接有效地提取与匹配扫描的特征点,也就是说,基于NDT的里程计在图1中称为直接里程计(DO)。然而,为了在KITTI里程计基准上达到可能的最大精度,激光雷达建图实际上以与激光雷达里程计基准相同的频率运行,并处理每个单独的扫描,运行在1 HZ,是传感器实时速度的10%。sC定义为sC =cC 1、cC 2、...,cnC,sS定义为sS =cS 1、c2 S,...,cS m,n和m分别为角和表面特征对应的个数。

2023-01-06 09:09:09 1018

原创 《Point Localization: Real-Time,Environmentally-Robust3D LiDAR Localization》2019 港科Ming Liu, Rui Fan

Zhang [7]提出了一种名为激光雷达测程和映射(LOAM)的方法,该方法利用激光雷达得到点云图,并利用角点和平面点的距离来优化LM方法的目标。在我们的测试车辆上,我们使用霍尔效应传感器作为我们的车轮速度传感器,用来测量磁场的大小。图1显示了我们的图的结构,我们将Gk设置为由GPS数据生成的固定节点,Pk表示SE (3)中的激光雷达位姿。在提出的地图部分,我们添加了一个GPS约束和环闭包约束,得到了一个无漂移的地图,该基于GPS的建图方法算法可以实现实时性能。来验证我们的算法的准确性。

2023-01-04 11:47:49 301

原创 cmake安装版本过高问题带来基础编译问题

当出现这个问题时,经过一番搜索找到相关解答是gcc版本升级,这或许不能解决问题,经过多次重装系统测试,在ubuntu16.04下,若cmake 版本过高,则可能出现此问题,通常使用cmake3.18以上版本会出现此问题,当我把cmake版本安装为3.14版本时,不会出现此问题。通常选择源码安装最为方便,但记得将系统默认的/usr/bin下面的cmake或者cpack用源码编译好的/usr/local/bin/cmake 进行拷贝或者软链接。上面的是3.18版本,别装太高级版本就好。上面的是3.14版本。

2023-01-03 15:21:34 1080

原创 SLAM基础知识记录--数学知识--方向余弦矩阵与等效旋转变量

在惯导的使用中,我们时常要使用到姿态的更新,这里复习一些关于姿态变化的相关知识。两个坐标系之间的关系,可以通过描述,即我们通常熟悉的旋转矩阵SO(3)。根据欧拉转动定理,刚体从一个位置到另一个角位置的任意转动总能够等效于绕某一固定轴的一次转动,这一固定轴和转角就构成了的概念。我们将记为从b系到i系的坐标变换矩阵,也就是从i系到b系得坐标系变换矩阵,这里可以总结:i系为参考坐标系,放到上方,b系为动坐标系,放在下方。

2022-12-02 15:02:02 927

原创 c++ 11 vector push_back和emplace_back速度比较

对比pushback 和 emplace_back时间耗时

2022-11-08 20:35:14 958

原创 C语言数组按行优先遍历

如果命中,会得到其物理地址,之后会访问cache缓存,如果cache中有要访问的数据,那么本次访问就结束,如果没有,就到内存中寻找,并更新cache缓存;而内存的物理地址中,二维数组是以行优先的顺序存储,测试图像数据大小为4096X1200字节,假设内存页为4096字节,那么按行优先遍历,遍历完一行则中断一次缺页,整个过程只需要中断1200次缺页异常,进行页替换。在内存中,数组是连续分布的。数组在内存中是按行优先存储的,在虚存环境下,如果整个数组没有在内存中的话可以比列优先减少内存换进换出的次数。

2022-11-08 19:43:33 1421 2

原创 Eigen 欧拉角的说明,及四元数和旋转矩阵的变换

本文说明eulerAngles(0, 1, 2),和eulerAngles(2, 1, 0)的差异,并顺便将欧拉角、旋转矩阵、四元数一块的联系

2022-10-14 11:52:55 6223

原创 LIO-SAM前端点云去畸变源码-imageProjection.cpp解析

以上两个畸变计算补偿量是独立的,独立计算IMU数据在当前处理帧(上一激光帧)的角度变化量,并存下来作为数值以备使用;同理里程计也是类似,不同的是,里程会记录下当前处理帧(上一激光帧)点云开始时刻的里程计的测量值,包括位置和姿态,其坐标量为odom topic的坐标系。遍历当前处理帧(最新回调进的一个帧的前一帧)点云的每一个点,每一个点都不错过,然后调用去畸变的函数deskewPoint(&thisPoint, laserCloudIn->points[i].time)去这一个点的畸变。

2022-10-04 16:02:03 1782

翻译 卡尔曼滤波器从入门到放弃

【总结卡尔曼滤波器使用流程】1.第一步,我们根据前一时刻的状态X和前一时刻的估计不确定性P,根据系统的模型,包括是否带有控制,系统的微分方程得到系统的外推方程,通过系统模型,来估计下一时刻的状态。初始估计X(先验)和初始估计的不确定性P。初始估计的不确定维度和状态维度一致。反映出每一个状态的估计不确定性(方差)。建立微分方程,获得外推方程的状态转移矩阵F和控制矩阵G2.估计系统的过程噪声,过程噪声的设定,是选用离散形式还是连续形式,其值怎么确定?

2022-09-22 17:56:29 2310

翻译 矩阵相关知识回顾--协方差的意义

这里通过探索线性变换与所得数据协方差之间的关系,提供协方差矩阵的直观几何解释。大多数教科书基于协方差矩阵的概念来解释数据的形状。相反,这里采用向后的方法,并根据数据的形状解释协方差矩阵的概念。使用下图来显示标准差,作为方差的平方根,提供了数据在特征空间中分布的量度。高斯密度函数。对于正态分布的数据,68% 的样本落在均值加减标准差所定义的区间内。我们表明,可以通过以下方式获得样本方差的无偏估计:然而,方差只能用来解释数据在平行于特征空间轴的方向上的分布。

2022-09-21 20:33:48 1829

翻译 (一)卡尔曼滤波器前述- α−β−(γ)滤波器

当前状态估计基于状态更新方程;状态的下一个估计值(预测值)基于动态模型方程;这些滤波器之间的主要区别在于加权系数 α−β−(γ)的选择。有些滤波器使用恒定的加权系数,有些则需要在每次迭代(循环)时计算加权系数。Wiener Filter 维纳滤波Bayes Filter 贝叶斯滤波Least-squares Filter 最小二乘法滤波Kalman Filter 卡尔曼滤波Extended Kalman Filter 扩展卡尔曼滤波。

2022-09-21 09:42:58 1107

原创 惯性导航坐标系介绍

常用坐标系定义运载体中三维空间运动包含六个自由度,既有角运动也有线运动。在地球表面附近,运载体的角运动描述一般以当地水平面和地理北向为参考基准。

2022-04-12 10:22:02 4380

原创 FAST-LIO: A Fast, Robust LiDAR-inertial Odometry Package byTightly-Coupled Iterated Kalman Filter

【摘要】本文提出了一种计算效率高、鲁棒性强的激光雷达-惯性里程计框架。我们使用紧密耦合的迭代扩展卡尔曼滤波器将激光雷达特征点与IMU数据融合,以允许在快速运动、有噪声或杂乱的环境中进行鲁棒的导航。为了降低存在大量测量值时的计算负荷,我们提出了一个新的计算卡尔曼增益的公式。新公式的计算负载取决于状态维度,而不是测量维度。所提出的方法及其实现已在各种室内外环境中进行了测试。在所有的测试中,我们的方法实时产生可靠的导航结果:在四旋翼计算机上运行,它在扫描中融合超过1200个有效特征点,并在25...

2022-04-08 09:41:35 714

原创 SLAM基础知识记录--数学知识--反对称阵

反对称阵及其矩阵指数函数通过对比可以发现,2.1.1式和2.1.2式是相等的,也就是说若定义下式为反对称阵

2022-04-07 20:15:06 2656

原创 《Visual-lidar Odometry and Mapping: Low-drift, Robust, and Fast》论文阅读

【摘要】在这里,我们提出了一个通用的框架,以结合视觉里程计和激光雷达里程计在一个基本和第一原理的方法。该方法在性能上有所改进,特别是在对剧烈性运动的鲁棒性和暂时缺乏视觉特征方面。所提出的在线方法从视觉里程计法开始,以估计自我运动,并在高频率但低精度度的扫描激光雷达上配准点云。然后,基于scan匹配的激光雷达里程计法同时精练了运动估计和点云配准。我们用在我们自己的实验中收集的数据集以及使用KITTI里程计基准来显示结果。我们提出的方法在平均平移和旋转误差方面在基准测试集上排名第1,相对位置...

2022-03-22 11:55:48 445

原创 fast-lio2论文阅读 《FAST-LIO2: Fast Direct LiDAR-inertial Odometry》

【摘要】本文提出了FAST-LIO2:一个快速、鲁棒和通用的激光雷达惯性里程计框架。FAST-LIO2基于一个高效的紧密耦合迭代卡尔曼滤波器,FAST-LIO2有两个关键的新特性,允许快速、鲁棒和精确的激光雷达导航(和建图)。第一个方法是将原始点直接配准到地图上(随后更新地图,即建图),而不提取特征。这使得我们能够利用环境中的微妙特征,从而提高了准确性。消除了手工设计的特征提取模块,也使它自然地适应不同扫描模式的激光雷达;第二个主要的新颖之处是通过增量k-d树数据结构ikd-Tree维...

2022-03-15 15:26:31 6027 5

原创 《LeGO-LOAM: Lightweight and Ground-OptimizedLidar Odometry and Mapping on Variable Terrain》论文精读

【摘要】我们提出了一种轻型的、基于地面优化的激光雷达里程计与建图方法,LeGO-LOAM,用于地面车辆的实时六自由度姿态估计。LeGO-LOAM是轻量级的,因为它可以在低功耗嵌入式系统上实现实时姿态估计。LeGO-LOAM是基于地面优化的,因为它在其分割和优化步骤中利用了地面平面的存在。我们首先应用点云分割来过滤噪声,以及特征提取来获得独特的平面和边缘特征。然后采用两步LM优化方法,利用平面和边缘特征来解决连续扫描中的六个自由度变换的不同分量。我们比较了LeGO-LOAM与最先进的方法L...

2022-03-04 11:02:38 1397

原创 Eigen问题解决:eigen_assert_exception’ is not a member of ‘Eigen’

在更新eigen库从eigen3.2.9到3.3.8之后,之前在编译fast-lio2时候是可以编译通过的,但是更新之后就不行了,报了个错:/usr/include/eigen3/Eigen/src/Core/products/Parallelizer.h: In function ‘void Eigen::internal::parallelize_gemm(const Functor&, Index, Index, Index, bool)’:/usr/include/eigen3/Eig

2022-03-02 16:41:52 2117 1

原创 f-loam代码分析

两年前,南洋理工的王晗等人在loam的基础上,为减少计算量,提出了一个也是纯激光SLAM的工程,也在IROS上发表一篇文章《F-LOAM : Fast LiDAR Odometry and Mapping》。整体来看和loam的算法没有太大差异,只是工程上进行缩减,在我自己的数据包上实际测试效果也还不错吧。A 传感器模型与特征提取机械式三维激光雷达通过旋转一个尺寸为M的垂直排列的激光束阵列来感知周围的环境。它用M个平行读数扫描垂直面。在每个扫描间隔期间,激光阵列在水平面上以恒定速度旋转,同时激光

2022-03-02 15:09:24 4065

原创 记录error: ‘ScalarBinaryOpTraits’ is not a class template struct ScalarBinaryOpTraits<ceres::Jet<T, N>

记录在编译含有ceres和eigen3时出现的bug,可能会在编译loam-livox中或f-loam出现。1. 会出现/usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:16: error: ‘integer_sequence’ is not a member of ‘std’ struct SumImpl<std::integer_sequence<T, N, Ns...>> {的问题,是

2022-03-01 17:29:32 2038

原创 通过shell脚本,开启多个终端开机自启动多个节点

#! /bin/bashecho "Mappping Start!"source /opt/ros/kinetic/setup.bash#source $HOME/catkin_ws_fang/devel/setup.bash#source $HOME/catkin_ws/devel/setup.bashsleep 2# open the LeGO-LOAM launchgnome-terminal -x bash -c "source /opt/ros/kinetic/setup.bas

2022-02-28 20:53:40 1089

原创 LOAM论文精读

《Low-drift and real-time lidar odometry and mapping》概要论文提出了一种使用3D激光雷达在移动中实时实现低漂移6-DOF里程计和建图的方法。这个问题很困难,因为激光距离测量是在不同的时间接收到的,而且运动估计的误差(特别是没有外部参考,如GPS)会导致结果点云的配准错误。实现这种方法的关键思想是分级策略,使用一种算法在高频但低保真度下执行里程计来估计激光雷达的速度。虽然不一定必须要IMU,但如果IMU可用,它可以提供一个运动先验和减轻剧烈的,高频

2022-01-28 17:43:58 2436

原创 《Falco: Fast likelihood‐based collision avoidance withextension to human‐guided navigation》论文翻译

摘要:我们提出了一种在杂乱环境中实现快速自动飞行的规划方法。通常,在复杂环境中的自主导航需要对由k个连接栅格或概率方案生成的图进行连续搜索。随着车辆的行驶,使用来自机载传感器的数据更新图的代价是巨大的,而在图上的搜索的代价也是巨大的,特别是需要让路径符合动力学约束的。我们计划通过避免在线搜索来减少计算的复杂度。我们的方法在两个独立分开的区域对环境进行建模。障碍物被认为是在传感器范围内是确定已知,在传感器范围外是概率性已知。该方法不是搜索代价最低的路径(通常是最短的路径),而是最大化在当前...

2022-01-28 10:46:12 462

原创 ROS主从机设置[简述实测版]

主从机配置

2022-01-24 21:39:51 4647

原创 fast-lio2实例运行

fast-lio2也是出来没多久,它是港大Mars实验室大佬们开源的一套框架,论文也仔细看了一下,后续会分享。它与其他激光雷达SLAM不同在于,现在大部分Lidar SLAM都是基于loam进行改造的,基本上是通过线特征edge和面特征(面点)分割进行配准得到里程计的,而fast-lio2是通过一个迭代扩展卡尔曼滤波器去优化帧内位姿,然后通过输入点云与地图进行配准得到里程计,精度和鲁棒性都不错。至于原理,回头单独写一下,只需要知道它与loam系不同就可以,能实现高速运动校准,用于UGV、UAV都可以,计算资

2021-11-30 22:18:42 8859 27

转载 ubuntu16.04 同时安装pcl1.7与pcl1.8

由于需要使用pcl1.8,但事前已经安装过ros,因此ros中有自带的pcl1.7。然后就在纠结要不卸载,后面发现可以共存。

2021-11-30 15:29:08 771

原创 cartographer之运行自己的bag包

要注意的是:在carto src目录下改变文件之后,不仅仅是代码,配置文件及launch文件之后,需要重新编译一下,系统会将改变后的文件安装到指定目录,才会生效。参考carto的3D 的demo,从launch文件看起:<launch> <param name="/use_sim_time" value="true" /> <include file="$(find cartographer_ros)/launch/backpack_3d.launch" .

2021-10-07 15:47:33 2111 6

原创 cartographer运行实例过程

自己记录一下学习cartographer过程1.编译好cartographer,不能出现报错catkin_make_isolated --install --use-ninjasource install_isolated/setup.bash2.运行官方提供的数据包# Launch the 2D backpack demo.roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:= 绝对目录/cartogra.

2021-10-04 14:07:05 1538 1

原创 ubuntu16.04 Cmake版本升级3.12

随着代码版本更新,cmake版本也需要提高;ubuntu16.04是比较稳定的版本,软件支持也很好,其默认cmake版本为3.5,可以通过cmake --version查看;现在网上的教程比较杂乱,有一个很快的方法升级cmake。以下正文:1.前往官网下载:https://cmake.org/download/选择一个版本下载,此处我选择3.12版,不高不低比较好;2.解压tar.gz到一个目录中cd /downloadstar -zxvf cmake-3.12..

2020-11-06 18:58:52 1364

空空如也

空空如也

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

TA关注的人

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