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
如何利用RANSAC算法实现激光雷达的地面与非地面点云分割利用激光雷达做感知输出首先要分割出地面点云以减少对障碍物聚类的影响。本文首先介绍RANSAC的基本原理,并依据RANSAC在ROS中实现对地面点云的分割。接着,引入PCL点云库,PCL点云库中有标准的RANSAC算法接口,我们可以通过调用它实现更加快速,稳定地滤除地面点云。ransac是 random sample consensus的缩写
pcl 库自身定义了很多中类型的 点云类型变量 。 但是在使用时 如果 希望 使用 自己定义的 点云类型 ,可以 通过 特定的 类 /算法 的模板文件实现 具体代码方法如下: CMakeList.txt 首先构建 编译文件使用PCL就这么搞就行了 # 声明要求的 cmake 最低版本 cmake_minimum_required(VERSION 2.8 ) # 添加c++ 11 标准支持 set(
构建语义地图时,用的是 octomap_server和 semantic_slam: octomap_generator,不过还是整理下之前的学习笔记。 一、Octomap 安装并使用Octomap_Server1.1 Apt 安装 Octomap 库如果你不需要修改源码,可以直接安装编译好的 octomap 库,记得把 ROS 版本「kinetic」替换成你用的: sudo apt-get in
首先为这几个坐标系的定义世界坐标(map)该map坐标系是一个世界固定坐标系,其Z轴指向上方。相对于map坐标系的移动平台的姿态,不应该随时间显著移动。map坐标是不连续的,这意味着在map坐标系中移动平台的姿态可以随时发生离散的跳变。典型的设置中,定位模块基于传感器的监测,不断的重新计算世界坐标中机器人的位姿,从而消除偏差,但是当新的传感器信息到达时可能会跳变。map坐标系作为长期的全局参考是很
*课程资料请到微信公众号“古月居”后台回复“机器人学资料”获取 该课程已开通专门交流答疑区,点击这里,发帖提问交流 课程目的 机器人是一个集感知、规划与控制技术于一体的智能体,其中路径规划起着承上启下的关键作用,效率高、实时性强的路径规划算法对于提高机器人的机动性能具有重要意义。 本课程共8节内容、7个路径规划算法,首先将介绍如何利用Matlab软件快速构建任意尺寸大小、任意障碍物环境的栅格地
1.安装仿真环境 此安装环境是从github下载的,由中科院软件所孵化的北京中科重德智能科技有限公司提供的机器人仿真环境,配置方法如下: (1)克隆包到工作空间 $ cd ~/catkin_ws/src $ git clone https://github.com/DroidAITech/ROS-Academy-for-Beginners.git (2)安装依赖项 $ cd ~/catkin_ws
理解好图像的点云拼接,需要从相机的模型说起。理解相机的成像原理之后。 便可更为深刻的理解 图像的点云 如何拼接在一起。 首先说下相机的概念与原理 相机概念与原理 相机的作用:将三维世界中的坐标点(单位为米)映射到二维图像平面(单位为像素) 通常我们见到的相机都是针孔相机 但是不是简单的 针孔,还有透镜的畸变存在,所以在做图像处理时要进行畸变校正。 由于畸变的存在,我们在使用相机之前都要进行 相机标
一、环境配置参考turtlebot3-多机交互程序:多机交互-创客智造小车: Ubuntu-mate16.04+ROSkinetic;必要的bringup.launch文件(包括雷达信息、IMU、编码器信息、电器驱动),详情见bringup详解。上位机: Ubuntu16.04+ROSkinetic安装多机地图合并软件包ros-kinetic-multirobot-map-merge: sudo
写在前面 我们之前使用gmapping绘制了一张完整的地图,但是在大多数情况下,我们对机器人的需求都是让机器人在已知的场景做导航(例如送餐和扫地机器人)。这就需要我们在一张“已知”的地图上进行定位。 但是“已知”的地图又不会一成不变,这就需要我们能够在已知地图的基础上对局部做一些重建和修改。例如一个机器人在美食街中导航,而美食街有总会增添一些临时的展台 这个教程尝试将ros中的gmapping,地
1 ROS驱动 在ROS中没有直接的Tim561驱动,一般是修改自sick_tim包中的Tim551,但是Tim551与Tim561参数不同(Tim561的角度分辨率是0.33°,而Tim551是1°),我们要检验一下有没有问题。 在ROS中,激光雷达消息scan数据如下,该传感器主要返回两类数据:距离值ranges和反射强度值intensities。 header: seq:
决定总结最近一个月的工作,这个月在orbslam2的基础上,使用kineticV2完成了稠密点云地图的重建,实现了点云的回环,并使用octomap转换成实时的八叉树地图,导航部分已经有了思路,打算下个月所一个基于octomap的航迹生成能用在视觉的导航上。 一、传感器和依赖包安装 PC性能:Dell xps13 内存16GB 硬盘SSD:500GB 显卡:Intel iris集显 操作系统:ub
RRT路径规划算法 地图 RRT算法原理 路径平滑处理 总结 RRT(Rapidly-Exploring Random Tree)算法是一种基于采样的路径规划算法,常用于移动机器人路径规划,适合解决高维空间和复杂约束下的路径规划问题。基本思想是以产生随机点的方式通过一个步长向目标点搜索前进,有效躲避障碍物,避免路径陷入局部极小值,收敛速度快。本文通过matlab实现RRT算法,解决二维平面的路
@[toc] 一、词袋模型的引出 最初的Bag of words,也叫做“词袋”,在信息检索中,Bag of words model假定对于一个文本,忽略其词序和语法,句法,将其仅仅看做是一个词集合,或者说是词的一个组合,文本中每个词的出现都是独立的,不依赖于其他词 是否出现.也就是说,文档中任意一个位置出现的任何单词,都不受该文档语意影响而独立选择的。例如有如下两个文档: 1:Bob like
@[toc] 1. 将初始化的两帧转化为关键帧 // Create KeyFrames 认为单目初始化时候的参考帧和当前帧都是关键帧 KeyFrame* pKFini = new KeyFrame(mInitialFrame,mpAtlas->GetCurrentMap(),mpKeyFrameDB); // 第一帧 KeyFrame* pKFcur = new KeyFra
@[toc] 一、初始化特征匹配 1.1 查找候选特征点: 因为单目初始化的两帧是连续的,且初始化的两帧的速度一般不快,两帧差距不大,因此这里的候选关键帧采用最简单的紧邻搜索。如图所示:假设特征点在Frame1中的位置为A(x,y)。那么Frame2中的候选特征点就在对应坐标的一个半径为r(默认r=100)的圆中查找 /** * @brief 找到在 以x,y为中心,半径为r的圆形内且金字塔层级
0x00 简要介绍 在stdr仿真这个系列教程中,前面已经有八篇文章了。到现在才开始正式的指导大家如何下载前面所有的测试代码,那是因为我希望大家可以自己动手来输入各篇文章中的代码来测试学习。如果我一开始就告诉大家如何下载的话,有可能大家只是下载了代码,直接一运行launch看看效果就不管了。这样就无法真正深刻理解下整个自动导航配置过程,而且也无法认识到stdr软件的好处了。这个stdr系列教程的网
0x00 为何需要定点巡航 现在我们已经可以在已知地图中进行自动导航了,那就可以利用这个功能来解决一些实际生活中的需求了。下面就是我思考的几个实际场景中可能用到定点巡航的功能:在工厂中经常会遇到需要运送物料的要求,一般都是从固定地点将东西运送到固定的指定地点,而且可能会在多点之间不断的运送。如果使用人工的话,效率太低而且人也会累。此时,我们就可以使用现在这个定点巡航功能,可以让移动机器人来充当一个
这篇博客主要是一些调试中踩的坑及验证过的东西,以供大家参考。 1.GTSAM使用篇 调试在原有Lego-loam中Gtsam框架上添加三维里程计的BetweenFactor约束1.1 给初值 gtSAMgraph.add(PriorFactor<Pose3>(0, Pose3(Rot3::RzRyRx(transformTobeMapped[2], transformTobeMapp
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信