Fast Planner——代码解读参考资料整理

2023-05-16

1 地图部分

1.1 EGO-Swarm代码解读-地图部分

参数解读
主要函数解读

1.2 EGO-Swarm代码阅读笔记之GridMap类

1.3 EGO-PLANNER代码阅读(地图部分)

1.4 欧几里得距离转换(EDT)算法

1.5 EDT欧式距离变换

1.6 栅格地图建立-Grid-Mapping

概率栅格地图,概率更新过程的公式推导过程
全概率公式、贝叶斯公式

2 路径搜索部分

2.1 Fast-Planner代码阅读-1. Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight

一. kinodynamic a_star(前端hybrid A_star动力学路径搜索)
1.1启发函数的计算
1.2 Compute shot Traj
1.3 节点扩张
1.4 节点剪枝
1.5 返回kinopath与 getsamples
二、B样条曲线设置
2.1 均匀B样条设置
2.2 B样条函数值计算
2.3 控制点获得-前端路径拟合
2.4 非均匀B样条一阶及二阶微分
2.5 可达性检查
2.6 小结
三、B样条优化
3.1 优化项计算
3.2 优化项结合
3.3 Nlopt优化
3.4 小结
四. 规划系统运行逻辑
4.1 plan_mannager
4.2 kino_replan_fsm.cpp
4.3 流程总结

2.2 【项目解读】fast_planner工程解读

一、规划系统运行逻辑【业务部分】
1.Fast_planner_node.cpp【程序入口】
功能
代码实现
2.kino_replan_fsm.cpp【状态机转移】
功能
代码实现
KinoReplanFSM::init()函数
订阅目标点回调函数
订阅里程计回调函数
【重要】执行状态机FSM定时器回调函数
【重要】路径规划并检查规划是否成功(planner_manager的入口)
【重要】判断目标点是否有障碍物或者是轨迹执行过程中是否有障碍物的回调函数
3.planner_manager.cpp【算法拼接部分】
功能
【核心函数–正常情况的规划】FastPlannerManager::kinodynamicReplan()
【核心函数–航向角yaw规划】FastPlannerManager::planYaw()
为什么要进行航向角yaw规划
核心思想
其他函数接口
二、规划系统算法部分
1.前端kinodynamic A*算法动力学路径搜索
2.后端轨迹优化
(1)Bspline曲线拟合
(2)bspline_opt非线性优化器
3.安全检查线程(safetyCallback)
功能
原理
4.轨迹处理控制指令traj_serve
功能
三、Gazebo仿真环境运行步骤
1.使用激光雷达作为传感器
2.使用RGBD相机作为传感器
总结

2.3 【路径生成–基于运动学的A*图搜索方法】运动学/动力学Kinodynamic A*算法

一、前端kinodynamic A*算法动力学路径搜索的功能
二、步骤一:进行实时采样,离散的获得一些轨迹点(节点point_set,即创建open_list)以及起始点的速度与加速度
1.功能
2.代码实现
三:步骤二:设置算法搜索参数setParam()
四、步骤三:整体的搜索过程search()–包括进行节点扩张-剪枝
1.整体搜索的逻辑流程
手撕示例图
步骤详细解释
2.代码实现
五、步骤四:获取规划得到的路径点getKinoTraj()
1、功能
2、代码实现
六、关键函数分析【重点】
(1)计算启发代价值H estimateHeuristic()
1、原理
2、代码实现
(2)计算当前节点的真实的代价G值
(3)计算一条直达曲线computeShotTraj()
1.原理
2.代码实现
(4)节点扩张、节点剪枝流程
1.节点扩张
2.节点剪枝
总结
参考资料

2.4 Faster Planner——Kinodynamic Astar详解

文中给出了启发成本 Heuristic Cost的详细公式推导,可与KinodynamicAstar::estimateHeuristic( )KinodynamicAstar::computeShotTraj( ) 等函数中代码相对应。
在这里插入图片描述

2.5 Optimal Boundary Value Problem (OBVP) 学习笔记

给出了OBVP问题求解的详细推导过程,可与上面一篇及下面一篇文章同时阅读。

2.6 运动规划课程第四次作业——考虑运动约束的路径规划代码全解析

