自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

NEO's NOTEBOOK

一个用来当笔记本的blog

  • 博客(43)
  • 收藏
  • 关注

原创 <VINS-MONO> 代码阅读笔记

FeatureTracker 视觉前端视觉回调函数发布频率控制图像消息解码调用readImage函数更新特征点ID发布特征追踪结果点坐标点ID2D图像上角点两个方向上的运动速度readImage函数 前端2D-2D追踪判断是否进行自适应直方图均衡化当上一帧有特征点时光流追踪光流外点剔除追踪成功次数计数当该帧需要“发布”时(发布频率控制)对极约束剔除外点均匀化剔除聚集点setMask 函数实现按追踪成功次数排序检查角点数是否不足,若不..

2021-09-13 17:40:18 2187

原创 <ORB-SLAM2> 代码阅读笔记

System.cc 系统控制实现System类构造函数线程初始化、开启与相互关联LocalMappingLoopClosing功能类初始化Tracking 前端追踪Map 存放关键帧和地图点KeyFrameDatabase 用于闭环检测和重定位TrackMonocular函数单目被main函数循环调用的函数主要通过调用Tracking类的GrabImageMonocular实现功能Tracking.cc 前端追踪实现Tracking类Gra

2021-08-29 20:16:15 2196

原创 <slam十四讲> 笔记

