SLAM
文章平均质量分 66
季马宝宝
侠之小者,为情为私
展开
-
简单理解梯度下降法、牛顿法、高斯牛顿法、列文伯格-马夸尔特法(LM)
梯度下降法,沿着一阶导方向(雅可比矩阵)走。二维搜索问题的话可以形象理解为用平面拟合当前位置,沿着切向肯定移动最快。主要问题收敛速度慢。牛顿法,通过二阶泰勒展开求极值。二维搜索问题的话可以形象理解为用二次曲面,直接往这个曲面的最低点运动最快。主要问题是黑塞矩阵(二阶偏导)计算复杂度高,初值要求高,并且容易到局部最优。高斯牛顿法,牛顿法在最小二乘问题上的应用,通过假设和推导可以利用雅可比矩阵表达黑塞矩阵,计算复杂度降低。主要问题“同样初值要求高,并且容易到局部最优”LM算法,梯度下降法和高斯牛顿法之间原创 2023-07-04 23:37:55 · 318 阅读 · 0 评论 -
从零开始的三维激光雷达SLAM教程第一讲(搭建运行环境,并跑Kitti数据集)
你也可以不安装opencv,删除src下的Kittihelper,我后面会使用将Kitti转ROSbag的方式制作数据集,然后山调scanRegistration文件中的包含的opencv头文件,因为根本没用到。其实网上直接就有很多rosbag,但是还是将Kitti数据集制作成rosbag,这样在其他SLAM算法中也可以使用对比,总规是要对比算法效果的。先从git上clone代码,使用了我常用的ghproxy代理下载,直接clone可能会有网络问题,当然也有很多其他办法。原创 2023-03-28 01:03:45 · 3272 阅读 · 7 评论 -
SLAM笔记——turtlebot传感器ekf实验实验
imu的误差可以在urdf文件中进行调整,但是gazebo提供的odom却是完美的,因此我们需要手动给其添加误差,这个误差是累积的。gazebo中给的odom是完美的,所以我们需要给它增加噪声,这个噪声是累加的,因此我们需要记录前一次odom数据做差,加上噪声融入到新的odom_noise中去。中,里面robot_pose_ekf是和官网上有点不同的(增加了gps,并且取消了发布odom的tf,因为会冲突)。最基本的包,包含了速度、加速度、角速度、角加速度、位姿的各种表示方法等多种基本的消息类型,原创 2023-01-19 23:44:48 · 2460 阅读 · 8 评论 -
Python手写Bresenham画线算法(线段+射线)
#画线算法def draw_line(ori_canvas,x1,y1,x2,y2,color): canvas=copy.deepcopy(ori_canvas) delta_x=x2-x1 delta_y=y2-y1 if(delta_x==0): for i in range(min(y1,y2),max(y1,y2)+1): canvas[x1][i]=color return canvas if(d.原创 2022-03-01 00:32:02 · 1923 阅读 · 3 评论 -
SLAM笔记——获取gazebo真实位姿
调用gazebo/get_model_state服务,通过机器人的名字直接获得真实位姿信息,并以pose发布/* * @Author: Jimazeyu * @Date: 2022-02-18 03:19:20 * @LastEditors: OBKoro1 * @LastEditTime: 2022-02-18 04:38:48 * @FilePath: /catkin_ws/src/map_tutorials/src/pose_publisher.cpp */#include"ros/r原创 2022-02-18 20:41:30 · 1846 阅读 · 4 评论 -
SLAM学习笔记——从零搭建完整的gazebo多机仿真SLAM(四)
引言到了本次教程的最后一章,之前我们使用了单机器人SLAM,多机器人地图融合SLAM,以及多个机器人在地图中的导航。最后一章(后面可能会有新的章节,第一系列到此为止),我们将使用explore_lite功能包,使机器人在建图的过程中,自主已经建立地图中最适合拓展的前沿,并自动边导航,边构建地图,直到整张地图构建完成。...原创 2022-02-12 19:00:51 · 2310 阅读 · 5 评论 -
SLAM学习笔记——从零搭建完整的gazebo多机仿真SLAM(三)
引言我们已经可以使用多台机器人一起进行SLAM,并把地图进行融合。这次,我们在已经构建好的地图中,让多台机器人定位并进行运动规划。环境搭建我们直接看launch文件,除了启动仿真环境放入机器人外,我们还加入了acml和move_base节点,acml可以使得机器人可以通过雷达扫描数据判断自身在地图中的位置,move_base可以进行路劲规划。网上有很多教程,但是我这里的核心难度在于存在多个机器人,所以需要存在很多命名空间冲突的问题,需要搞清楚acml和move_base分别订阅了什么topic,才能原创 2022-02-12 19:00:41 · 2019 阅读 · 2 评论 -
SLAM学习笔记——从零搭建完整的gazebo多机仿真SLAM(二)
文章目录引言引言接着上一课讲的内容,我们使用上一课slam构建的地图,进行机器人的定位与导航。原创 2022-02-12 19:00:29 · 2643 阅读 · 1 评论 -
SLAM学习笔记——从零搭建完整的gazebo多机仿真SLAM(一)
文章目录引言第一部分 搭建gazebo仿真环境使用gazebo的building_editor搭建地图使用launch文件加载world文件第二部分 放入你的机器人引言这是一段比较完整的教程。将分为四篇文章四部分内容:搭建gazebo仿真环境,并且在虚拟环境中运行slam算法,保存环境地图。使用map_server打开保存的地图,并且使acml定位和move_base进行自主导航使用explore_lite功能包实现机器人边自主导航,边构建地图使用多个命名空间搭建多机器人SLAM系统PS:文原创 2022-02-12 19:00:16 · 11766 阅读 · 29 评论 -
SLAM学习笔记——贝叶斯滤波(非参数滤波篇)
非参数滤波可以模拟非线性情况,主要介绍两种滤波,直方图滤波和粒子滤波,后者被广泛应用于机器人学中。离散贝叶斯滤波可以对比一下连续贝叶斯滤波,我在连续贝叶斯滤波中就是按照离散来讲的,离散应该更好理解。直方图滤波将先验概率用直方图分段,利用积分求出每个分段平均值和概率代表一个离散的状态,利用离散贝叶斯滤波和转移方程,求出后验概率。动态分解与静态分解动态分解就是概率越高,分的越密粒子滤波用无数粒子表示状态,概率越密集,采样越密集直接看伪代码输入分别是上一时刻的粒子群,控制数据,观测数原创 2022-02-01 00:25:49 · 3113 阅读 · 0 评论 -
SLAM学习笔记——贝叶斯滤波(高斯滤波篇)
文章目录贝叶斯滤波高斯滤波卡尔曼滤波(KF)拓展卡尔曼滤波(EKF)密度滤波器(AKF)无迹卡尔曼滤波(UKF)信息滤波&拓展信息滤波参考概率机器人,只有如何使用先明确几个定义:Z代表观测状态,比如雷达、GPS告诉我们机器人在哪里u代表控制数据,比如向前十米、向后十米,这个数据可以由里程计、IMU提供x代表真实的状态执行控制后的后验概率结合观测后的后验概率贝叶斯滤波我们把积分当成求和理解更清晰,比如上一次预测出来我们的位置在x1,x2,他们的概率分别为0.1,0.9,经原创 2022-01-31 01:04:25 · 1342 阅读 · 4 评论 -
SLAM学习笔记——李群李代数简单理解
在知道了旋转矩阵、欧式变换的概念之后,我们学习李群李代数。李群李代数是什么我也讲不清楚。但是在SLAM中,我们只用到两种李群和李代数李群:SO3 SE3李代数:so3 se3SO3代表旋转矩阵,SE3代表欧式变换矩阵,so3代表一个三维的表示旋转的向量,se3代表一个六维的表示欧式变换的向量(这并不恰当,但是如果只是想用理解到这里就可以了)SO3、SE3和so3、se3一一对应(限定旋转在360度内),运算也存在映射,李群中就是乘法运算,李代数中就比较复杂了(使用sophus库吧)。矩阵形式(李原创 2022-01-30 23:52:39 · 2769 阅读 · 0 评论 -
SLAM学习笔记——结合pangolin和eigen可视化
pangolin是一个基于opengl开发的图形库,可以在linux上运行。可以使用eigen和pangolin自己写一个程序展示运行轨迹和坐标变换,比起rviz+tf的拓展性更高。下面是注释的很详细的代码,main里面生成了一个椭圆的轨迹code:#include"ros/ros.h"#include"Eigen/Core"#include"Eigen/Geometry"#include"Eigen/Dense"#include"pangolin/pangolin.h"#include &l原创 2022-01-30 18:58:47 · 2211 阅读 · 0 评论 -
SLAM学习笔记——坐标变换与eigen库
文章目录Eigen库的编译内积与外积只涉及最基本的含义,以及如何使用Eigen库的编译内积与外积参考这篇博客内积就是投影,外积大小为absinθabsin\thetaabsinθ,方向垂直于两个向量,几何意义我也不是很明确。具体性质啥的还挺多的,但是我也用不到,了解基本的计算法则就好。...原创 2022-01-30 00:47:36 · 1030 阅读 · 0 评论 -
SLAM学习笔记——基础知识补充(牛顿法与ceres)
文章目录牛顿法雅可比矩阵与黑塞矩阵与梯度泰勒展开梯度下降牛顿法和LM修正拟牛顿法牛顿法非线性最小二乘高斯牛顿法比较ceres库简单应用补充一些最优化的基础知识,现代的人工智能、控制理论一类基本都是基于优化理论的。想学好这门课需要扎实的线性代数基础。牛顿法是SLAM中使用最多的优化方法,利用ceres库可以进行求解。牛顿法雅可比矩阵与黑塞矩阵与梯度先问一个问题,什么是方向导数?什么是梯度?方向导数是一个数字,就是在某个方向下的变化速度,而梯度是什么,是一个方向,在这个方向下,方向导数是最大的。雅可原创 2022-01-27 16:01:15 · 2981 阅读 · 1 评论