2.7 fast planner代码解析–kino_replan_fsm.cpp

KinoReplanFSM::init()函数
void KinoReplanFSM::waypointCallback()订阅目标点回调函数
void KinoReplanFSM::odometryCallback()订阅里程计回调函数
void KinoReplanFSM::changeFSMExecState() 改变执行状态机FSM函数
void KinoReplanFSM::printFSMExecState()输出执行状态机状态函数
void KinoReplanFSM::execFSMCallback()执行状态机FSM定时器回调函数
void KinoReplanFSM::checkCollisionCallback() 回调碰撞检测函数
路径规划并检查规划是否成功

3 后端优化部分

3.1 Fast-Planner代码阅读-1. Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight

与2.1是同一篇博客。

3.2 贝塞尔曲线,B-样条,非均匀有理B样条梳理

一些关于贝塞尔曲线和B样条曲线的基础概念。

3.3 计算机表示物体形状的基本方法、贝塞尔曲线、B样条曲线、NURBS 曲线、Catmull-Rom 样条曲线

一些关于贝塞尔曲线和B样条曲线的基础概念。

3.4 Fast planner 基本原理学习(一)

部分B样条理论公式推导。以及Fast planner原理架构图。

4 github中参考代码(有部分注释)

  • https://github.com/Mesywang/Fast-Planner-Noted

仓库代码注释于2020年2月,只包含Hybrid A* + 基于梯度的B-Spline优化方案,不包括作者后来提交的版本。

  • https://github.com/amov-lab/Prometheus/wiki/%E4%BD%BF%E7%94%A8FastPlanner%E8%BF%9B%E8%A1%8C%E8%BD%A8%E8%BF%B9%E4%BC%98%E5%8C%96

阿木实验室Prometheus项目中关于Fast Planner代码的注释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fast Planner——代码解读参考资料整理 的相关文章

