轨迹规划-B样条

news2024/9/17 7:33:22

B样条究竟是干啥的?白话就是给出一堆点,用样条的方式,给这些点连接起来,并保证丝滑的。

同时B样条分为准均匀和非均匀,以下为准均匀为例。

参考链接1:https://zhuanlan.zhihu.com/p/50626506icon-default.png?t=O83Ahttps://zhuanlan.zhihu.com/p/50626506

参考链接2:

https://zhuanlan.zhihu.com/p/536470972icon-default.png?t=O83Ahttps://zhuanlan.zhihu.com/p/536470972参考链接3:

8.6.2 B样条曲线类型划分_哔哩哔哩_bilibili8.6.2 B样条曲线类型划分是计算机图形学bezier曲线曲面B样条曲线曲面的第25集视频,该合集共计27集,视频收藏或关注UP主,及时了解更多相关视频内容。icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1Dt411f7Qj?p=25&vd_source=c0f0446e22649eeb5ab253cb77c744c7

参考链接4:B样条基函数递推定义_哔哩哔哩_bilibiliB样条基函数递推定义, 视频播放量 6278、弹幕量 2、点赞数 101、投硬币枚数 55、收藏人数 182、转发人数 33, 视频作者 孔令德, 作者简介 一生只做一把壶,相关视频:B样条的定义de boor-cox公式的理解,均匀与准均匀B样条曲线,B样条曲线原理演示,计算机图形学全套算法讲解和C++编码实现(共23讲配套源码)_将国家级一流课程从线下搬到线上,B样条曲面算法,NURBS曲线算法,非均匀B样条曲线算法,MFC绘制二维图形-国家级一流课程,B样条测量工具,NURBS曲面算法icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1hM4y1w7sX/?spm_id_from=333.337.search-card.all.click&vd_source=c0f0446e22649eeb5ab253cb77c744c7

参考链接5: 
【作业杂谈】B样条曲线的公式要怎么理解(附代码)_哔哩哔哩_bilibili录完视频感觉漏了不少没讲。因为录视频的时候总想着不要停,于是就容易忘事。补充一下:节点数=控制点数+阶数(阶数=次数+1,分段数=控制点数-次数)那么多节点里面只有分段数个点是会被赋值1的(相当于第一层的N_i,k),从第(阶数)个点开始的(分段数)个点。其他都是为了防止公式计算时下标溢出的凑数点。按我的方法是k从小往大,每个位置分成两块传递给下一层,而不是公式里的k从大往小递归。这样比较好理解。, 视频播放量 3648、弹幕量 0、点赞数 38、投硬币枚数 18、收藏人数 86、转发人数 4, 视频作者 猪星人, 作者简介 这个人懒死了,就改了一下签名,相关视频:【研究生进度-10】曲线拟合——根据目标曲线拟合出贝塞尔曲线控制点坐标(附MATLAB代码),【数学建模编程手必看】41种数模国赛常用算法-matlab代码,免费分享领取,首发—手把手介绍如何将理论应用到matlab代码,手把手教你Boost升压电路的Simulink仿真(含开环,闭环,双闭环控制,PI参数调节方法),【数模国赛神器】Matlab一键生成数学建模代码?Matlab APP/工具箱的妙用!!,6、基于随机森林的时间序列预测模型-预测未来新数据代码详细教程,【MBD 篇】嵌入式 MCU 通用代码生成流程 1,他是真的想教会我们MATLAB机器学习入门到进阶!MATLAB科学计算全套教程!深度学习、神经网络、灰色预测编程实现,【最强动画直观理解强化学习】强化学习训练走路的机器人!不愧是MATLAB官方教程,行走机器人/深度学习/AI/人工智能,看完一年能水5篇SCI!B站公认最好的【SCI论文写作教程】26讲全!基本套路+实操演示,包含所有干货内容!icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV11Y4y1S78q/?spm_id_from=333.337.search-card.all.click&vd_source=c0f0446e22649eeb5ab253cb77c744c7

参考链接6:

