机器人学:Matlab实现实时多次贝塞尔曲线(Bézier Polynomials)插值

0. 引言

有时候对于三次、五次实时插值并不满足我们的控制需求,而贝塞尔曲线插值越来越受到关注。

0.1 最终效果

下图是一个七次插值的贝塞尔曲线形状
在这里插入图片描述

1. 贝塞尔插值

对于一维M次贝塞尔曲线的公式为:
b ( s ) = ∑ k = 0 M α k M ! k ! ( M − k ) ! s k ( 1 − s ) M − k b(s) = \sum\limits_{k = 0}^M {{\alpha _k}} \frac{{M!}}{{k!(M - k)!}}{s^k}{(1 - s)^{M - k}} b(s)=k=0Mαkk!(Mk)!M!sk(1s)Mk

例如,对于 M = 5 M=5 M=5的贝塞尔曲线, α \alpha α s s s的关系如下图:
在这里插入图片描述
通过这个例子,你就可以理解贝塞尔的变量关系,从而设置满足自己要求的曲线参数。
其他贝塞尔曲线性质可以这样描述:
在这里插入图片描述
更多动态展示你可以查看这里的视频

1.1 Matlab代码实现

function [res] = bezierPolynomials(s,alpha)
% s在[0,1]之间 alpha决定着曲线的形状
    M = size(alpha,2)-1;% 只需要设定alpha的大小M就确定了
    M_factorial = factorial(M);
    res = 0;
    for k = 0:1:M
       res = res + M_factorial/(factorial(k)*factorial(M-k))*alpha(k+1)*s^k*(1-s)^(M-k);
    end
end

1.2 测试代码

clear
clc

alp = [0.1 0.3 0.2 0.5 0.1 0.1]*10;

s = [0:0.01:1];
dat = [];
for i = 1:size(s,2)
    dat = [dat;bezierPolynomials(s(i),alp)];
end
plot(dat);

效果就是上图所示,可以通过参数优化设计属于自己的曲线类型。

2. 课程推广

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶技者

为技术开源努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值