先从路径优化开始学习FastPlanner之B样条曲线平滑路径(一):从拉格朗日插值到B样条曲线

本文主要是介绍先从路径优化开始学习FastPlanner之B样条曲线平滑路径(一):从拉格朗日插值到B样条曲线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考B站视频学习
注:我会列出学习他人的博客,但我不涉及具体推导,原理讲解,旨在于理解必须概念后写代码出效果。

  1. 给若干点如何获得一条平滑的曲线? 两个方法插值、拟合
    插值要经过给定点,拟合不用经过。
    经典插值方法:拉格朗日插值法和牛顿插值法。

区别:

拉格朗日插值法

优点
  1. 简单易懂: 拉格朗日插值法公式简单直观,易于理解和实现。
  2. 无需求导: 拉格朗日插值法不需要对函数进行求导,只需知道数据点即可。
  3. 全局性: 构造出的插值多项式在整个区间上有效,而非局部有效。
缺点
  1. 计算复杂度: 随着数据点数量的增加,拉格朗日插值法的计算量会显著增加,尤其是在多项式阶数较高时。
  2. 数值稳定性: 当数据点间距离较小时,拉格朗日插值法可能导致数值不稳定,尤其是在浮点运算中。
  3. 龙格现象: 如果数据点分布不均匀,特别是在两端密集,中间稀疏的情况下,拉格朗日插值可能出现所谓的“龙格现象”,即插值多项式在某些区域剧烈波动。
  4. 难以更新: 即使一个数据点发生变化时,需要重新计算整个插值多项式。 这点贝塞尔曲线也是,但贝塞尔曲线是种拟合方法

牛顿插值法:主要区别分段插值

优点
  1. 数值稳定性: 牛顿插值法通常比拉格朗日插值法更稳定,尤其是在数据点分布不均匀时。
  2. 递推性质: 牛顿插值法可以利用递推公式来计算差商,从而减少计算量。
  3. 易于更新: 当数据点发生变化时,只需要调整受影响的部分,而不需要重新计算整个插值多项式。
  4. 灵活性: 牛顿插值法同样支持任意数量的数据点,并且可以通过添加或删除数据点来更新插值多项式。
缺点
  1. 复杂度: 牛顿插值法需要计算差商,这在一定程度上增加了计算复杂度。
  2. 分段插值: 牛顿插值法更适合分段插值,即在每个数据点之间使用低阶多项式插值。
  3. 计算过程: 相对于拉格朗日插值法,牛顿插值法的计算过程稍微复杂一些,需要构建差商表。
  4. 龙格现象: 与拉格朗日插值法一样,牛顿插值法也可能出现龙格现象,尤其是在数据点分布不均匀时。

在这里插入图片描述

拟合一组点常用方法:贝塞尔曲线,B样条曲线

首先明确阶和次数的区别: 阶数=次数+1 意思和贝塞尔曲线同理,K次B样条曲线意思是曲线方程最高次数是K次。大家在写代码或者推的时候要统一,不要一会用阶一会用次数表示,容易混淆。
具体递推方程这里不细讲,参考替他大佬文章很清楚。先从路径优化开始学习FastPlanner
在这里插入图片描述
这里强调: 次数K和m,n关系:m=n+k+1 ,n+1表示控制点总个数(注意区分:Bi,k中i最大取n这两个n是一个值,从0开始),m表示分几段的段数,m+1表示总节点数。注意节点和控制点区别:控制点就是我们拟合给出来的点,要根据它拟合曲线。节点是人为的再细划分

然后,一般是,确定点数n,确定要几次B样条的K后,在确定出m的大小。

在这里插入图片描述
当t值取t2-t3时,根据德布尔-考克斯分段函数计算,可以看出最终只有前三个基函数非0,原因是k=0时只有在定义域内的都是1,其余全是0.
总结:根据控制点数确定n,在决定要几次B样条的k,计算出m
下一章学习fastplanner中的B样条代码

这篇关于先从路径优化开始学习FastPlanner之B样条曲线平滑路径(一):从拉格朗日插值到B样条曲线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106433

相关文章

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

Spring Boot中的路径变量示例详解

《SpringBoot中的路径变量示例详解》SpringBoot中PathVariable通过@PathVariable注解实现URL参数与方法参数绑定,支持多参数接收、类型转换、可选参数、默认值及... 目录一. 基本用法与参数映射1.路径定义2.参数绑定&nhttp://www.chinasem.cnbs

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、