fast-planner代码解读【kino_replan_fsm.cpp】

news2024/10/4 14:46:21

概述

kino_replan_fsm.cpp订阅实时定位和目标点信息,每隔0.01s执行一次状态机,进行状态切换;每隔0.05s执行一次碰撞检测,按需进行重新规划。核心为执行变量exec_state_

主要函数及作用

  1. KinoReplanFSM::init
输入:句柄
作用:launch参数读取、定时器声明、pub声明、sub声明
  1. KinoReplanFSM::waypointCallback
作用:孤立目标点回调函数:设置目标点位置、速度并进行其球形的可视化、执行状态变量更新
  1. KinoReplanFSM::odometryCallback
作用:定位回调函数:位置、航向、三轴速度、标志位置true(表明接受到定位数据)
  1. KinoReplanFSM::changeFSMExecState
作用:按照给定参数进行执行状态变量的更新,并打印输出

5.KinoReplanFSM::printFSMExecState

作用:打印当前执行状态变量的数值
  1. KinoReplanFSM::execFSMCallback
作用:定时器,0.01s执行一次:状态机。本质是根据各种触发条件完成规划器在各状态间的转移
  1. KinoReplanFSM::checkCollisionCallback
作用:0.05s的定时器,碰撞检测。  
1、当前局部轨迹未来一段时间和障碍物存在碰撞风险则重规划            
2、接收到目标点,目标点处于视野范围内,但是目标点距离障碍物太近则重规划(目标点附近进行采样,寻找可替代目标点)
  1. KinoReplanFSM::callKinodynamicReplan
作用:
1.进行起始状态到终止状态间的满足动力学、避障、顺滑性、局部子目标点的局部轨迹,若成功则进行局部轨迹yaw的规划 
2.进行局部轨迹与yaw规划的b样条消息发布
3.进行初始动力学路径和局部轨迹b样条采样点控制点的可视化
返回值:局部规划成功返回true;失败返回false

状态机:状态转移图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1460781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SD-WAN解决方案:企业异地组网挑战之视频会议

随着企业的发展,不少企业开始面临规模扩大、分公司组建、异地办公的需求。其中,远程视频会议作为企业异地管理和运营的重要组成部分,对网络稳定性和视频传输质量有较高的要求。在本文,我们将探讨企业视频会议遇到的网络问题以及这…

SpringBoot+Vue+MySQL:图书管理系统的技术革新

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

面试经典150题——生命游戏

​"Push yourself, because no one else is going to do it for you." - Unknown 1. 题目描述 2. 题目分析与解析 2.1 思路一——暴力求解 之所以先暴力求解,是因为我开始也没什么更好的思路,所以就先写一种解决方案,没准写着写…

2月21日

Bean生命周期 过程概述 创建对象 实例化(构造方法) 依赖注入 初始化 执行Aware接口回调 执行BeanPostProcessor.psotProcessBeforeInitialization 执行InitializingBean回调(先执行PostConstruct) 执行BeanPsotProcessor.postProcessAfterInitialization 使用对象 销毁对象…

Javaweb之SpringBootWeb案例之切入点表达式的详细解析

3.3 切入点表达式 从AOP的入门程序到现在,我们一直都在使用切入点表达式来描述切入点。下面我们就来详细的介绍一下切入点表达式的具体写法。 切入点表达式: 描述切入点方法的一种表达式 作用:主要用来决定项目中的哪些方法需要加入通知 …

ffmpeg TS复用代码详解——mpegtsenc.c

一、mpegtsenc.c 整体架构 二、主要函数 mpegts_write_pes(AVFormatContext *s, AVStream *st, const uint8_t *payload, int payload_size, int64_t pts, int64_t dts)这个函数就是TS打包的主函数了,这个函数主要功能就是把一帧数据拆分成188字节的TS包&#xff0…

自助点餐系统微信小程序,支持外卖、到店等

总体介绍 系统总共分为三个端:后端,后台管理系统、微信小程序。 基于当前流行技术组合的前后端分离商城系统: SpringBoot2MybatisPlusSpringSecurityjwtredisVue的前后端分离的商城系统, 包含分类、sku、积分、多门店等 预览图…

