【路径规划】样条曲线

参考资料

  • matlab2019b 开源代码
  • Matlab官网: matlab.

贝塞尔曲线

一阶贝塞尔曲线

P0到P1之间是均匀的过度的。

%first order b-spline
clc
clear
p0=[0,0];
p1=[1,1];
p2=[3,0];
step=50;
pt=zeros(step,1);
tt=1;
tp=(1:step);
for t=0:1/step:1
    pt(tt,1:2)=(1-t)*p0+t*p1;
    tt=tt+1;
end
plot(pt(:,1),pt(:,2),'o')

输出pt可以看出pt是均匀增长的。

二阶贝塞尔曲线

%second order b-spline
clc
clear
p0=[0,0];
p1=[0,1];
p2=[3,0];
step=100;
pt=zeros(step,1);
tt=1;
tp=(1:step);
for t=0:1/step:1
    pt(tt,1:2)=(1-t)^2*p0+2*t*(1-t)*t*p1+t^2*p2;
    tt=tt+1;
end
plot(pt(:,1),pt(:,2),'o')

输出结果:
在这里插入图片描述
发现结果并不是连续的

三阶贝塞尔曲线

clc
clear
p0=[0,0];
p1=[1,1];
p2=[2,1];
p3=[10,0];
step=100;
pt=zeros(step,1);
tt=1;
tp=(1:step);
for t=0:1/step:1
    pt(tt,1:2)=(1-t)^3*p0+3*t*(1-t)^2*p1+3*t^2*(1-t)*p2+t^3*p3;
    tt=tt+1;
end
plot(pt(:,1),pt(:,2),'o')

结果仍然是不连续的。并不一定是连续的
在这里插入图片描述

  • bsplinepolytraj 验证
clc
clear
cpts = [0 1 2 10; 0 1 1 0];
tpts = [0 1];
tvec = 0:0.01:1;
[q, qd, qdd, pp] = Mybsplinepolytraj(cpts,tpts,tvec);
figure
plot(cpts(1,:),cpts(2,:),'xb-')
hold all
plot(q(1,:), q(2,:),'o')
xlabel('X')
ylabel('Y')
hold off

输出结果
在这里插入图片描述与matlab输出结果一致,所以仿真结果是对的。
输出qd和qdd发现,其均不连续。

问题

  • 平滑
  • 姿态
  • 逆解
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VC(Visual C++)是Microsoft开发的一种集成开发环境,用于开发基于Windows平台的应用程序。在VC实现样条曲线插补可以通过使用数学库或自定义算法来实现。样条曲线插补是一种数学计算方法,用于生成平滑的曲线路径,通常用于计算机辅助设计(CAD)、图形学和运动控制等领域。 实现样条曲线插补的步骤通常包括以下几个方面: 1.采集数据:首先需要采集所需的数据点,这些数据点通常包括曲线上的离散点坐标。可以通过传感器采集实际运动路径的数据,也可以手动输入虚拟路径的数据点。 2.选择插值方法:根据实际需求选择合适的样条曲线插值方法,常用的包括线性插值、三次样条插值等方法。在VC可以利用数学库或自行实现这些插值方法的算法。 3.计算控制点:根据选择的插值方法,计算出样条曲线的控制点。这些控制点可以决定曲线的平滑性和形状。 4.生成曲线:根据计算出的控制点,利用插值方法生成平滑的样条曲线。可以在VC使用绘图库或自行编写绘图算法来将生成的曲线呈现在界面上。 总之,在VC实现样条曲线插补需要深入理解样条曲线的数学原理,选择合适的插值方法并进行相应的算法实现。通过合理的数据采集和计算,可以在VC实现高质量的样条曲线插补功能,为各种应用领域提供平滑的路径规划和运动控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值