SLAM
文章平均质量分 71
移动机器人SLAM
合工大机器人实验室
不积跬步,无以至千里。
展开
-
A-LOAM安装与配置
A-LOAM安装与配置并测试运行原创 2022-05-12 17:01:58 · 2210 阅读 · 1 评论 -
ORB-SLAM2栅格地图构建
ORB-SLAM2栅格地图构建原创 2022-04-25 18:49:35 · 6064 阅读 · 4 评论 -
SLAM算法包与地图处理
前言针对实验室机器人建图的一些需求,提供一些SLAM算法包的修改版本,同时提供三维点云地图pcd文件的发布,以及将三维地图转二维栅格地图的工具。地址:https://github.com/redwallbot/redwall_slamLVI-SAM一个融合IMU-相机-激光雷达的开源SLAM算法,源项目使用的是单目鱼眼相机,这里换成了普通相机,具体查看launch文件与相应配置文件。SC-LeGO-LOAM好像在原项目上没改啥publish_pointcloud为了移动原创 2022-04-25 16:55:56 · 1724 阅读 · 0 评论 -
ROS Navigation Stack安装
ROS Navigation Stack安装原创 2022-04-22 22:11:35 · 1518 阅读 · 0 评论 -
基于ORB-SLAM2实时构建稠密点云
基于ORB-SLAM2实时构建稠密点云原创 2022-04-18 17:21:13 · 6457 阅读 · 10 评论 -
ORB-SLAM2地图保存
ORB-SLAM2地图保存(1)ORB-SLAM2没有提供保存地图的接口函数,因此无法实现地图的保存// Save camera trajectory in the TUM RGB-D dataset format.// Only for stereo and RGB-D. This method does not work for monocular.// Call first Shutdown()// See format details at: http://vision.in.tum.de原创 2022-04-10 16:23:21 · 1964 阅读 · 1 评论 -
ORB-SLAM2源码阅读(2)
ORB-SLAM2源码阅读(2)Local Mapping线程我们是以mono_tim.cc示例程序为例的,在该例中首先需要构建ORB-SLAM系统// Create SLAM system. It initializes all system threads and gets ready to process frames.//构建SLAM系统,调用有参构造函数,传入参数为:ORB字典,参数配置文件,相机类型ORB_SLAM2::System SLAM(argv[1], argv[2], ORB原创 2022-04-07 21:40:46 · 597 阅读 · 0 评论 -
ORB-SLAM2源码阅读(1)
ORB-SLAM2代码阅读(1)ORB-SLAM2 的代码以结构清晰,注释完整,易于理解著称,最好先阅读一下论文再来读代码,网上有很多大神已经翻译好了,个人推荐这位的ORB-SLAM2全文翻译系统简介论文中这张图非常重要:ORB-SLAM系统同时运行三个线程:1、Tracking线程对于新读取的帧,提取ORB特征(系统初始化)当前帧位姿初值估计(根据上一帧+motion-only BA,或进行重定位)局部地图跟踪对上一步得到的位姿初值进行进一步BA优化局部地图:指Covisibi原创 2022-04-06 17:21:50 · 2180 阅读 · 0 评论 -
ORB-SLAM2配置与安装
ORB-SLAM2安装有这些依赖项:https://github.com/raulmur/ORB_SLAM2主要参考下面的博文ORB-SLAM2 初体验 —— 配置安装 - MingruiYu - 博客园 (cnblogs.com)注意在安装依赖项Pangolin时,如果是从GitHub直接git的最新版本的Pangolin,那么编译安装的时候就会出现问题1、sudo apt install libeigen3的版本可能不够,可以自己下载编译安装eigen库2、eigen库的位置需要注原创 2022-04-03 21:44:31 · 3956 阅读 · 3 评论 -
《SLAM十四讲》Ch9 run_vo.cpp一些问题的解决
编译run_vo.cpp报错发现是未添加对fmt库的依赖,但添加后依然报错,如下:对src/CMakeLists.txt更改,更改前:cmake_minimum_required(VERSION 2.8)project(vo_practice)add_library(vo_practice_lib SHARED frame.cpp mappoint.cpp map.cpp camera.cpp config.cpp visual_odometry.原创 2022-03-29 10:26:17 · 1106 阅读 · 0 评论 -
《SLAM十四讲》Ch7 VO1 对PnP结果BA优化的一点改进
bundleAdjustmentG2O( )函数实现void bundleAdjustmentG2O( const VecVector3d &points_3d, const VecVector2d &points_2d, const Mat &K, Sophus::SE3d &pose){ // 构建图优化,先设定g2o typedef g2o::BlockSolver<g2o::BlockSolverTraits<6原创 2022-03-28 14:47:29 · 776 阅读 · 0 评论 -
LOAM源码阅读
先看main函数int main(int argc, char** argv){ //ros::init(argc, argv, "scanRegistration"); ros::init(argc, argv, "scanRegistration"); ros::NodeHandle nh;//订阅 激光 和 惯性传感器的消息 ros::Subscriber subLaserCloud = nh.subscribe<sensor_msgs::PointCloud2>原创 2021-04-02 17:24:18 · 530 阅读 · 0 评论 -
节点发布导航点任务,实现自主巡航
通过传感器 和 Navigation stack 可以搭建好初始化的导航避障系统,在RVIZ中使用2D navigation goal 可以实现任务目标点和位姿的发布。查看话题和消息格式发布的话题为/move_base_simple/goal使用rostopic echo /move_base_simple/goal打印发布的任务消息这里简单复制一份过来,一起看下header: seq: 0 stamp: secs: 425 nsecs: 821000000原创 2021-02-03 11:05:51 · 1073 阅读 · 0 评论 -
ROS导航功能包Navigation Stack
Navigation Stack功能包介绍该功能包是常用于移动机器人导航与避障过程。其可以分为定位组件、代价地图组价、路径规划器组件、异常处理组件。定位组件 AMCL算法介绍请参考自适应蒙特卡罗粒子滤波定位算法。安装方法sudo apt-get install ros-kinnect-amcl需要提供的话题:二维激光传感器 LaserScan 话题激光雷达以及机器人的坐标tf转换,通常有robot_state_publisher 发布二维的栅格地图,通过建图算法获得,由map_serv原创 2021-01-28 16:32:27 · 2316 阅读 · 2 评论 -
LIO-SAM配置运行
版本:Ubuntu16.04+kineticDependencyROS sudo apt-get install -y ros-kinetic-navigationsudo apt-get install -y ros-kinetic-robot-localizationsudo apt-get install -y ros-kinetic-robot-state-publisher gtsam wget -O ~/Downloads/gtsam.zip https://git原创 2021-01-02 21:51:31 · 1475 阅读 · 0 评论 -
基于Cartographer的建图与导航
一、 RoboSense 16线雷达驱动安装 2二、 Cartographer的安装 2三、 配置文件结构说明 4四、 配置文件详解 42D lua文件的配置 52D launch文件的配置 62D pure location lua文件的配置 72D pure location launch文件的配置 73D lua文件的配置 83D launch文件的配置 93D pure location lua文件的配置 103D pure location launch原创 2020-12-30 15:37:46 · 11569 阅读 · 5 评论 -
十大滤波算法总结
转载请注明出处: http://www.geek-workshop.com/thread-7694-1-1.html1、限幅滤波法(又称程序判断滤波法)2、中位值滤波法3、算术平均滤波法4、递推平均滤波法(又称滑动平均滤波法)5、中位值平均滤波法(又称防脉冲干扰平均滤波法)6、限幅平均滤波法7、一阶滞后滤波法8、加权递推平均滤波法9、消抖滤波法10、限幅消抖滤波法11、新增...原创 2019-07-01 14:51:07 · 1917 阅读 · 0 评论 -
Eigen库的简单使用
Eigen是一个C++开源线性代数库。提供有关矩阵的的线性代数运算,解方程等功能。官方的文档在此,本文是简单的使用,快速入门。http://eigen.tuxfamily.org/dox/classEigen_1_1Transform.html一、Ubantu安装eigen$ sudo apt-get install libeigen3-dev二、eigen的主要模块 Header C...原创 2019-06-21 17:07:32 · 5198 阅读 · 1 评论 -
非线性优化(一)
一、非线性最优化的基本概念1.基本概念:规划问题的目标函数及约束函数中至少有一个是非线性函数,则称这种规划为非线性规划。非线性规划的数学模型常表示成以下形式Minf(X)hi(X)=0 i=1,2, … ,m目标函数与约束函数的方程组。设f(X)为定义在n维欧氏空间En的某一区域S上的n元实函数,其中X=(x1,x2… xn)T。局部极小点(值):对于X*...原创 2019-05-18 17:08:16 · 3942 阅读 · 0 评论 -
非线性优化(二)
一维搜索Fibonacci法(分数法)设y=f(t)是区间[a,b]上的下单峰函数(如下图),在此区间内它有唯一极小点t.若在此区间内任取两点c和d,c<d,并计算函数值f(c)和f(d),可能出现以下两种情形:1. f(c)<f(d),这时极小点t必在区间[a,d]内.2. f(c)≥f(d),这时极小点t必在区间[c,b]内.在区间[a,b...原创 2019-05-19 16:18:03 · 2149 阅读 · 0 评论 -
Matlab曲线polyfit拟合求参数
在已知输入和输出的数据基础上,获取输入输出具体的函数形式,可采用曲线拟合:一:已知函数阶数polyfit(x,y,N)x:输入的数组 y:输出的数组 N:函数的阶数构造X,Y。这里其实就是一阶函数。故意试下3阶:clc;x=1:1:10;y=2*x;coefficient=polyfit(x,y,3)结果:从右向左阶数升高。结果正确。二:未知函数阶数...原创 2019-12-14 10:49:21 · 5621 阅读 · 0 评论 -
卡尔曼滤波算法原理
卡尔曼滤波算法的深入理解_L_smartworld的博客-CSDN博客_kalman滤波算法原理 https://blog.csdn.net/L_smartworld/article/details/82145013以前对于这个算法只会调用,并没有深入的理解。现在碰到一个项目,没办法只能硬着头皮去理解了。网上看了很多资料,感觉写的也一般般,现在我讲自己的理解。 卡尔曼滤波算法的核心是动态调整权值。用过互补滤波的应该知道它的权值是静态的,而卡尔曼是动态的。刚刚接触卡尔曼也不要紧张,我来...转载 2020-08-23 14:49:13 · 1808 阅读 · 0 评论 -
Fast Segmentation of 3D Point Clouds: A Paradigm on LiDAR Data for Autonomous Vehicle Applications阅读
该篇点云论文主要分为两个阶段的创新:①点云地面点的提取(Ground Plane Fitting, GPF);②点云扫描聚类快速提取(Scan Line Run, SLR);一、Ground Plane Fitting, GPF先上伪代码图解释:第一步:首先根据输入的点云,进行一个按照高度的排序,选出N个高度最低的点,并求取高度平均值,作为后续初始种子的评价,根据高度和预设的阈值进行划分,得到种子点云(可以理解为地面点云的初始化)第二步:根据获得的初始化点云,求取平面的法向量原创 2020-10-28 11:35:16 · 1473 阅读 · 0 评论 -
Lego-loam编译安装与运行
依赖ROS (tested with indigo and kinetic) gtsam (Georgia Tech Smoothing and Mapping library)安装gtsam先决条件Boost >= 1.43 (Ubuntu: sudo apt-get install libboost-all-dev) CMake >= 2.6 (Ubuntu: sudo apt-get install cmake) A modern compiler, i.e., at l原创 2020-08-25 18:21:45 · 1697 阅读 · 2 评论 -
利用Robosense 16线雷达和IMU在自己机器人上在线实时跑3D Cartographer(二)
关于3D cartographer 需要加入IMU,如果IMU 消息加入顺利,那就很快的。下面一点一点说问题。Launch文件这里我试验了cartographer_node和cartographer_offline_node,都是可以成功的跑出来的。很关键的就是要把消息映射好,如果跑起来报错,打开rqt_graph,可以看到消息传递,如果是隐射对的,但是cartographer-ros没有订阅你的话题,建议查看下你的lua文件。比如我一开始 num_point_clouds = 2总原创 2020-07-16 15:19:47 · 1375 阅读 · 6 评论 -
Cartographer的CSM理解
原文链接:https://blog.csdn.net/weixin_35695879/article/details/103511418前言在激光SLAM中,相关性扫描匹配可是重点中的重点,而分支限界加速更是大大提高了它的实时性。本文就来详细解读一下其中的奥秘。激光SLAM前端既然是SLAM,那么通常都会分为前端和后端。前端充当里程计的角色,比如我们熟知的VO(视觉里程计)和VIO(视觉惯性里程计)。激光SLAM也需要前端,对于每一帧点云,通常是使用所谓的扫描匹配(scan-match)方法转载 2020-07-14 16:42:57 · 2215 阅读 · 1 评论 -
在自己的机器人上跑 Cartographer pure location纯定位
本文基于本人的2D Cartographer SLAMhttps://blog.csdn.net/qq_34935373/article/details/107181281话不多说:依然三个项目文件配置:launch文件:<launch> <param name="/use_sim_time" value="false" /> <param name="robot_description" textfile="$(find cartograp原创 2020-07-13 14:22:39 · 3471 阅读 · 45 评论 -
利用Robosense 16线雷达和IMU在自己机器人上在线实时跑3D Cartographer(一)
前提:1.需要三维激光启动节点,发布/points2;2.需要IMU发布imu 的相关消息。步骤和2D一样:下面我直接给文件内容,看了2D,3D应该好理解很多,不过我花了比2D多2倍的世界,可能脑子不在线:urdf文件:...原创 2020-07-12 16:03:19 · 2645 阅读 · 16 评论 -
利用Robosense 16线雷达在自己机器人上跑cartographer 2D(二)
大概流程走完,其实还是有点懵逼的,下面就官方文档,讨论下细节,要是我自己没注意到的点。Validate your bag如果是准备跑自己的或者别人的bag包,这一步是很有必要的,可以从中获得相关消息的topic和frame_id,这个在填写lua文件和launch 文件的topic重映射时可以用到。首先要在工作目录 source 下,然后执行命令:source devel_isolated/setup.bashcartographer_rosbag_validate -bag_filen原创 2020-07-08 10:17:26 · 1214 阅读 · 1 评论 -
利用Robosense 16线雷达在自己机器人上跑cartographer 2D(一)
首先,根据不同的雷达,了解雷达发布的点云消息。(IMU也是一样,了解IMU发布的点云topic)。本文使用的是Robosense 16线激光雷达,暂时未使用IMU(建议6轴,再加上GPS定位精度会高很多)发布PointCloud2类型的消息默认的topic为rslidar_points。主要步骤分为:配置URDF文件 —》配置.lua文件—》配置launch文件上述三个文件分别在cartographer的configura_files、urdf、launch文件夹下。配置URDF文件意义原创 2020-07-07 15:38:54 · 2953 阅读 · 1 评论 -
Cartographer编译安装
官网安装教程:https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html不过由于网络问题,可能在下载的时候会下载中断。我会上传我自己下载的到资源处,可能需要点金币。cartographer的安装主要是prtobuf和cartographer的安装,cartographer_ros时ROS的功能包,调用cartographer算法。安装依赖:sudo apt-get updatesudo apt-get原创 2020-07-06 15:17:30 · 1519 阅读 · 0 评论 -
相机标定和参数
操作系统:Ubuntu14.04 LTSROS版本:indigo(kinetic)摄像头:640×480像素 单目摄像头1安装相关软件$sudo apt-get install ros-indigo-camera-calibration2摄像头驱动安装$sudo apt-get install ros-indigo-usb-cam//查看结果$roslaunch usb_c...原创 2019-09-25 14:48:53 · 1245 阅读 · 0 评论 -
Ceres库,从入门到放弃
前言首先当然是安装了,安装十分简单。官网文件有很多人翻译了,例如:https://blog.csdn.net/wzheng92/article/details/79634069使用Ceres库主要来求解有界约束的非线性最小二乘问题的形式:求和符号后面的我们称之为误差项。这里我们称 ρ(·)为核函数。一般为恒等的函数(这个函数可以针对不同部分对误差的权重进行调整);官方文件称之为...原创 2019-06-24 22:09:16 · 18963 阅读 · 9 评论 -
G2O库入门
图优化本质上仍然是非线性优化。只不过利用图的方式表现出来,使问题可视化,然后可以根据可视化的结果来更好的调整优化过程。图是一种数据结构。在图优化中,用顶点(vertex) 表示优化变量,用边(edge) 表示误差项。于是,对于任意一个上述形式的非线性最小二乘问题,都可以构建一个与之对应的图。G2O库的使用主要可以分为以下几个步骤:定义顶点 定义边 配置BlockSolver(...原创 2019-06-27 19:48:48 · 2866 阅读 · 0 评论