轨迹规划-B样条

2024-09-09 05:04
文章标签 规划 轨迹 样条

本文主要是介绍轨迹规划-B样条,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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
endhold on;  
plot(re2(:,1),re2(:,2),'r');
plot(re3(:,1),re3(:,2),'g');
plot(re4(:,1),re4(:,2),'b');

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

 三次:

这篇关于轨迹规划-B样条的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

PMBOK® 第六版 规划进度管理

目录 读后感—PMBOK第六版 目录 规划进度管理主要关注为整个项目期间的进度管理提供指南和方向。以下是两个案例,展示了进度管理中的复杂性和潜在的冲突: 案例一:近期,一个长期合作的客户因政策要求,急需我们为多家医院升级一个小功能。在这个过程中出现了三个主要问题: 在双方确认接口协议后,客户私自修改接口并未通知我们,直到催进度时才发现这个问题关于UI设计的部分,后台开发人员未将其传递给

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划

全英文地图/天地图和谷歌瓦片地图杂交/设备分布和轨迹回放/无需翻墙离线使用

一、前言说明 随着风云局势的剧烈变化,对我们搞软件开发的人员来说,影响也是越发明显,比如之前对美对欧的软件居多,现在慢慢的变成了对大鹅和中东以及非洲的居多,这两年明显问有没有俄语或者阿拉伯语的输入法的增多,这要是放在2019年以前,一年也遇不到一个人问这种需求场景的。 地图应用这块也是,之前的应用主要在国内,现在慢慢的多了一些外国的应用场景,这就遇到一个大问题,我们平时主要开发用的都是国内的地

LeetCode:3177. 求出最长好子序列 II 哈希表+动态规划实现n*k时间复杂度

3177. 求出最长好子序列 II 题目链接 题目描述 给你一个整数数组 nums 和一个非负整数k 。如果一个整数序列 seq 满足在下标范围 [0, seq.length - 2] 中 最多只有 k 个下标i满足 seq[i] != seq[i + 1] ,那么我们称这个整数序列为好序列。请你返回 nums中好子序列的最长长度。 实例1: 输入:nums = [1,2,1,1,3],

实现的动态规划问题华为笔试题C++实现

秋招刷力扣题,我觉得我对动态规划不是熟练,在此处做总结 动态规划(Dynamic Programming,DP)算法通常用于求解某种具有最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应一个值,我们希望找到具有最优值的解。我觉得最大的问题就是对问题的分解,分解后的问题与分解前的问题具有相同的决策机制,将决策机制进行抽象,最终可以得到对应的解; 动态规划中开始介绍的爬楼梯等问题,答