B样条曲线,希望这个视频可以帮助到你我(希望大家看过的多多提意见,我也是自己初学)_哔哩哔哩_bilibiliB样条曲线,拉格朗日插值定理,贝塞尔曲线, 视频播放量 6474、弹幕量 33、点赞数 143、投硬币枚数 97、收藏人数 235、转发人数 22, 视频作者 颈椎病goaway, 作者简介 提升自己,教育好宝贝,然后致力于躺平,相关视频:计算机图形学bezier曲线曲面B样条曲线曲面,样条基础知识,基于matlab的三次B样条曲线插值(开、闭曲线),为什么要使用样条曲线?,B样条基函数递推定义,NURBS详解,R语言中的多项式回归、B样条曲线(B-spline Curves)回归,B样条的定义de boor-cox公式的理解,「几何引擎基础课03」B样条/Bezier曲线/NURBS曲面-李华研究员,均匀与准均匀B样条曲线icon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1T24y1s7JE/?spm_id_from=333.337.search-card.all.click&vd_source=c0f0446e22649eeb5ab253cb77c744c7

具体的原理我在这里不进行详细讲解,比如Lagrange插值,Runge现象等等,上面的文章讲解的就非常详细。总得来说B样条是贝塞尔曲线的一部分,类似。这篇文章的重点是如何使用,B样条最终的公式是:

 但是这里还是要说一下,最基本的东西,对于b样条来说

阶数:函数最高阶数(二次样条就是2,用3次样条是3)

节点(数)向量:阶数+控制点数+1

(这里的阶数可以改的,比如用二次样条就是2,用3次样条是3)

基本函数: 基本函数就是Ni,k(t),这个怎么看呢,看下面的这个表

已知节点数为10, 有5个控制点,根据公式为5 +  4 + 1 = 10 ,也就是最好可以用4次样条。(9组范围)根据图片所示,当使用4次样条的话,要有5组基函数。当然也可以是使用3次样条来解决这个问题,那么需要6个控制点,6 + 3 +1 = 10,也就是说当使用3次样条的话,需要6个基函数。

好了,来一个实例,就能明白怎么使用了,以上的公式了。

均匀B样条:

有4个控制点p1,p2,p3,p4 ,利用3次B样条曲线。进行求解。

采用均匀节点向量  t = [0,1,2,3,4,5,6,7],节点向量个数等于4+3+1共8个。

 因为使用的3次B样条,所以最终要求的是

之后我们要依次求零次基函数,一次基函数,二次基函数,三次基函数。 一阶函数

其他的N11,N21,N31,N02,N12,N22,N32,N03,N13,N23,N33。就可以得到3次B样条的表达式。

准均匀B样条:

有4个控制点p1,p2,p3,p4 ,利用3次B样条曲线。进行求解。 

 采用准均匀节点向量  t = [0,0,0,0,,5,6,7],节点向量个数等于4+3+1共8个。

其他的也是类似的:

其他的N11,N21,N31,N02,N12,N22,N32,N03,N13,N23,N33。就可以得到3次B样条的表达式。 

clear all;
close all;
clc;

p =ginput();    %至少点五个点,因为下面有四次样条
plot(p(:,1),p(:,2),'k-o');  

%二次均匀b样条
re2=[];
for i=1:length(p)-2  
    for t=0:0.01:1   
        
        b0 = 1/2*(1-t)^2;
        b1 = 1/2*(-2*t^2+2*t+1);
        b2 = 1/2*t^2;
        
        x=b0*p(i,1)+b1*p(i+1,1)+b2*p(i+2,1);
        y=b0*p(i,2)+b1*p(i+1,2)+b2*p(i+2,2);        
        
        re2=[re2;x y];
    end
end

%三次均匀b样条
re3=[];
for i=1:length(p)-3  
    for t=0:0.01:1   
  
        b0=1/6*(1-t)^3;                       
        b1=1/6*(3.*t^3-6*t^2+4);        
        b2=1/6*(-3*t^3+3*t^2+3*t+1);     
        b3=1/6*t^3;                     
  
        x=b0*p(i,1)+b1*p(i+1,1)+b2*p(i+2,1)+b3*p(i+3,1);    
        y=b0*p(i,2)+b1*p(i+1,2)+b2*p(i+2,2)+b3*p(i+3,2);     

        re3=[re3;x y];
    end
