在这篇博客中介绍了Livox的时间硬件同步的3种方法,其中有一种方法是通过PPS信号的方式,信号时间同步。本篇通过STM32 TIM3定时器的更新中断,产生符合要求的PPS信号。 Livox对PPS信号的要求 Livox对PPS信号的要求如下图:其中GPRMC的要求可以不用管,得到两个有用的信息: 相邻两次秒脉冲上升沿的间隔时间 有效范围 900-1100ms 推荐值,1000ms 秒
前言 在这篇博客中工业相机:Flir Blackfly S—-配置多个摄像头进行同步拍摄方法介绍了如何通过主副相机进行多个摄像头同步拍摄。 还有一种方法可以实现多个摄像头同步拍摄,即通过外部触发的方式,所有摄像头的触发信号接同一触发源,即可严格的实现同步拍摄 本篇博客主要介绍 如何通过STM32F4 的 TIM14 来产生 PWM 输出,输出频率为20hz及25hz,高电平占比为周期前10%
本博客主要内容为: 介绍 Blackfly S相机使用的色彩校正矩阵(CCM,color correction matrix) 并展示了如何计算出自定义的CCM。 通过代码进行颜色校正和自定义CCM配置 我们看到的相机拍摄的照片,其实不是相机直接获取的样子,需要经过各种处理,例如白平衡、颜色校正等等,最后才是显示出来被我们眼睛看到,当然各种处理的最终目标就是让我们眼睛看到的照片和我
白平衡基本概念 白平衡是图像基础颜色强度(红色、绿色和蓝色通道)的调整。 白平衡也称为色彩平衡或灰平衡,用于根据各种照明条件改变图像的整体表现,以反映我们眼睛所看到的内容。 照明条件在图像的表现中起着重要作用。白平衡缩放图像中的三个颜色分量 (RGB) 以适应照明条件。 白平衡的功能 一般原始的图像是单色图像,通过将所有颜色进行插值才成为了彩色图像也就是说通过插值方法转换为彩色图像,图像
自动曝光 自动曝光通过调整增益和曝光时间来优化图像的亮度。 自动曝光在相机中进行的话则减少了CPU后期的处理运算。 什么是目标灰度值(曝光值) 目标灰度值是一个参数,通过调整亮度,来实现在多种光线强度下输出优化后的图像结果该值是线性的,是最大像素值的百分比。 在各种数码相机中,目标灰度值称为曝光值,是根据光圈大小、f-stop 和快门时间估算的。 如何辨别曝光值是否正确 图像像素强度
本篇博客技术内容可以应用于 FLIR 的网口和USB3的相机 Flir Blackfly S USB3 产品介绍 Blackfly S 采用业内先进的冰块外形传感器。具有强大功能,可以轻松生成所需的精确图像,并加速应用程序开发。包括对图像捕获和相机预处理的自动和精确手动控制。Blackfly S 提供GigE、USB3、套装和板级版本。精确图像 索尼CMOS传感器中的选择包括:全局快门、偏振和
Flir Blackfly S 工业相机介绍 Blackfly S 采用业内先进的冰块外形传感器。具有强大功能,可以轻松生成所需的精确图像,并加速应用程序开发。包括对图像捕获和相机预处理的自动和精确手动控制。Blackfly S 提供GigE、USB3、套装和板级版本。精确图像 索尼CMOS传感器中的选择包括:全局快门、偏振和高灵敏度BSI传感器。 实物图如下: 同步拍摄概念 同步拍摄是指
本文档概述了 Blackfly S 相机中的计数器和定时器的使用方法。 Blackfly S 采用业内先进的冰块外形传感器。具有强大功能,可以轻松生成所需的精确图像,并加速应用程序开发。包括对图像捕获和相机预处理的自动和精确手动控制。Blackfly S 提供GigE、USB3、套装和板级版本。精确图像 索尼CMOS传感器中的选择包括:全局快门、偏振和高灵敏度BSI传感器。 实物图如下: 概
前言 Ouster 公司简介 Ouster Inc.成立于2015年,由激光雷达领域内独角兽Quanergy的前联合创始人Angus Pacala创立,总部设置在美国旧金山。 它是一家激光雷达研发生产商,产品包括OS0、OS1、OS2三个系列9款激光雷达。 Ouster致力于构建用于大规模应用的新一代激光雷达传感器,致力于提高产品分辨率、可视距离和外形尺寸等参数, 基于MBF多光束闪光基础
前言 在进行机器人进行slam的时候往往单一的传感器不能实现强鲁棒性,很多时候需要用到多个传感器的融合,例如激光雷达+相机+IMU+GPS+轮速计+毫米波雷达等等。 在进行多传感器融合的时候就涉及到了数据帧的对应,如果需要用时间戳去对应的话,那么则需要进行时间同步。由于数据的传输接收等存在不同程度的延时,数据的产生频率也不相同,如果仅用软同步的话,那么必然会存在一定偏差,导致数据对准不精确,那
DS1302时钟芯片介绍 DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31 字节静态RAM ,通过简单的串行接口与单片机进行通信。 芯片得实物图张下面这个样子:一般会又晶振电路,备用电源等组成集成电路构成实时时钟,实物如下: 其中,实时时钟/日历电路,提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。 静态RAM得存在使得可以对
本篇主要介绍:stm32f103 ADC读取电压 采集土壤湿度传感器(XH-M214)数据 XH-M214简介 XH-M214的实物张这个样子: 那个像叉子的是传感器,测量土壤水分随土壤电导率的变化而变化(土壤电阻随干旱而增加)。在传感器的两个电极之间测量电阻。蓝色模块是一个电压比较器和一个分压电路,其引脚定义如下:一个是模拟信号输出,及测量的土壤湿度,还有一个开关信号输出,因为有个比较器嘛
DHT11是一款数字温湿度传感器。 含有已校准数字信号输出的温湿度复合传感器; 传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接; 单线制串行接口,信号传输距离可达20米以上。 测量范围及精度 :20-90%RH ±5%RH0-50℃ ±2℃ DHT11硬件部分 电源引脚:DHT11的供电电压为3-5.5V。传感器上电后,要等待1s 以越过不稳定
Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。在之前的博客说了,图优化的本质就是一个非线性优化问题.所以ceres刚好适用图优化问题的解决.在进行特征点匹配后进行迭代的优化最优变换位姿时也可以使用ceres. ceres简介 Ceres可以解决边界约束鲁棒非线性最小二乘法优化问题。这个概念可以用以下表达式表示
上几篇从slam图优化的原理到理论到理论应用最后到代码的实现进行了梳理.本篇趁热打铁,将开源库g2o进行之前例子的应用,实现图优化. 首先进行G2O的简介 G2O简介 G2O(General Graphic Optimization)在SLAM领域,基于图优化的一个用的非常广泛的库就是g2o,是一个用来优化非线性误差函数的c++框架. 安装:参考GitHub上官网按照步骤来安装就行了。
基于非线性最小二乘的图优化—代码实现 在上一篇介绍了如何应用非线性最小二乘来在slam中实现图优化 在SLAM中应用非线性最小二乘实现图优化这篇在其基础上,将代码实现,并进行测试.一定要看懂原理再来看代码 位姿向量转换成变换矩阵 在公式中经常需要把位姿向量转换成变换矩阵,例如: 观测值为匹配计算得到的节点i和节点j的相对位姿:这里的第二行V2T的公式就是把位姿向量转换成变换矩阵.代码写成函数的形式
在前面介绍了 :slam中图优化的基本概念 SLAM中的图优化—-基本概念及Rviz显示位姿图code非线性最小二乘的理论 SLAM中的图优化—-本质理论-非线性最小二乘 本篇介绍如何在SLAM中应用非线性最小二乘实现图优化 非线性最小二乘在 SLAM领域和机器人状态估计领域应用的非常广泛流程都是差不多的.像g2o ceres gtsam 实际上就是通用的库,本质都是求非线性最小二乘 构建线性系统
slam中的图优化的环节,本质上实际是一个非线性最小二乘问题的求解过程.本篇则探究下: 非线性最小二乘问题的构建 非线性最小二乘问题的求解 非线性最小二乘问题的求解原理 Code验证理论 slam中的图优化的位姿图构建构建即理论在上一篇博客,链接 构建完图后,就要进行图优化的过程图优化的过程就是解决一个非线性最小二乘的过程 非线性最小二乘问题的构建 给定一个系统,其状态方程为:x表示系统的状态
图优化本身有成形的 开源的库 例如 g2o ceres gtsam 搞SLAM的话,最好可以理解其概念,然后再用好现成的工具.本篇主要介绍图优化的基本概念.以及在RVIZ中显示位姿图的代码 Pose Graph的概念 用一个图(Graph 图论)来表示SLAM问题 图中的节点来表示机器人的位姿 二维的话即为 (x,y,yaw) 两个节点之间的边表示两个位姿的空间约束(相对位姿关系以及对应方差或
NICP(Normal ICP)匹配方法 传统ICP的缺点:由于ICP算法在点云的匹配关系上,是计算同一坐标系下的两帧点云上的点的距离最小作为比配点,这样的计算得到匹配关系,经常是错误的,会出现将不同位置(不同物体或者不同物体部分的扫描点)点进行匹配的情况,从而陷入局部最优。 NICP基本思想:替换原始ICP方法中的对应点匹配(point correspondences)方法;误差项除了考虑对应点
前言 ICP全称 Iterative Closest Point ,翻译过来就是迭代最近点.ICP在点云配准领域应用的非常广泛,因此基于深度相机\激光雷达的算法使用ICP的频率比较高. ICP的目的是用来求解两个点云集合转换关系,也是目前的最通用的方法。 最基本的ICP是通过对应点去求解点云的对应关系,后期演变出点线ICP\点面ICP等等众多的方法. 本篇博客主要来探究下ICP家族的师祖,
前言 在之前博客中梳理了 ALOAM:激光雷达的运动畸变补偿 链接 在ALOAM中由于仅用激光雷达作为传感器,所以只能用帧间匹配的位姿,去补偿下一帧的数据.举个例子:通过帧间匹配 得到了 k-1 帧到k帧的位姿变换.那么当k+1帧来的时候,就把那个位姿变换认为是k+1帧的起始点和结束点之间的位姿变换,然后通过每个点的时间去线性插值每个点的位姿,最后做补偿计算. 直接匹配的算法就要做一个假设,
轮式里程计定义 什么是轮式里程计:利用轮子转速来测量机器人行程的装置原理如下图,简单直接实物就张这个样子机器人领域通常使用光电编码器来测量轮子转速,轮子转动时光电编码器接收到脉冲信号,脉冲数乘以系数可以得知轮子转了多少圈。 两轮机器人,通过轮速不断的积分运算,可以得知机器人前进了多少,同时可以利用两轮速之差,算出机器人转了多少度,从而实现机器人的航迹推算定位。 轮式里程计与激光SLAM的关系 激光
前言 什么是激光雷达的运动畸变 ?激光雷达的一帧数据是过去一周期内形成的所有数据,数据仅有一时间戳,而非某个时刻的数据,因此在这一帧时间内的激光雷达或者其载体通常会发生运动,因此,这一帧的原点不一致,会导致一些问题,这个问题就是运动畸变所以需要去运动畸变,也叫畸变校正 如何进行运动补偿? 运动补偿的目的就是把所有的点云补偿到某一时刻,这样就可以把本身在过去100ms内收集的点云统一到一个时间点上去
前言 在LOAM的论文中,作者提到了要剔除两种异常点. 平行点 遮挡点 但是在ALOAM的代码中并未写相关的功能. 如果想把论文中两种异常点的剔除机制加进去,可以参考下面的代码. 之前把一些其它的异常点剔除的方法总结了,可以参考这个地方 去除掉非常近的点 去除掉非常远的点 去除NaN的点 反射率处理 去除入射角较小的点 (实际就是平行点) LOAM中的异常点 再回顾下LOAM中定义的两类异
A-LOAM代码的结构 A-LOAM的cpp有四个,其中 kittiHelper.cpp 的作用是将kitti数据集转为rosbag剩下的三个是作为 slam 的 部分,分别是: laserMappin.cpp ++++ 当前帧到地图的优化 laserOdometry.cpp ++++ 帧间里程计 scanRegistration.cpp ++++ 前端lidar点预处理及特征提取 本片主要解
LOAM是 Lidar SLAM 中非常基础的框架之一,后面在此基础上又延伸 优化 出 一些 框架,比如 A-LOAM Lego-LOAM LIO-SAM 所以还是要好好研究下这个基础框架 本篇主要是论文和算法内容方面的解读 LOAM简介 LOAM 实现的功能:LOAM 实现 了 一种实时激光里程计并建图的算法,使用的硬件是一个三维空间中运动的两轴单线激光雷达. 两轴单线激光雷达,就是在水平方
前言 KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办,是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集。该数据集用于评测立体图像(stereo),光流(optical flow),视觉测距(visual odometry),3D物体检测(object detection)和3D跟踪(tracking)等计算机视觉技术在车载环境下的性能。KITTI包含市区、乡村和高速
距离处理 去除掉非常近的点 Code /* 函数功能 :移除 过 近 的 点 可输入 cloud_in = cloud_out 这样就是处理一个点云,自身发生处理 参数1 输入点云 参数2 输出点云 参数3 阈值:距离 已通过测试 time 2020.6.28 jone */ template <typename PointT> //模板点云类型 可以适
前言 PCL库中有很多配准的方式,主要都是基于ICP ICP算法最初由Besl和Mckey提出,是一种基于轮廓特征的点配准方法。基准点在CT图像坐标系及世界坐标系下的坐标点集P = {Pi, i = 0,1, 2,…,k}及U = {Ui,i=0,1,2,…,n}。其中,U与P元素间不必存在一一对应关系,元素数目亦不必相同,设k ≥ n。配准过程就是求取 2 个坐标系间的旋转和平移变换矩阵,使得来
前言 这篇博客主要是 之前总是被坐标变换的 各种说法弄糊涂,这篇博客就不管别人怎么定义了通过模拟场景 定义一个自己的说法,爱谁谁 首先坐标变换的数学计算实质就是 矩阵的计算,这里先安利一个 矩阵在线计算的网站 不用手动算了矩阵在线计算的网站这里面有很多的 矩阵的计算的在线求解 挺不错的包含:矩阵乘法、线性方程组、矩阵的逆矩阵、行列式的值、特征值和特征向量、Cholesky分解、上三角下三角分解、奇
功能包名称:lidar_aligngit网址:链接 功能介绍 一种 校准 3D 激光雷达和 6 自由度位姿传感器 外参 的 方法 适配的ROS版本有 Indigo、Kinect、Melodic 准确的结果需要 大量 非平面的运动,这使得该方法不适合 校准 安装在汽车上的传感器以为只有在那个方向上有数据的变化才能计算出最终的结果。 整个功能包大体上实现了下面的功能:1、读取lidar和位姿传感器的数
看这篇之前建议先看这篇,里面讲了非线性优化的原理即相关名词的概念,然后介绍了NLopt的使用方法,这个方法是基于C语言的,本片介绍一个NLopt的实例,用的C++语言。 在实例之前,先介绍下NLopt支持的算法,以及算法使用的注意事项 NLopt 支持的算法 NLopt 包含很多种不同的优化算法。 在头文件里面算法名称的枚举类型为 enum algorithm { GN_DIRECT
前言 什么是NLopt ?NLopt(nonlinear optimization)是一个免费的开源的库,提供了很多种非线性优化算的使用接口。 NLopt的优点:1、其中非常大的优势就是提供多种支持的语言,包括C/ C++/ Julia/ Python/ R/ Fortran/ Lua/ OCaml/ Octave等都支持2、它还可以让你对一个问题尝试不同的算法,调整一个参数就行\3、支持一些高维
前言 通过实物模型产生数字模型的逆向工程应用越来越广泛,SLAM就是其中之一。 该技术在应用中,由于点云的 不完整、旋转错位、平移错位等,使得要得到_完整点云_就需要对_局部点云进行配准_。 点云配准定义:为了得到物体的完整数据模型,需要确定一个合适的坐标变换,将从各个视角得到的点集合并到一个统一的坐标系下,形成一个完整的数据点云,这就是点云数据的配准。其实质就是:把在不同坐标系中测量得到的数据点
前言 在计算机视觉领域广泛的使用各种不同的采样一致性参数估计算法用于排除错误的样本,样本不同对应的应用不同。 其功能例如 剔除错误的配准点对,分割出处在模型上的点集 PCL中以随机采样一致性算法(RANSAC)为核心,同时实现了五种类似与随机采样一致形算法的随机参数估计算法,例如随机采样一致性算法(RANSAC)最大似然一致性算法(MLESAC),最小中值方差一致性算法(LMEDS)等,所有估计参
前言 什么是关键点?关键点定义: 关键点也称为兴趣点,它是2D图像、3D点云或曲面模型上,可以通过定义检测标准来获取的具有稳定性、区别性的点集。 关键点的意义?加快后续识别、追踪等数据的处理速度 具备该意义原因?关键点的数量相比于原始点云或图像的数据量小很多,它与局部特征描述子结合在一起,组成关键点描述子,常用来形成原始数据的紧凑表示,而不失代表性与描述性。 3D Harris 角点检测 角点概念
前言 什么是关键点?关键点定义: 关键点也称为兴趣点,它是2D图像、3D点云或曲面模型上,可以通过定义检测标准来获取的具有稳定性、区别性的点集。 关键点的意义?加快后续识别、追踪等数据的处理速度 具备该意义原因?关键点的数量相比于原始点云或图像的数据量小很多,它与局部特征描述子结合在一起,组成关键点描述子,常用来形成原始数据的紧凑表示,而不失代表性与描述性。 SIFT关键点检测 SIFT(Scal
前言 什么是关键点?关键点定义: 关键点也称为兴趣点,它是2D图像、3D点云或曲面模型上,可以通过定义检测标准来获取的具有稳定性、区别性的点集。 关键点的意义?加快后续识别、追踪等数据的处理速度 具备该意义原因?关键点的数量相比于原始点云或图像的数据量小很多,它与局部特征描述子结合在一起,组成关键点描述子,常用来形成原始数据的紧凑表示,而不失代表性与描述性。 NARF 关键点 NARF(Norma
前言 各种光学传感器技术的发展,包含物体三维结构信息的深度图像数据获取开始普及。尤其时kinect等设备的出现。 什么是深度图像?定义:深度图像(Depth Images),也被称为距离影像(Range Images),是指将图像采集器到场景中各点的距离(深度)值作为像素值的图像。 它直接反应了景物可见表面的几何形状,利用它可以很方便的解决3D目标描述中的许多问题。 获取深度图像的方法: 激光雷
滤波原因 在获取点云数据时,由于设备精度、操作者经验、环境因素等带来的影响,以及电磁波衍射特性、被测物体表面性质变化和数据拼接配准操作过程中的影响,点云数据中将不可避免将出现一些噪声点。实际应用中,除了这些测量随机误差产生的噪声点之外,由于收到外界干扰,如视线遮挡、障碍物等因素的影响,点云数据中往往存在些离主体点云较远的离群点。 在点云处理流程中,滤波处理作为预处理的第一步,对后续(配准、特征提取
PCL中的pcl_visualization库提供了可视化相关的数据结构和组件,包含27个类以及十多个函数,主要是为了将其它模块的算法处理后的结果直观的展现。 简单点云可视化 点云视窗类 CloudViewer 是简单显示点云的可视化工具类,可以让用户尽可能少的代码 查看 点云。CloudViewer类不能在多线程应用程序中使用 下面介绍其实现方法 Code #include <pcl/vi
原理 octree是一种管理稀疏3D数据的树状结构,利用octree实现多个无序点云之间的空间变化检测,这些点云可能在尺寸。分辨率 密度,和点顺序等方面有所差异,通过递归的比较octree的树结构,可以鉴定出由octree产生的体素组成的区别所代表的空间变化,并且通过octree的“双缓冲”技术,可以实时的探测多个点云之间的空间组成的差异。 对无序点云在空间变化上的检测,其实是对前后两幅点云在八叉
原理 建立空间索引在点云数据处理中有着广泛的应用,常见的空间索引一般 是自顶而下逐级划分空间的各种空间索引结构。比较有代表性的包括 BSP树 KD树 KDB树 R树 四叉树 八叉树这些结构中,KD树和八叉树使用比较广泛 八叉树定义: 八叉树(Octree)是一种用于描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,这八个子节点所表示的体积元素加在一起就
为什么要进行点云压缩 点云带有大量的数据,不仅包括三维信息,还有额外的距离,颜色,法向量等等。此外,点云可以快速生成,这会占有大量的内存资源。一旦点云必须被存储或者用于通信传输,对于点云的压缩技术就显得十分重要了。PCL提供了点云压缩功能,它支持对各种类型点云的压缩,其中包括无序点云,此外,在八叉树结构下的数据支持高效地合并多个来自不同数据源的点云。 压缩pcl::PointXYZ类型数据 Cod
KD-tree 原理 kd树(k-dimensional树的简称),是一种分割k维数据空间的数据结构。主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索)。 其实KDTree就是二叉搜索树的变种。这里的K = 3. Kd-tree的原理是这样的:不比较全部的k维数据,而是选择其中某一个维度比较,根据这个维度进行空间划分。 只需要判断出在哪一个维度比较 然后判断以哪个数据条目分依据划分。 就
PCD文件介绍 PCL以PCD文件形式保存点云。 (主要是为了保存n维点类型) 其文件格式如下: 每一个PCD文件都包含一个文件头,它确定和声明文件中存储的点云数据的某种特性。 PCD文件头必须使用ASCII码来编码。PCD文件中指定的每一个文件头字段以及ASCII点数据都用一个新行(\n)分开了。 从0.7版本开始,PCD文件头包含下面的这些字段 VERSIO:指定PCD文件版本 FEIELD
pcl 库自身定义了很多中类型的 点云类型变量 。 但是在使用时 如果 希望 使用 自己定义的 点云类型 ,可以 通过 特定的 类 /算法 的模板文件实现 具体代码方法如下: CMakeList.txt 首先构建 编译文件使用PCL就这么搞就行了 # 声明要求的 cmake 最低版本 cmake_minimum_required(VERSION 2.8 ) # 添加c++ 11 标准支持 set(
理解好图像的点云拼接,需要从相机的模型说起。理解相机的成像原理之后。 便可更为深刻的理解 图像的点云 如何拼接在一起。 首先说下相机的概念与原理 相机概念与原理 相机的作用:将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素) 通常我们见到的相机都是针孔相机 但是不是简单的 针孔,还有透镜的畸变存在,所以在做图像处理时要进行畸变校正。 由于畸变的存在,我们在使用相机之前都要进行 相机标
Eigen 是一个 C++ 开源线性代数库 它提供了快速的有关矩阵的线性代数运算,还包括解方程等功能。 Eigen 它是一个纯用头文件搭建起来的库,只能找到它的头文件,没有.so 或.a 那样的二进制文件 在使用时,只需引入 Eigen 的头文件即可,不需要链接它的库文件 下面总结下 其 使用 方法 ,方便忘记时翻阅 声明矩阵和向量 Eigen 以矩阵为基本数据单元。它是一个模板类。它的前三个参数
yolo-v3模型测试及测试结果转化 文章目录 yolo-v3模型测试及测试结果转化 1.制作2019_test.txt文件 2. 修改./darknet/cfg/voc.data文件 3. 修改./darknet/cfg/yolov3-voc.cfg文件 4. 执行测试语句 5. 转换预测结果格式 训练完成生成模型后,进行模型测试。对测试集数据进行检测,得到检测结果 1.制作2019
opencv调用yolov3模型进行深度学习目标检测,以实例进行代码详解 对于yolo v3已经训练好的模型,opencv提供了加载相关文件,进行图片检测的类dnn。 下面对怎么通过opencv调用yolov3模型进行目标检测方法进行详解,付源代码 1、建立相关目录 在训练结果backup文件夹下,找到模型权重文件,拷到win的工程文件夹下 在cfg文件夹下,找到模型配置文件,yolov3-voc
ROS TF2 中的 四元数 基础部分 1、四元数的组成 2、将 RPY坐标系 下的 角度 转换为 四元数 3、如何通过四元数 做 旋转 4、四元数转置 5、求两个姿态(四元数)的旋转 5、 完毕 这篇博客主要讲解 ROS中四元数用法的基础知识。 1、四元数的组成 ROS使用四元数来跟踪和应用旋转。 一个四元素有4个成员(x,y,z,w)。 注意: w 是最后一个,但是一些库像 Eige
ROS TF2当前坐标系如何计算其它历史坐标系的坐标变换 1、时间旅行 2、更高级 的 lookupTransform() 函数 API 3、检查结果 4、 完成 本教程教您有关tf2的高级功能: TF2当前坐标系如何计算其它历史坐标系的坐标变换 在上一教程中,介绍了tf2和时间的基本概念。 本教程将使这一步骤更进一步,并介绍最强大的tf2技巧之一。 1、时间旅行 打开之前监听者的例子
1、变换设置 设计一个传感器在机器人上的场景 许多ROS 功能包 通过利用TF2 软件 库 去 发布 机器人的 坐标变换树在抽象层面上,坐标变换树 定义了 每个 不同的坐标系间的 偏移和旋转。 为了更加具体一些,举个例子, 例如一个简单的机器人,是一个可移动的小车底盘在顶部安装着一个单线激光测距仪。 在这个简单机器人中,定义两个坐标系 : 一个小车底盘的中心(base_link),另一个激光测距仪
ROS中的地图 ROS中的导航地图以2D网格的形式描述,每个网格包含一个值,这个值描述了这个网格有多少可能是被障碍物占据的。 地图文件以图像的形式存储,支持多种常见的格式(比如PNG、JPG、PGM)。虽然使用的是彩色图像,ROS在解析这些图片之前,会先把它们转换为灰度图像。这意味着每一个地图都可以使用任何的图像显示程序显示出来。 每个地图都有一个与之关联的YAML文件,这个文件包含一些额外的信息
本片博客描述:如何使用 tf2_ros::MessageFilter 处理 Stamped(时间戳) 数据类型 在 TF2 的 体系下 如何使用传感器的数据 在 实际 情况下 传感器的数据包括: 相机、激光雷达 1、情景 假设一只新的乌龟 命名为 乌龟3 , 它没有好的里程计(也就是说不指定它的具体坐标),但是现在有一个上方的相机 跟踪 它的位置并且发布 相对与 世界坐标系 下的 位置信息 ( P
1、TF2 和 时间 在之前的博客 TF2 监听者的例子中 , 可以 获取 坐标变换树中 最新的 信息。 坐标变换树随时间改变,TF2会存储1段时间,每个坐标系的变换信息(默认是10s) 当我们通过使用lookupTransform() 函数获得最新的有效坐标变换时,并不知道这个变化发生的具体时间。可能由于某种原因 得到了很久之前的 坐标变换,导致系统出现错误。 例如 在1s时产生了有效的坐标变换
这片博客 教你 如何使用TF2 实现 监听 获得 一个 坐标变换 在上一篇博客 创建了一个TF2 的 广播者 ,来发布一个 乌龟的位置 到 TF2, 这个博客 将 创建 一个 TF2 的 监听者 来开始使用TF2. 1、如何创建一个TF2的监听者 1.1 代码 在learning_tf2 的功能包的src 文件夹下 创建一个新的cpp文件 命名为 turtle_tf2_listener.cpp.
本片博客 讲解 如何添加 一个 固定的坐标系 到TF2 1、为什么添加 坐标系 对于很多任务在本地坐标系中处理很容易。例如激光雷达的数据在以雷达扫描器的中心为坐标系下最容易处理。TF2 可以定义一个本地坐标系对每一个传感器、link等等。tf2将处理所有引入的坐标系转换。 2、坐标系添加到了哪 TF2 对所有 的 坐标系 建立 了 一个 树行 结构 , 在整体结构中 不 能 存在闭环。也就
ROS TF2 介绍tf2 1、安装演示示例 2、运行演示示例 3、如何实现的 4、tf2 工具 4.1 view_frames 4.2 tf_echo 4.3 rviz 编写tf2静态广播器(C ++) 1、创建 learning_tf2 功能包 2、How to broadcast transforms 2.1 代码 2.2 代码解释 3、编译 运行 4、检查结果
在上一篇中对 LOAM-Livox 算法做了整体的总结。 最后给出了 算法的整体框图 如下: 本篇主要对LOAM-Livox 算法进行 前端处理 和 迭代位姿优化 的 总结 1 前端处理 LOAM-Livox 算法 的 前端 处理 也就是红框的部分 主要包含两个环节 good points 选取 特征点提取 1.1 good points 选取 考虑到激
在自动驾驶领域,激光里程计和建图(LOAM)已经起到重要的作用,归因于它可以在定位机器人的位姿的同时建立周围环境的高精度、高分辨率的地图。 算法简介 算法名称:Loam_livox 针对 FoV 较小的 激光雷达的 一种快速、鲁棒性强、高精度雷达里程计和建图 算法 传统的LOAM算法对应的是传统的机械雷达,对于小FoV和非重复式雷达,直接应用的话效果会不理想。 Loam_livox 在LO
LOAM-Livox是针对livox-LiDAR的一个激光里程计和建图(LOAM)的功能包 Loam-Livox是一个适用于 Livox LiDAR 强大的、低漂移实时的里程计和建图功能包 Livox LiDAR 是专为大量工业用途而设计的低成本,高性能LiDAR。 功能包解决了许多关键问题,特征提取和在有限FOV下提取,强大的异常值排除,运动物体过滤,运动失真补偿。 此集成了其他功能,例如可并行
我的版本好像是1.7的,看你的描述,感觉是你在调用可视化的时候出现了问题,应该是代码有问题,可以尝试将输入点云替换成关键点,来测试下显示功能,再仔细检查下代码把
如果每次启动launch都是出现重复现象的话,需要从头开始查。
激光slam理论与实践
这个相当于一维的仅有一个方向的位置作为状态来举例.状态0(x0)在初始位置, 所以 f1=x0=0;状态1(x1)通过里程计的数据测量向前1,那么x1-x0=1,也就是f2=x1-x0-1=0;f3和f4同理.注意方向即可.
看J21和J22构建的线性方程组,然后通过线性最小二乘求解
没有,可以给我邮箱,有时间了打包发你
可以在融合后,进行体素滤波就可以
scan_to_map 的算法都可以实现
本身没有你要的那个功能的可以自己写代码实现,检测键盘,然后订阅你的消息包,存在数据池中,在控制发布,下面有个简单的例子https://answers.ros.org/question/251448/how-to-play-and-pause-bagfile-within-the-program/
你的qt版本不对,换成4点几的
感谢鼓励
kinect
可以看 视觉slam14讲
安装对应的包就行
最好不在虚拟机中做,装个双系统也行
1、 No transform from [base_link] to [map] 这个是tf有问题 可以通过 $ rosrun rqt_tf_tree rqt_tf_tree 指令 看下的的tf tree 是不是有坐标系断开了 2、No map received 你的tf都有问题,那map肯定生成不了。解决了第一个问题再看第二个问题
积分
粉丝
勋章
TA还没有专栏噢
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信