FariyGUI × Cocos Creator 入门

前言 程序员向的初探Cocos Creator结和FairyGUI的使用,会比较偏向FairyGUI一点,默认各位读者都熟练掌握Cocos Creator以及js/ts脚本编写。 初探门径,欢迎大佬指教,欢迎在评论区或私信与本人交流,谢谢! 下…

DBSCAN密度聚类介绍 样本点 样本集合 半径 邻域 核心对象 边界点 密度直达 密度可达 密度相连

DBSCAN密度聚类介绍 样本点 样本集合 半径 邻域 核心对象 边界点 密度直达 密度可达 密度相连 简介概念定义原理DBSCAN的优点DBSCAN的缺点小尝试制作不易,感谢三连,谢谢啦 简介 DBSCAN(Density-Based Spatial Clustering of Applications wi…

Codeforces Round 927 (Div. 3)(A,B,C,D,E,F,G)

这场简单些,E题是个推结论的数学题,沾点高精的思想。F是个需要些预处理的DP,G题是用exgcd算边权的堆优化dijkstra。C题有点骗,硬啃很难做。 A Thorns and Coins 题意: 在你的电脑宇宙之旅中,你偶然发现了…

LeetCode 0105.从前序与中序遍历序列构造二叉树:分治(递归)——五彩斑斓的题解(若不是彩色的可以点击原文链接查看)

【LetMeFly】105.从前序与中序遍历序列构造二叉树:分治(递归)——五彩斑斓的题解(若不是彩色的可以点击原文链接查看) 力扣题目链接:https://leetcode.cn/problems/construct-binary-tree-from-preorder-a…

java数据类型、运算符

一、数据的表示详解 1.1 整数在计算机中的存储原理 任何数据在计算机中都是以二进制表示的。那这里肯定有人问,什么是二进制啊?所谓二进制其实就是一种数据的表示形式,它的特点是逢2进1。 数据的表示形式除了二进制(逢2进1&…

Https证书续签-acme.sh-腾讯云之DnsPod

ename 域名切换到 DnsPod 上面解析 可以先看下之前的 acme.sh 介绍文章然后再来次补充更多。 之前说过了 acme.sh 在阿里云下的使用。 这里做个后续补充 之前的域名是在 ename 上的 ,为了自动续签切换到 DnsPod 上面解析 注意事项 可以把原来 ename 上的解析先导出…

Android全新UI框架之Jetpack Compose入门基础

Jetpack Compose是什么 如果有跨端开发经验的同学,理解和学习compose可能没有那么大的压力。简单地说,compose可以让Android的原生开发也可以使用类似rn的jsx的语法来开发UI界面。以往,我们开发Android原生页面的时候,通常是在xml…

【八股文面试】Java基础常见面试题总结(上)

Java基础常见面试题总结(上) Java有哪些特性 简单易学;面向对象(封装,继承,多态);平台无关性( Java 虚拟机实现平台无关性);支持多线程( C 语言没有内置的多…

Springcloud:LiteFlow

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、LiteFlow简介 二、规则编排关键字及语法 1、THEN: 2、WHEN: 3、AND: 4、OR: 5、IF: 6、ELSE&…

手动代码实现神经网络

网络结构 第一层有13个神经元,第二层8个神经元,第三层是输出层;其中第一层的激活函数是relu,第二层是sigmoid 代码实现 # 导入库 import torch import torch.nn as nn from torch.nn import functional as F # 确定数据 torch…

使用IntelliJ IDEA查看接口的全部实现方法

在大型Java项目中,经常会使用接口和抽象类进行代码设计。为了更好地了解代码结构和功能,我们需要快速查看一个接口的所有实现类。IntelliJ IDEA提供了一些方便的方法来实现这一目标。 1. 点击查看接口的实现子类 在IDEA中,你可以轻松地查看…

swagger 内容信息与代码不一致,已解决

ApiModel是Swagger中的常用到的注解,检查下信息错误的实体类的ApiModel的value值是否一致,应该是写错了,是不是张冠李戴了