end

%四次均匀b样条
re4=[];
for i=1:length(p)-4  
    for t=0:0.01:1   
  
        b0=1/24*(t^4-4*t^3+6*t^2-4*t+1);                     
        b1=1/24*(-4*t^4+12*t^3-6*t^2-12*t+11);      
        b2=1/24*(6*t^4-12*t^3-6*t^2+12*t+11);    
        b3=1/24*(-4*t^4+4*t^3+6*t^2+4*t+1);                     
        b4=1/24*t^4;
        
        x=b0*p(i,1)+b1*p(i+1,1)+b2*p(i+2,1)+b3*p(i+3,1)+b4*p(i+4,1);    
        y=b0*p(i,2)+b1*p(i+1,2)+b2*p(i+2,2)+b3*p(i+3,2)+b4*p(i+4,2);     

        re4=[re4;x y];
    end
end

hold on;  
plot(re2(:,1),re2(:,2),'r');
plot(re3(:,1),re3(:,2),'g');
plot(re4(:,1),re4(:,2),'b');

同时要保证其在各个连接点保持平滑,那么以二次样条为例:

 三次:

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

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

相关文章

IP宿主信息在不同领域的广泛应用

在网络世界中,IP地址作为网络设备的唯一标识,扮演着至关重要的角色。而IP宿主信息,通过IP与POI/AOI信息关联,能够帮助用户了解特定IP地址所属的详细信息。本文将深入探讨IP宿主信息在不同领域的广泛应用。 什么是IP宿主信息&…

汽车功能安全--TC3xx之PBIST、MONBIST

目录 1.PMS 电源监控速览 2.PBIST 3.MONBIST 4.小结 1.PMS 电源监控速览 英飞凌TC3xx芯片的四种硬件机制,分别是: PMS:PBIST: Power Built-in Self Test. MCU:LBIST: Logic Built-in Self Test. PMS:MONBIST: Monitor Built-in Self Test. VMT:MBI…

嵌入式基础1-模拟电路技术-3.放大电路

1. 基本放大电路 1. 放大概念与放大电路性能指标 2. 基本共射放大电路工作原理 3. 放大电路的分析方法 阻容耦合 4.案例 2. 多级放大电路 1. 多级放大电路的耦合方式 2. 多级放大电路动态分析 3. 差分放大电路 3. 集成运算放大电路 4. 放大电路的反馈 1. 反馈的基本概念…

云计算第四阶段----CLOUD 01-03

CLOUD Day01 一、虚拟化平台搭建 虚拟化技术产品介绍 #黄线标注的,都是比较主流且常用的虚拟化平台。 虚拟化与云计算的关系 虚拟化是一种技术,它允许在单个物理服务器上创建和运行多个虚拟机(VMs),每个虚拟机都有其…

二叉树的相关选择题和基本方法(持续更新)

二叉树相关选择题和基本方法 选择题1选择题2选择题3选择题4选择题5选择题6选择题7选择题8选择题9选择题10选择题11选择题12选择题13选择题14选择题15选择题16选择题17选择题18选择题19选择题20选择题21选择题22实现二叉树的基本操作查询二叉树当中节点的个数遍历思想子问题思想…

[数据集][图像分类]熊分类数据集309张5类别黑熊泰迪北极熊等

数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):309 分类类别数:5 类别名称:["black","grizzly","panda","polar","teddy"] 每个类别图…

大数据之Flink(五)