随机推荐

  • 简述TCP的三次握手过程

    TCP握手协议 在TCP IP协议中 TCP协议提供可靠的连接服务 采用三次握手建立一个连接 第一次握手 xff1a 建立连接时 客户端发送syn包 syn 61 j 到服务器 并进入SYN SEND状态 等待服务器确认 xff1b SYN
  • buildroot使用外部编译链编译bluez蓝牙工具

    在开发ublox w263 wifi蓝牙时 xff0c 之前是使用yocto系统集成编译出的bluez工具 xff0c 减少了自己编译工具软件和依赖库的工作 xff0c 切换项目使用原生linux系统后 xff0c 所以的软件需要自己编译
  • 软件替代硬件HW_RANDOM随机数解决方案

    问题背景 使用低成本平台方案时 xff0c 发现不支持HW RANDOM硬件随机数 xff0c 这样在开启wifi wpa2加密ap后 xff0c 电脑多次提示连接失败才连接成功 xff0c 很影响用户体验 硬件不支持硬件随机数那么就需要使
  • Android下打印出现read: Unexpected EOF!分析

    背景 xff1a 在抓SmePlayer打印时 xff0c 打开debug级别后 xff0c xshell终端就嘟嘟响然后打印出几百行后就打出read Unexpected EOF 结束了 这时候完全没有抓到我需要的打印 xff0c 用lo
  • VMWare中处理器和内存配置含义

    背景 在创建虚拟机系统后 xff0c 默认处理器配置都是为1 xff0c 内存一般选为1G xff0c 然而在使用Linux系统编译大型软件时 xff0c 速度慢耗时较长 xff0c 这时候就需要调整一下处理器和内存配置 xff0c 使得计
  • Linux mkfs.ext4命令参数使用

    命令使用 mkfs ext4 参数 设备 参数说明 c 格式化前检查分区是否有坏块 Checking for bad blocks read only test 19 34 done 0 21 elapsed 0 0 0 errors Ch
  • Xshell 6多个会话窗口消失只能显示一个问题解决

    背景 某一天同事操作了我的Xshell导致我的会话窗口消失只能显示一个 xff0c 通过点击选项卡排列可以显示出消失的窗口 xff0c 但是使用极为不方便 xff0c 下面问题解决 解决 正常显示 xff1a 有三个选项窗口 异常显示 xf
  • OpenWrt学习(一)搭建Linux开发环境

    环境 目前大部分的 linux开发都是在PC虚拟机上进行的 xff0c 所采用的 linux系统版本有 Ubuntu Redhat Debian Fedora 等 xff0c 我们一般在 windows 操作系统上利用 VMware 43
  • OpenWrt学习(三)源码大包编译

    编译大包 make V 61 99 xff0c V 61 99 用来生成编译过程的详细信息 xff0c 方便查找出错原因 xff0c 或者用V 61 s 建议加 j x xff08 x 为CPU core数量 xff09 选项 xff0c
  • Linux gcc自带检测内存泄漏工具asan

    背景 排查和检测内存泄漏的问题时 xff0c 需要选择一些好用的工具 xff0c 由于dmalloc编译复杂 xff0c valgrind依赖太多 xff0c 所以选择使用gcc自带检测内存泄漏工具asan xff0c 版本4 8之后就支持
  • Linux物理内存较少导致OOM问题分析

    背景 开发项目过程中 xff0c 发现盒子启动后物理内存持续的减少 xff0c CMA内存过了一段时间后也出现明显减少情况 xff0c 到最后会低概率性的出现OOM杀掉进程的情况 xff1b 通过ps命令监控所有进程在开机后的虚拟内存VSZ
  • BaseService --- service层的抽取

    service层的抽取和dao层的抽取差不多相同 xff0c 主要不同点是dao实例化的问题 xff0c 需要在调用时传入 xff0c 并在BaseServiceImpl接收 详细的过程说明请参考dao层的抽取 dao层的抽取 xff1a
  • 数据分析思维之用户标签

    文章目录 1 什么是标签 xff1f 2 用户标签有什么用 xff1f 3 用户标签的制作流程4 用户标签的4大常见问题4 1 没有目标 xff0c 盲目打标4 2 不区分时间状态4 3 行为动机乱归因4 4 结果缺少检验 1 什么是标签
  • 看你能坚持读几本书?!——三十本互联网必看书籍

    写在前面 一直想整理个书单 xff0c 譬如关于EA 企业架构 ABCD 人工智能 大数据 云计算 设备 逻辑 思维 沟通 影响力 领导力 管理 绩效 胜任力 战略 商业方面的书单 xff0c 这里看到了一篇整理的比较好的书单 经过简单编辑
  • Docker学习之安装docker-compose命令(采用Python-pip命令安装)

    Docker学习之安装docker compose命令 采用Python pip命令安装 本机系统环境介绍Docker Compose简介使用Python pip命令进行安装第一步 环境检查第二步 安装Python pip第三步 安装doc
  • ros 下面如何通过vrpn 连接 Optitrack

    tracking system 可以实时的计算出来regid body 的pose xff0c 如何在ros 下面得到 这个pose 呢 xff1f 首先 编译安装 vrpn 然后的话需要配置两台电脑的IP 使他们能够 互相 ping 通
  • kalman滤波器各项参数及矩阵的设置

    参考博客 xff1a https blog csdn net baimafujinji article details 50646814 简单来说 xff0c 卡尔曼滤波器的实现是一个迭代过程 xff0c 使用上一次的结果预测当前的值 xf
  • python_tweets.json (python数据挖掘入门与实践数据集下载)

    最近在看python数据挖掘入门与实践一书 xff0c 书不错 xff0c 有个不好的地方是 xff0c 书上所用的数据集 xff0c 有几个测试数据在网上非常不好找 下面几个资源是我自己整理出来的 xff0c 上传到CSDN xff0c
  • ubuntu20.04_ROS中运行gazebo控制机器人模型报错

    1 无法启动类型为 controller manager spawner 的节点 xff1a controller manager ERROR cannot launch node of type controller manager sp
  • Fast Planner——代码解读参考资料整理

    1 地图部分 1 1 EGO Swarm代码解读 地图部分 参数解读 主要函数解读 1 2 EGO Swarm代码阅读笔记之GridMap类 1 3 EGO PLANNER代码阅读 xff08 地图部分 xff09 1 4 欧几里得距离转换