配置空间 机器人规划的配置空间概念:一个空间包含所有机器人自由度的机器人配置,描述为C-space 机器人配置:表示对机器人上面所以点的位置的描述 机器人自由度:规划的时候用最少的坐标数量去表示机器人配置,例如无人机规划,在微分平坦中进行规划则是x\y\z\yaw四个变量,所以对于无人机轨迹规划来说有四个自由度。 机器人配置空间:一个空间包含所有机器人自由度的机器人配置,描述为C-sp
模块简介 WS2812是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。 数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的2
功能包简介 mav_control_rw 功能包是ETHZ ASL的利用mpc控制实现了旋翼式无人机的轨迹追踪算法。 mpc是模型预测控制的简称,全称是Model-based Predictive Control mpc利用一个已有的模型、系统当前的状态和未来的控制量,来预测系统未来的输出,然后与我们期望的系统输出做比较,得到代价函数,通过优化的方法,优化出未来控制量,使得代价函数最小。优化
基本概念 全称:Model-based Predictive Control(MPC)—-模型预测控制 本质:MPC利用一个已有的模型、系统当前的状态和未来的控制量,来预测系统未来的输出,然后与我们期望的系统输出做比较,得到代价函数,通过优化的方法,优化出未来控制量,使得代价函数最小。优化出来的控制量即算法的输出。 核心思想:以优化方法求解最优控制器,其中优化方法大多时候采用二次规划
前言 在机器人的结构中,往往电机是必不可少的组成部分,例如地面智能车中的轮子驱动,空中无人机的动力部分。电机往往是产生运动动力的直接来源,而无刷直流电机(Brushless Direct Current Motor)是应用最为广范的。 本篇博客主要描述了无刷直流电机的基本概念、结构、优劣势并且在最后展示了一个单片机(Arduino )控制无刷直流电机旋转的实例。 基本概念 无刷直流电机,英
DJI 无人机 Onboard SDK ROS 功能包demo运行 搭建好 Onboard SDK ROS 的开发环境后,功能包自身具备一些写好的demo功能案例dji sdk 的节点在dji_sdk文件夹中demo的功能案例则在dji_sdk_demo文件夹中 demo功能 具体的demo功能可以查看文件夹内的CMakeLists.txt文件 通过名称可以看出其功能,总结如下: dem
功能包简介 ROS功能包名称:dji_sdk 功能包功能:用于DJI 板载SDK的ROS版本 OSDK 是一个用于开发无人机应用程序的开发工具包,基于OSDK 开发的应用程序能够运行在机载计算机上(如Manifold 2),开发者通过调用OSDK 中指定的接口能够获取无人机上的各类数据,经开发者设计的软件逻辑和算法框架,执行相应的计算和处理,生成对应的控制指令控制无人机执行相应的动作,实现如
实物照片 模块简介 MAX30102是一个集成的脉搏血氧仪和心率监测仪生物传感器的模块。 它集成了一个红光LED和一个红外光LED、光电检测器、光器件,以及带环境光抑制的低噪声电子电路。 MAX30102采用一个1.8V电源和一个独立的5.0V用于内部LED的电源,应用于可穿戴设备进行心率和血氧采集检测,佩戴于手指点耳垂和手腕处。 标准的I2C兼容的通信接口可以将采集到的数值传输给A
实物照片 模块简介 BH1750是一种用于两线式串行总线接口的数字型光强度传感器集成电路。这种集成电路可以根据收集的光线强度数据来调整液晶或者键盘背景灯的亮度。利用它的高分辨率可以探测较大范围的光强度变化。BH1750的内部由光敏二极管、运算放大器、ADC采集、晶振等组成。对应广泛的输入光范围(相当于1-65535lx),最小误差变动在土20%,而且受红外线影响很小。 模块参数:|型号
前言 通常复杂的机器人会存在多个控制器,不会是一个控制器完成所有的任务,这样会造成计算资源的过度集中,并且无法实现模块化的调试。 以简单的智能车为例,一般会存在两个控制器,一个是运行ROS的主控,另一个是运行电机控制和传感器信息采集的单片机比如STM32。 由于存在多个控制器,完成一个机器人的具体任务,那么这多个控制器间则需要建立通信,本篇博客主要讲解: 如何实现ROS主控和STM32
直流电机 直流电机(direct current machine)是指能将直流电能转换成机械能(直流电动机)或将机械能转换成直流电能(直流发电机)的旋转电机。它是能实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为机械能;作发电机运行时是直流发电机,将机械能转换为电能。 直流电机原理 下图是分析直流电机的物理模型图 固定部分有: 磁铁这里称作主磁极
模块介绍 模块名称:DT-06 无线 模块功能:模块实现了模块串口与WiFi数据的实时透传 模块实物图片 模块特点 TTL-WiFi 模块基于 ESP-M2 WiFi 模块研发,引出串口 TTL、EN、STATE 等引脚。产品内置串口透传固件可完成设备 TTL 端口到 WiFi/云的数据实时透传,具备低功耗控制,状态指示等功能。模块可直接取代原有的有线串口,实现嵌入式设备数据采集和控制。
修改launch文件 在之前将ouster-32的激光雷达设置成了静态IP。 因为设置了固定的雷达IP,所以就在launch文件中设置其参数,不用在用命令行的方式传入该参数 修改内容如下: <arg name="sensor_hostname" doc="hostname or IP in dotted decimal form of the sensor"/> 改为
ouster-32 ROS驱动 此 ROS 软件包支持所有固件 v2.0 或更高版本的 Ouster 传感器。启动后,驱动程序将配置并连接到选定的传感器设备,连接后,驱动程序将处理传入的IMU和激光雷达数据包,解码激光雷达帧并发布有关/ouster/imu和/ouster/points主题的相应ROS消息。如果传感器支持双回波并且已配置为使用此功能,则将发布另一个名为 /ouster/point
占据栅格地图(Occupancy Grid Map) 占用栅格地图基础概念 上图就是一个ROS中的占据栅格地图显示 栅格地图定义 :栅格地图就是用一个个栅格组成的网格来代表地图. 栅格里可以存储不同的数值, 代表这个栅格的不同含义. ROS的栅格地图使用 白色代表空闲,也就是可通过区域,其存储的值为 0; 黑色代表占用,也就是不可通过区域,其存储的值为 100; 灰色代表未知
前言 无人机(Unmanned Aerial Vehicle),指的是一种由动力驱动的、无线遥控或自主飞行、机上无人驾驶并可重复使用的飞行器,飞机通过机载的计算机系统自动对飞行的平衡进行有效的控制,并通过预先设定或飞机自动生成的复杂航线进行飞行,并在飞行过程中自动执行相关任务和异常处理。 在前面的博客中,分析了 rotors_simulator 一个开源的无人机gazebo的仿真系统的一个
前言 无人机(Unmanned Aerial Vehicle),指的是一种由动力驱动的、无线遥控或自主飞行、机上无人驾驶并可重复使用的飞行器,飞机通过机载的计算机系统自动对飞行的平衡进行有效的控制,并通过预先设定或飞机自动生成的复杂航线进行飞行,并在飞行过程中自动执行相关任务和异常处理。 在上篇博客介绍了无人机控制的原理与控制算法。 无人机在应用中会存在多种模式比如: 姿态模式 定高
前言 无人机(Unmanned Aerial Vehicle),指的是一种由动力驱动的、无线遥控或自主飞行、机上无人驾驶并可重复使用的飞行器,飞机通过机载的计算机系统自动对飞行的平衡进行有效的控制,并通过预先设定或飞机自动生成的复杂航线进行飞行,并在飞行过程中自动执行相关任务和异常处理。 在前面的文章中,我们分析了多旋翼无人机的飞行原理及飞行模式。链接 在最后的飞行模式中, 除了纯手动模
在此篇博客分析了 无人机的基础:系统基本组成https://www.guyuehome.com/40080 本篇博客我们来探究下多旋翼无人机的飞行原理 力的来源 飞行原理从根上说的话就是系统运动力的来源是什么? 在基本组成部分介绍了无人机的动力系统:电调-电机-螺旋桨 。 给人最直观的感受就是 电机带动螺旋桨转,产生升力。 螺旋桨旋转产生升力的原因,在很多年前伯努利就给出了解释,简单说
前言 RotorS 是一个MAV gazebo 仿真系统。 提供了几种多旋翼仿真模型,例如 AscTec Hummingbird AscTec Pelican AscTec Firefly 但是仿真系统不限于使用这几种模型 AscTec 是 德国Ascending Technologies公司的缩写。 是很早的无人机了,实物张下面这个样子: 仿真系统中包含很多种仿真传
前言 RotorS 是一个MAV gazebo 仿真系统。 提供了几种多旋翼仿真模型,例如 AscTec Hummingbird AscTec Pelican AscTec Firefly 但是仿真系统不限于使用这几种模型 AscTec 是 德国Ascending Technologies公司的缩写。 是很早的无人机了,实物长下面这个样子: 仿真系统中包含很多种仿真传
前言 无人机仿真主要分为两类:硬件在环仿真(HITL)和软件在环仿真(SITL全称Software in the loop)。 无人机软件在环仿真是指完全用计算机来模拟出无人机飞行时的状态,而硬件在环仿真是指计算机连接飞控板来测试飞控软件是否可以流畅运行。一般来说硬件在环仿真若没有加上真实的转台进行测试的话,其与软件在环仿真没有很大的区别。 在无须解决在研发过程中的硬件问题带来的麻烦,并且可
无人机(Unmanned Aerial Vehicle),指的是一种由动力驱动的、无线遥控或自主飞行、机上无人驾驶并可重复使用的飞行器,飞机通过机载的计算机系统自动对飞行的平衡进行有效的控制,并通过预先设定或飞机自动生成的复杂航线进行飞行,并在飞行过程中自动执行相关任务和异常处理。 本篇博客主要介绍多旋翼无人机系统基本组成 多旋翼无人机基本组成 机械系统 多旋翼无人机的机械系统主要包括
功能包简介: 功能包名称:LiDAR_IMU_Init github地址:https://github.com/hku-mars/LiDAR_IMU_Init 效果展示b站地址:https://www.bilibili.com/video/BV1ZS4y127mW?spm_id_from=333.337.search-card.all.click 功能包简介:LiDAR_IMU_Init
前言 LIO-SAM的全称是:Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 从全称上可以看出,该算法是一个紧耦合的雷达惯导里程计(Tightly-coupled Lidar Inertial Odometry),借助的手段就是利用GT-SAM库中的方法。 LIO-SAM 提出了一个利用GT-SAM的紧耦合激
前言 图优化本身有成形的 开源的库 例如 g2o ceres gtsam lio-sam 中就是 通过 gtsam 库 进行 图优化的,其中约束因子就包括回环检测因子 本篇主要解析lio-sam框架下,是如何进行回环检测及位姿计算的。 Pose Graph的概念 用一个图(Graph 图论)来表示SLAM问题 图中的节点来表示机器人的位姿 二维的话即为 (x,y,yaw)
安装功能包 实测 ubuntu20.04 本地安装 安装步骤如下: 下载功能包 git clone -c http.sslverify=false https://gitlab.acfr.usyd.edu.au/its/cam_lidar_calibration.git 成功提示: 正克隆到 ‘cam_lidar_calibration’…remote: Enumerating
相机标定原理 相机标定意义 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。 在后面可以看到 世界坐标系与 像素坐标系的 转换 关系 里面的 几个矩阵,就是要通过标定求得的 相关 参数 相机标定原理 所以 相机标定的 目的 就是 求 相关 参数 相机标定参数 具体
功能包介绍 功能包名称:lidar_imu_calib 功能包简介:在基于3D激光雷达开发slam时,我们经常使用imu为匹配算法(icp, ndt)提供先验,所以需要校准lidar和imu之间的变换。对于匹配算法,transfom中的姿态比transform中的位置更重要 , 并且位置通常设置为 0。所以这个功能包只校准激光雷达和 imu 之间转换中的姿态分量。 功能包地址:https:/
ROS 环境下使用velodyne激光雷达 系统版本:ubuntu 20.04ROS版本:noetic激光雷达型号:velodyne VLP-16 系统环境配置 安装ROS依赖 sudo apt install ros-noetic-velodyne 成功提示:安装驱动 git clone https://github.com/ros-drivers/velodyne.git
近两年来,车联网、自动驾驶、无人驾驶、汽车智能化、网联化等成为了汽车行业的热点话题,未来汽车一定是朝着安全、可靠及舒适的方向发展。而这一切背后的发展都离不开传感器的作用,尤其是惯惯性传感器——IMU。 IMU全称Inertial Measurement Unit,惯性测量单元,主要用来检测和测量加速度与旋转运动的传感器。其原理是采用惯性定律实现的,这些传感器从超小型的的MEMS传感器,到测量精度
模块介绍 WHEELTEC N100 模块 是一个全新的,微型,高性能,经过严格 出厂校准的 IMU 核心。 其特点是具有一个强大的 Sigma-Point 卡尔曼滤波器 (SPKF),以及一套高性能算法,高达 1000Hz 的传感器采样频率和圆锥和划船运 动补偿,有较强的抗磁干扰能力。 其实物如下图: 输出: 载体航姿 位置 速度 传感器原始数据 系统状态等信息 具有
因子图的功能 在slam的后端优化问题中,通常会通过⼀些传感器的观测,比如: 视觉特征点 IMU预积分量 Lidar面点和边缘点(角点)的约束 去构建一个优化问题,求解状态量(如位姿、速度等)。 这个时候存在一个问题:当给这个系统新增⼀个约束时,就会重新建立所有的约束对状态量的优化问题进行求解。当优化模型增大时,显然进行一次优化的时间也会增加很多;一方面实时性遭遇了挑战,另一
前言 预积分量约束相邻两帧的状态量(位置、速度、姿态),同时考虑到IMU的零偏的性质,即短时间内变换速率比较慢,因此可以认为两帧之间的零偏不变,也就是还可以约束两帧的零偏变换。 同时,在slam问题中,IMU预积分通常会和其它传感器的约束一起构建一个优化问题 无论是VIO还是LIO,IMU和其它传感器的标定结果往往对最终的里程记和建图性能有着显著的影响。同样,在多传感器融合算法中,传感器之间
IMU器件 IMU的全称是惯性测量单元,包括一个三轴的加速度计以及一个三轴的陀螺仪,分别测量出物体的加速度和角速度信息,不受周围环境结构、光照等外界因素影响。通常IMU的输出频率在100-1000hz之间,远高于相机或者激光雷达的输出频率,一方面可以提高整体系统的输出频率,另一方面,可以在视觉或者激光雷达短期失效的时候提供一段时间的位姿推算。 在大多数的LIO或者VIO中,关于IMU的输出的建
LIO-SAM的全称是:Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 从全称上可以看出,该算法是一个紧耦合的雷达惯导里程计(Tightly-coupled Lidar Inertial Odometry),借助的手段就是利用GT-SAM库中的方法。 LIO-SAM 提出了一个利用GT-SAM的紧耦合激光雷达惯
前言 LeGO-LOAM的全称是 Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain 其中LeGO就是轻量级和利用地面优化,轻量级的实现就是通过两步的优化方式,利用地面优化的部分也在两步优化的第一步中。 和原始LOAM一样,通过前后两帧点云来估计两帧之间的运动,从而累加得到前端里程计的
前言 广度优先遍历(BFS)算计介绍 广度优先遍历(BFS)和深度优先遍历(DFS)同属于两种经典的图遍历算法 广度优先遍历算法:首先从某个节点出发,一层一层的遍历,下一层必须等到上一层节点全部遍历完之后才会开始遍历基本思想:尽最大程度辐射能够覆盖的节点,并对其进行访问。 用一道BFS的题来进行举例 以M节点为顶点的话则遍历顺序为:MNQP或MNPQ或MQNP或MQPN或MPQN
前言 地面点提取方法 LeGO-LOAM中前端改进中很重要的一点就是充分利用地面点,本片博客主要讲解 如何进行地面点提取 如下图所示,相邻的两个scan的同一列,打在地面上,形成两个点A和B。 它们的垂直高度差为h,这个值在理想情况(雷达水平安装,地面是水平的)接近于0水平距离差d和水平面的夹角为如果为地面点,在理想情况下,这个角点接近0. 但是雷达的安装不会完全水平,并且地面也不是平的
轻量级激光雷达里程计和建图方法 系统框架 整体框架如下: 输入:三维激光点云 输出:六自由度位姿估计 整个系统可以分为五个模块: 分割:指获取单次扫描的点云,并将其投影到距离图像上进行分割。_16_1800个点用cvmat来对点进行初步管理* 特征提取:分割的点云被发送到特征提取模块。 激光雷达里程计:使用从先前模块中提取的特征点进行帧间位姿估计 激光建图部分:这些特
论文的标题是:LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain 标题给出的应用场景是 可变地形 重点是 轻量级 并 利用 地面优化 本质依然是一个 激光雷达里程计和建图 摘要部分 文章提出了一种轻量级、基于地面优化的激光里程计和建图算法LeGo-
LeGO-LOAM 简介 LeGO-LOAM 的英文全称是 lightweight and ground optimized lidar odometry and mapping。轻量化具有地面优化的激光雷达里程计和建图 其框架如下,大体和LOAM是一致的LeGO-LOAM是基于LOAM的改进版本,其主要目的是为了实现小车在多变地形下的定位和建图,针对前端和后端都做了一系列的改进。 在原本的
前言 在之前的博客中对ALOAM的前端和后端做了代码详细的梳理 这里先对前几篇后端的内容做一个总结 这篇博客中,首先对订阅的前端的数据做了处理 这篇博客中,对地图进行栅格处理并根据当前帧位姿提取局部地图 这篇博客中,对当前帧中的角点和面点与局部地图的角点和面点构建Ceres约束 这篇博客中,通过Ceres进行位姿优化 这篇博客中,进行里程计到地图位姿更新维护 本篇为ALOA
前言 在上一篇博客(ALOAM:后端lasermapping通过Ceres进行帧到地图的位姿优化)中,通过Ceres优化得到了 当前帧到地图的最优位姿 下面要做的是更新地图模块中维护的一个位姿,这个位姿就是odom到map之间的位姿变换。 为什么要更新这个位姿呢?因为在前面这篇博客中(ALOAM:后端laserMapping代码结构与数据处理分析),在收到前端里程计数据后,会以前端里程计的频
前言 上一篇博客构建了线约束和面约束,添加到了残差模块。ALOAM:后端 lasermapping构建角点约束与面点约束 本片主要介绍通过ceres构建的约束的CostFuction,及后续的通过Ceres进行位姿优化 角点的约束添加在这个地方这里的CostFunction是通过LidarEdgeFactor自定义的结构体建立的和前端里程计用的角点约束是一样的在这篇博客中做了分析原理就是求当
前言 上一篇博客中地图栅格化处理与提取完成了从整个地图中提取出要和当前帧做匹配的局部地图 下面要做的就是要构建角点约束和面点约束 后端的构建约束问题和前端不一样。原因就是前端从上一帧上去找,而后端是在局部地图上找,点要多很多,并且没有了线束信息,所以原理上不一样了。 线特征的提取通过kdtree在局部地图中找到5个最近的线特征,为了判断他们是否符合线特征的特性,需要对5个点构成的协方差矩阵
前言 栅格点云地图处理原因不同于前端的scan-to-scan的过程,ALOAM的后端是scan-to-map的算法,具体来说就是把当前帧和地图进行匹配,得到更准确的位姿同时也可以构建更好的地图.由于是scan-to-map的算法,因此计算量会明显高于scan-to-scan的前端,所以后端通常处于一个低频的运行频率,但是由于scan-to-map的精度往往优于scan-to-scan.因此后端
前面分析的ALOAM相关的链接如下:ALOAM:后端laserMapping代码结构与数据处理分析ALOAM:帧间里程计代码解读ALOAM:Ceres 优化部分及代码解析ALOAM:激光雷达的运动畸变补偿代码解析ALOAM:异常点剔除机制代码解析A-LOAM :前端lidar点特征提取部分代码解读A-LOAM :前端lidar点预处理部分代码解读 前言 ALOAM方法实现了低的漂移,并且计算的
前言 ALOAM方法实现了低的漂移,并且计算的复杂度低,实时性很好.并且不需要高精度的lidar和惯导 这个方法的核心思想就是把SLAM问题进行了拆分,通过两个算法来进行.一个是执行高频率的前端里程计但是低精度的运动估计(定位),另一个算法在比定位低一个数量级的频率执行后端建图(建图和校正里程计).这个两个算法都需要提特征点,就是经典的角点和面点,然后进行配准.在前端的那个算法中也就是里程计算
gazebo世界场景 在launch文件中加入 gazebo世界场景的配置 场景选择了软件博物馆,其中场景的结构比较丰富,适于激光雷达建图定位,颜色也比较丰富,后期还可用于相机的建图定位. <!-- 设置gazebo世界 --> <arg name="world" value="$(find robot_sim_demo)/worlds/ROS-Aca
前言 A-LOAM的cpp有四个,其中 kittiHelper.cpp 的作用是将kitti数据集转为rosbag剩下的三个是作为 slam 的 部分,分别是: laserMappin.cpp ++++ 当前帧到地图的优化 laserOdometry.cpp ++++ 帧间里程计 scanRegistration.cpp ++++ 前端lidar点预处理及特征提取 本篇主要解读
前言 Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。 Ceres可以解决边界约束鲁棒非线性最小二乘法优化问题。这个概念可以用以下表达式表示:这一表达式在工程和科学领域有非常广泛的应用。比如统计学中的曲线拟合,或者在计算机视觉中依据图像进行三维模型的构建等等。 ALOAM里面的优化问题的建模和求解都是通过Ce
前言 ROS功能包:livox_camera_lidar_calibration提供了一个手动校准Livox雷达和相机之间外参的方法,已经在Mid-40,Horizon和Tele-15上进行了验证。其中包含了计算相机内参,获得标定数据,优化计算外参和雷达相机融合应用相关的代码。本方案中使用了标定板角点作为标定目标物,由于Livox雷达非重复性扫描的特点,点云的密度较大,比较易于找到雷达点云中角点
前言 前两篇介绍了相机和livox激光雷达外参标定:ROS功能包的livox_camera_lidar_calibration 和使用方法.具体链接: 链接1 链接2 本篇在gazebo中搭建可以模拟产生livox_camera_lidar_calibration功能包需要的数据的仿真场景. 场景搭建要求 下面总结下,针对livox_camera_lidar_calibrati
livox_camera_lidar_calibration 功能包介绍 该功能包提供了一个手动校准Livox雷达和相机之间外参的方法,已经在Mid-40,Horizon和Tele-15上进行了验证。其中包含了计算相机内参,获得标定数据,优化计算外参和雷达相机融合应用相关的代码。本方案中使用了标定板角点作为标定目标物,由于Livox雷达非重复性扫描的特点,点云的密度较大,比较易于找到雷达点云中角
相机与激光雷达外参标定 什么是相机与激光雷达外参标定?就是相机坐标系和激光雷达坐标系的TF变化。位置x,y,z 欧拉角 roll,pitch,yaw,6个变量构成一个4*4的旋转变换矩阵标定的就是这个4维的旋转矩阵。 标定的方法有: 基于特征 基于运动观测 基于最大化互信息 基于深度学习 基于特征 的方法是根据对应特征点求解PnP问题,需要标定板来获取特征基于运动观测可以看作
在这篇博客中介绍了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下提取,强大的异常值排除,运动物体过滤,运动失真补偿。 此集成了其他功能,例如可并行
功能包能在环境下编译通过就可以
A-LOAM的代码就可以呀,github上下就行
直接在这里说就可以哈
对
ICP就是 可以同时获得 平移和偏转呀
感谢鼓励,继续加油
没啥区别
gazebo环境没有特殊的地方gazebo的仿真各文件在之前的博客有说明
原因感觉很简单。你得代码写错了你在CMakeList.txt中写得是这个:geometry_mags,你应该想写得是这个吧:geometry_msgs
如果是我,我会把经纬度坐标转换到本地坐标,然后控制车辆移动就ok了
已发,毕竟点赞了还
当时没有截图,就安装上面说的配置就行
我的版本好像是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肯定生成不了。解决了第一个问题再看第二个问题
古月居优秀创作者
积分
粉丝
勋章
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信