李群和李代数特殊正交群SO(3)\mathrm{SO(3)}SO(3)和特殊欧氏群SE(3)\mathrm{SE(3)}SE(3)二者对乘法封闭,对加法不封闭李代数so(3)\mathrm{so(3)}so(3)和se(3)\mathrm{se(3)}se(3),R=exp(ϕ∧)R=exp(\phi^\wedge)R=exp(ϕ∧),T=exp(ξ∧)T=exp(\xi^\wedge)T=exp(ξ∧)李代数求导相机模型相机内参KKKu=1ZK(RP+t)u=\frac{1}{Z}K(

2021-08-29 19:47:42 2081

原创 C++常见面试题整理

1. C++中类(class)和c语言中struct的区别(至少两点)(1) c++中的类默认的成员是私有的,struct默认的是共有的。(2) c++中的类可以定义成员函数,struct只能定义成员变量。2. 变量的声明和定义有什么区别?声明变量不分配空间,定义变量要分配空间。声明主要是告诉编译器,后面的引用都按声明的格式。定义其实包含了声明的意思,同时要分配内存空间。3. memset, memcpy的区别memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化

2021-03-25 11:01:03 2465

原创 Leetcode刷题笔记-位运算

目录位运算 Tips1. 概览2. 异或的逆运算是其本身题目:解码异或后的数组https://leetcode-cn.com/problems/decode-xored-array/3. 汉明距离题目:汉明距离https://leetcode-cn.com/problems/hamming-distance/submissions/位运算 Tips1. 概览符号描述运算规则&与两个位都为1时,结果才为1|或两个位都为0时,结果才为0^异或两个.

2021-03-14 10:42:32 2154

原创 Leetcode刷题笔记-动态规划

按照youngyangyang04总结的Leetcode刷题攻略进行整理,链接https://github.com/youngyangyang04/leetcode-master目录动态规划1. 最小花费爬楼梯题目:使用最小花费爬楼梯https://leetcode-cn.com/problems/min-cost-climbing-stairs/2. 不同路径题目:不同路径https://leetcode-cn.com/problems/unique-paths/3. 不同路径(网格中含障碍)题目:不

2021-03-13 20:28:29 2104

原创 Leetcode刷题笔记-回溯|贪心

按照youngyangyang04总结的Leetcode刷题攻略进行整理,链接https://github.com/youngyangyang04/leetcode-master目录回溯1. 组合问题题目:组合https://leetcode-cn.com/problems/combinations/2. 求组合总和题目:组合总和IIIhttps://leetcode-cn.com/problems/combinations/3. 多个集合求组合题目:电话号码的字母组合https://leetcode-

2021-03-12 21:59:32 2079

原创 Leetcode刷题笔记-数组|链表|哈希|字符串|双指针|栈与队列|二叉树

按照youngyangyang04总结的Leetcode刷题攻略进行整理,链接https://github.com/youngyangyang04/leetcode-master数组1. 二分法题目:搜索插入位置https://leetcode-cn.com/problems/search-insert-position/二分法关键:定义区间的左右端点L和R,并根据自己定义的区间的开闭性质来设计循环条件,如闭区间则为while(L <= R),左闭右开区间则为while (L <

2021-02-25 11:46:42 2782 1

原创 Leetcode刷题笔记-标准库

标准库栈 stackpush() 压入栈pop() 弹出首元素top() 返回首元素队列 queuepush() 压入队列pop() 弹出队列头元素front() 获取队列头元素,注意这里不是top堆 priority_queue默认最大堆最小堆 priority_queue<int, vector, greater>找第k大元素:转换思路,维护k个元素的最小堆,堆底为最大,堆顶为第k大字符串 stringsubstr(起始下标, 子串长度) 获取子串.

2021-02-10 13:26:27 2083

原创 运动规划中的优化算法(Numerical Optimization)及其拓展和应用

论文阅读笔记,记录个人理解。目录[1] 参数优化控制基础[2] 时间维度的引入[3] 应用优化算法进行采样[1] 参数优化控制基础A. Kelly and B. Nagy, “Reactive Nonholonomic Trajectory Generation via Parametric Optimal Control,” The International Journal of Robotics Research, vol. 22, no. 7–8, pp. 583–601, Jul.

2020-08-13 23:05:29 4250 4

原创 计算机图形学-样条曲线Spline

内容来自《计算机图形学》第四版 第14章-样条表示目录[1] 样条的种类1. 插值样条2. 逼近样条[2] 参数连续性条件[2] 几何连续性条件[3] 样条描述1. 列出一组施加在样条上的边界条件2. 列出描述样条特征的行列式3. 列出一组混合函数或基函数[4] 三次样条插值方法1. 自然三次样条 Natural Cubic Spline2. Hermite 插值3. Cardinal 样条4. Kochanek-Bartels 样条样条:通过一组指定点集生成平滑曲线的柔型带样条曲线:计算机图

2020-08-11 19:20:03 9648

原创 B-Spline样条曲线及其性质

目录B-Spline 学习笔记(MOOC)[1] B样条产生的背景1. Bezier曲线的不足2. 克服不足的方法3. 如何进行分段?[2] B样条的递推定义1. B-Spline与Bezier Curve2. B样条基函数3. de Boor-Cox递推公式[3] B样条的定义区间与节点向量1. k阶B样条对应的节点向量数2. B样条函数的定义区间3. B样条曲线完整定义[4] B样条基函数的主要性质1. 局部支撑性2. 权性3. 连续性4. 分段参数多项式[4] B样条函数的主要性质1. 局部性2. .

2020-08-11 00:46:09 17085 2

原创 Bezier曲线及其性质

本文为Bezier曲线mooc教程学习笔记。目录Bezier曲线与曲面[1] Bezier曲线的背景[2] Bezier曲线[3] Bezier曲线详细定义[4] Bezier曲线举例[5] Bernstein 基函数性质[6] 贝塞尔曲线的性质[7] Bezier曲线的生成[8] Bezier曲线的拼接[9] Bezier曲线的升阶与降阶Bezier曲线与曲面[1] Bezier曲线的背景如果要求曲线通过所有的数据点,则属于插值问题;如果只要求曲线逼近这些数据点,则属于逼近.

2020-08-10 21:29:59 21009 3

原创 百度Apollo规划决策模块学习记录-3 Apollo EM Planner算法

目录Lecture 6约束的分类Apollo EM Planner优化问题的关键EM Planner的主要步骤Apollo 无人车规划模块进展Lecture 6约束的分类Soft ConstraintsDecisionsBest TrajectoryHard ConstraintsTraffic RegulationsApollo EM Planner这部分在EM Planner的论文中更细致,课程里主要概括了一些核心思路但并不完整。之后有空的话把论文笔记整理出来.

2020-08-09 23:17:45 4941 1

原创 百度Apollo规划决策模块学习记录-2 平滑曲线及二次规划问题模型

Lecture 3 + Lecture 4 + Lecture 5车辆运动模型及SL坐标系运动模型为Ackermann模型,即自行车模型;SL坐标系即Frenet坐标系。模型和坐标系老生常谈了,这里就不记录啦。SL坐标系下曲线平滑度的要求平滑的体现:曲率在一定范围内连续变化SL系下曲线平滑程度很大程度上取决于道路中心线的平滑程度不能只平滑曲率,比如U-turn转弯时,如果仅对曲率进行平滑而不考虑xy坐标的话,很可能曲率平滑了但车辆会碰撞到马路边缘。用Smoothing Spline生

2020-08-09 21:39:04 4212

原创 基于ROS的自动驾驶仿真平台开发记录-运动规划

思路同ROS Navigation,全局+局部DWA实现跟随全局路径到达目标,过程中规避障碍。

2020-08-09 15:21:47 2316

原创 百度Apollo规划决策模块学习记录-1 概述及基本算法

内容为百度技术学院apollo无人驾驶公开课的决策规划课程,资源在b站可以找到。目录Lecture 1对规划问题的理解对运动规划的理解从最简单的问题入手仍需考虑的问题运动规划的几个层次参考资料Lecture 2对路径的约束离散化ConfigurationPath Planning算法处理高维问题的方式无人车问题不是凸问题Lecture 1对规划问题的理解规划问题的本质是搜索寻找能够使f(x)最小化的x,即argmin f(x)在车辆运动规划问题中,这个问题具体化为给定车辆现在的.

2020-08-09 15:17:38 3084

原创 基于ROS的自动驾驶仿真平台开发记录-路径规划

初步搭建路径规划模块,实现了几种规划算法,测试结果如下:1 Dijkstra节点访问情况如下(广度优先):2 A Star节点访问情况如下(深度优先):3 RRT(快速搜索随机树)两次的结果如下,由于搜索树随机生长,故每次规划结果会不同4 PFM(人工势场法)目前暂时还有bug,深受Local Minima其害…比如当起点就在一个局部极小时,就永远无法找到目标。...

2020-06-07 14:50:07 3810 2

原创 基于ROS的自动驾驶仿真平台开发记录-地图搭建

暂时实现3个功能,待持续完善1 静态地图读取2 激光雷达实时数据作为障碍物信息,整合到地图上3 障碍物向周围膨胀话说这博文是越写越简洁了,连排版都懒得排...-_-

2020-06-07 14:41:20 3074 1

原创 基于ROS的自动驾驶仿真平台开发记录-车辆、传感器与环境建模

由于暂时回不去学校,再加上关于自动驾驶的一些测试如果全都用真实车辆来测试实在费时费事,于是有了做一个仿真平台的想法。在这里单独开一个分类记录一下开发过程,也算是对自己进度的一个督促。尝试用Gazebo建模一个小范围驾驶环境。用到的地物来自Gazebo的素材包。实验室用的小车是百度的Apollo酷黑。Gazebo给小车粗暴建模,挂在车上的球形和正方形用来粗略表示激光雷达和摄像头。给仿真环境做一张地图,在Rviz中可视化。在Rviz中可视化激光雷达点云数据,为了便于观察,这里激

2020-06-07 14:30:41 3972 1

原创 路径规划论文阅读小记

Dijkstra图搜索,广度优先A*图搜索,通过启发式成本h的设置完成对指定目标/目标集的寻径PFM(Potential Field Method)全局路径规划,灵活构造势场可以实现不同的目标。多势场组合对高自由度机器人/机械臂的运动进行规划。BFP(Best First Planner)利用势场进行深度优先搜索,通过填充构造鞍点从局部极小值逃逸。RRT(Rapidly E...

2020-05-07 22:55:35 662

原创 【路径规划】状态格算法 State Lattices Algorithm

EFFICIENT CONSTRAINED PATH PLANNING VIA SEARCH IN STATE LATTICESMihail Pivtoraiko and Alonzo Kelly目录EFFICIENT CONSTRAINED PATH PLANNING VIA SEARCH IN STATE LATTICES1. 逆路径生成问题2. 状态格状态格的规律性3. 准备工作:路...

2020-05-07 18:40:53 4090 4

原创 【轨迹生成】参数化最优控制 约束-控制-图形参数

Reactive Nonholonomic Trajectory Generation via Parametric Optimal ControlAlonzo KellyBryan Nagy1. 车辆的运动模型车辆运动描述:车辆状态

2020-05-07 16:01:14 5090 11

原创 【路径规划】PRM 概率道路图法 Probabilistic Roadmap Method

Probabilistic roadmaps for path planning in high-dimensional configuration spacesL.E. Kavraki,P. Svestka,J.-C. Latombe…第一步:The Learning Phase 学习阶段第二步:The Query Phase 查询阶段1. The Learning Phase –...

2020-05-04 22:26:29 2170

原创 【运动规划】RRT快速搜索随机树 Rapidly Exploring Random Tree

Randomized Kinodynamic PlanningSteven M. LaValleJames J. Kuffner, Jr.1. Exploring the State Space – 构造随机搜索树即不断在整个状态空间随机产生状态点xrandx_{rand}xrand​,在已生成的树上找到其最近邻xnearx_{near}xnear​,向其施加控制unewu_{new...

2020-05-02 15:32:45 1090

原创 【运动规划】BFP搜索Best-First Planner及填充势场Local minima

Robot Motion Planning: A Distributed Representation Approach & Numerical Potential Field Techniques for Robot Path Planning续上一篇笔记【运动规划】人工势场构造扩展 & 多点人工势场组合控制高自由度机器人4. 利用势场的搜索算法及其应对Local M...

2020-04-30 23:08:26 544

原创 【运动规划】人工势场构造扩展&多点人工势场组合控制高自由度机器人

Robot Motion Planning: A Distributed Representation Approach& Numerical Potential Field Techniques for Robot Path Planning1 一些表示A:机器人,机器人上的点成为控制点(Control Points),用p表示W:机器人所处的空间(Work Spac...

2020-04-30 18:55:34 647

原创 【局部路径规划】DWA动态窗口法 Dynamic Window Approach

The Dynamic Window Approach to Collision AvoidanceDieter Fox, Wolfram Burgard1. 航迹推演:1) 位置推算将速度增量=加速度对时间积分、角度增量=角速度对时间积分、角速度增量=角加速度对时间积分带入,得X向位置为2) 短时间间隔内加速度/角加速度恒定假设短时间内机器人所能执行的加速度/角加速度命令数...

2020-04-30 00:11:57 3380 2

原创 【全局路径规划】A*算法 A* Search Algorithm

A Formal Basis for the Heuristic Determination of Minimum Cost PathsPETER E.HART NILS J. NILSSON BERTRAM RAPHAEL启发式算法的特点:提高计算效率不一定能保证得到最优解Admissible Algorithm 可接受的算法:在足够多的步数内一定能找到最优解Optim...

2020-04-29 16:29:41 2265

原创 【全局路径规划】人工势场 Artificial Potential Field

Real-Time Obstacle Avoidance for Manipulators and Mobile RobotsOussama Khatib1. 人工势场 UartU_{art}Uart​:表现为目标引力场UxdU_{x_d}Uxd​​和障碍物斥力场UOU_{O}UO​的和,其中xxx为机器人Configuration参数,表示机器人位姿机器人总势能 UUU,在Uar...

2020-04-29 16:11:38 3094

原创 ROS局部规划器中的轨迹模拟策略-DWA使用与否的差别

#本文记录学习过程中的个人理解。欢迎指正,共同进步。Navigation堆栈中的TrajectoryPlanner(在BaseLocalPlanner里)和DWAPlanner都可以作为局部规划器,前者为默认设置。二者在生成轨迹时都会判断是否开启dwa标志位,进而执行不同的轨迹模拟策略。这里通过以下三个方面比较轨迹模拟过程中开启dwa与否的差异:速度采样范围轨迹生成方式控制命令...

2020-04-05 02:05:38 2715 1

原创 【ROS-Navigation】Recovery Behavior恢复行为源码解读

记录学习阅读ROS Navigation源码的理解,本文为RecoveryBehavior恢复行为源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。RecoveryBehavior用来应对导航过程中各模块的故障,当全局规划故障、局部规划故障、震荡时都会进入到恢复行为中,它先清理周围一定范围以外的costmap(障碍层),接下来重新执行规划,若不奏效,则旋转180度,再执行规划。交替两次后,已转过360度,若还是没能排除故障,则恢复行为失败,

2020-03-15 23:32:12 5744 6

原创 【ROS-Navigation】Costmap2D代价地图源码解读-膨胀层InflationLayer

记录学习阅读ROS Navigation源码的理解,本文为Costmap2D代价地图源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。InflationLayer没有自身的栅格地图要维护,直接在主地图上进行操作,它根据膨胀参数设置用来膨胀的“参考矩阵”,并在主地图上从障碍物出发,不断传播更新,完成对整个地图障碍的膨胀,等效于完成一个由“将机器人...

2020-03-15 00:38:05 6644 7

原创 【ROS-Navigation】Costmap2D代价地图源码解读-障碍层ObstacleLayer

记录学习阅读ROS Navigation源码的理解,本文为Costmap2D代价地图源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。障碍层地图通过订阅传感器话题,将传感器输出的障碍物信息存进buffer(剔除过高、过远的点),在本层地图上将观测到的点云标记为障碍物,将传感器到点云点连线上的点标记为FREE_SPACE。最后,在bound范围内,将本层地图合并到主地图上。

2020-03-14 21:15:37 4309 3

原创 【ROS-Navigation】Costmap2D代价地图源码解读-静态层StaticLayer

记录学习阅读ROS Navigation源码的理解,本文为Costmap2D代价地图源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。本篇记录静态地图部分的内容,主要是开启地图的订阅,以及bound和cost的更新。静态地图默认只更新一次,地图的边界也只更新一次,对于rolling地图,需要随着机器人的运动位置不断更新附近的cost,而对于非r...

2020-03-13 22:45:27 2728

原创 【ROS-Navigation】Costmap2D代价地图源码解读-2

记录学习阅读ROS Navigation源码的理解,本文为Costmap2D代价地图源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。LayeredCostmap类的地图更新函数主要分为两步,先更新bound,再更新cost,它调用Layer类方法,它在各层子地图中被重载。CostmapLayer类作为静态层和障碍层的基类,提供了一些对地图层进...

2020-03-13 21:14:33 1921 1

原创 【ROS-Navigation】Costmap2D代价地图源码解读-1

记录学习阅读ROS Navigation源码的理解,本文为Costmap2D代价地图源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。Costmap通过各层地图订阅话题、接收传感器数据,维护各层地图数据,并最终整合出一张用于路径规划的主地图。【结构示意图】 【相关文件】 costmap_2d/src/costmap_2d_r...

2020-03-13 16:45:08 5156 12

原创 【ROS-Navigation】Base Local Planner局部规划-TrajectoryPlanner源码解读-3

记录学习阅读ROS Navigation源码的理解,本文为Base Local Planner局部规划源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。本篇记录局部规划器生成路径时用到的几个“辅助工具”,内容简单也比较少。MapCell类与MapGrid类用于获取轨迹点与目标点/全局路径之间的距离,为路径打分提供参考,CostmapModel类则能够获取点、连线、多边形边缘(机器人足迹)的cost,是局部规划器与costmap间的一个桥梁。

2020-03-07 22:24:10 2069 1

原创 【ROS-Navigation】Base Local Planner局部规划-TrajectoryPlanner源码解读-2

记录学习阅读ROS Navigation源码的理解,本文为Base Local Planner局部规划源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。局部规划器以当前速度为参考,产生一个合理且可达的速度采样范围,确定下一步的速度。那么如何筛选呢?它用采样速度生成相应的仿真路径,借助costmap,从障碍物、与目标的距离、与全局规划路径的距离几...

2020-03-07 12:56:38 3959 28

原创 【ROS-Navigation】Base Local Planner局部规划-TrajectoryPlanner源码解读-1

记录学习阅读ROS Navigation源码的理解,本文为Base Local Planner局部规划源码学习记录,以文字总结、绘制结构图说明、代码注释为主。仍在学习过程中,有错误欢迎指正,共同进步。Movebase使用的全局规划器默认为TrajectoryPlannerROS,它循环检查是否到达目标点位置(给定位置误差范围内),若未到达,则调用TrajectoryPlanner类函数来进行局部路径规划,得到下一步速度,反馈给Movebase;若已到达,则检查是否到达目标姿态,若未到达,先给机器人降速至

2020-03-05 17:04:56 6366 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除