15、Flink SQL 15.1、sql-client准备 启用Hadoop集群(在Hadoop100上) start-all.sh启用yarn-session模式 /export/soft/flink-1.13.0/bin/yarn-session.sh -d启动sql-client bin/sql-client.sh embedded -s yarn-sessionsql文件初始化 可以初始化模式、环境(流/批…

BUUCTF(34)特殊的 BASE64

使用pycharm时,如果想把代码撤销到之前的状态可以用 Ctrlz 如果不小心撤销多了,可以用 CtrlShiftZ 还原, 别傻傻的重新敲了 BUUCTF在线评测 (buuoj.cn) 查看字符串,想到base64的变表 这里用的c的标准程序库中的string&#xff0…

JS_循环结构

目录标题 while结构for循环foreach循环 while结构 几乎和JAVA一致 代码 <script> /* 打印99 乘法表 */ var i 1; while(i < 9){ var j 1; while(j < i){ document.write(j"*"i""i*j" "); j; } document.write("<hr/…

《机器学习》数据预处理 删除、替换、填充 案例解析及实现

目录 一、了解数据清洗 1、什么是数据清洗 2、数据清洗步骤 1&#xff09;缺失值处理 2&#xff09;异常值处理 3&#xff09;重复值处理 4&#xff09;格式修正 5&#xff09;数据一致性检查 6&#xff09;数据类型转换 二、数据清洗用法 1、有如下文件内容 2、完…

前向渲染路径

1、前向渲染路径处理光照的方式 前向渲染路径中会将光源分为以下3种处理方式&#xff1a; 逐像素处理&#xff08;需要高等质量处理的光&#xff09;逐顶点处理&#xff08;需要中等质量处理的光&#xff09;球谐函数&#xff08;SH&#xff09;处理&#xff08;需要低等质量…

线程的四种操作

所属专栏&#xff1a;Java学习 1. 线程的开启 start和run的区别&#xff1a; run&#xff1a;描述了线程要执行的任务&#xff0c;也可以称为线程的入口 start&#xff1a;调用系统函数&#xff0c;真正的在系统内核中创建线程&#xff08;创建PCB&#xff0c;加入到链…

C++17: 用折叠表达式实现一个IsAllTrue函数

前言 让我们实现一个 IsAllTrue 函数&#xff0c;支持变长参数&#xff0c;可传入多个表达式&#xff0c;必须全部计算为true&#xff0c;该函数才返回true。 本文记录了逐步实现与优化该函数的思维链&#xff0c;用到了以下现代C新特性知识&#xff0c;适合对C进阶知识有一定…

2025最新:如何打造公司财务管理系统?Java SpringBoot实现,一步到位管理企业财务!

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

STM32F407VET6开发板RT-Thread的移植适配

前言 最近购买了一块 STM32F407VET6开发板【魔女】&#xff0c;http://www.stm32er.com/ 通过原理图了解到&#xff0c;开发板板载 CMSIS-DAP 调试下载口&#xff0c;例程部分大部分以裸机程序为主 目标&#xff1a;打算移植适配到 RT-Thread 适配 RT-Thread RT-Thread 支持…

基于准静态自适应环型缓存器(QSARC)的taskBus万兆吞吐实现

文章目录 概要整体架构流程技术名词解释技术细节1. 数据结构2. 自适应计算队列大小3. 生产者拼接缓存4. 高效地通知消费者 小结1. 性能表现情况2. 主要改进3. 源码和发行版 概要 准静态自适应环形缓存器&#xff08;Quasi-Static Adaptive Ring Cache&#xff09;是taskBus用于…

【Python报错已解决】 No Python at ‘C:\Users...\Python Python39\python.exe’

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 前言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一&#xff1a;检查Python安装路径2.2 …

苍穹外卖随记(一)

黑马苍穹外卖逻辑和细节的问题和解决 1.后端查询到员工的日期信息&#xff0c;将信息进行json化传给前端时发生&#xff1a;前端收到的是不标准的日期json串。 解决&#xff1a;1.注解进行json格式化&#xff08;JsonFormat&#xff09;2. 在spring MVC中&#xff0c;通过消息…

如何验证VMWare WorkStation的安装?

如何验证VMWare WorkStation的安装&#xff1f; 右击"网络"&#xff0c;点击 打开"网络和Internet设置"&#xff0c;点击更改适配器选项&#xff0c;如果出现VMNet1和VMNet8&#xff0c;则说明安装成功。

内网穿透(cpolar实现)

目录 一、介绍 二、内网穿透工具cpolar实现 1.下载与安装 2.cpolar指定authtoken 3.获取临时域名 4.验证临时域名有效性 一、介绍 内网穿透&#xff0c;即 NAT 穿透&#xff08;Network Address Translation Traversal&#xff09;&#xff0c;是一种网络技术&#xff0…