Bezier(贝塞尔)曲线的轨迹规划在自动驾驶中的应用(二)

根据(一)中的理论前提,我们通过matlab进行一次仿真验证:

clc
 clear all
 
 p0 = [ 0, 0];
 p1 = [10,0.5];
 p2= [20,3.5];
 p3 = [30,4];
 %设置控制点
 i =1;
 for u =0: 0.01:1
 p(i,:)= (1-u)^3*p0 + 3*(1-u)^2*u*p1 + 3*(1-u)*u^2*p2 + u^3*p3;
 i =i+1;
 end
 %生成三阶贝塞尔曲线的笛卡尔坐标系点位
 
 for i = 1:100 
 pd(i) = (p(i+1,2)-p(i,2))/(p(i+1,1)-p(i,1));
 pd(101) = 0;
 end
 %计算一阶导数
 for i =2: 100
     pdd(1) = 0;
     pdd(101) = 0;
     pdd(i) = (p(i+1,2)-2*p(i,2) + p(i-1,2))/(0.5*(-p(i-1,1)+p(i+1,1)))^2;
 end
 %计算二阶导数
 figure
 plot(1:101,pd);
figure
 plot(1:101, pdd);
 
 for i  = 1:101
     k(i) = (pdd(i))/(1+pd(i)^2)^(1.5);
 end
 figure
 plot(1:101,k)
 
 figure
 for i = 1: length(p)
 plot (p(i,1),p(i,2),'-o')
 hold on
 drawnow
 end           
 %%
 clc
 clear all
  p0 = [ 0, 0];
 p1 = [7.5,0];
 p2= [15,0];
 p3 = [15,4];
 p4 = [22.5,4];
 p5 = [30,4];
  %生成五阶贝塞尔曲线的笛卡尔坐标系点位
  i =1;
 for u =0: 0.01:1
 p(i,:)= (1-u)^5*p0 + 5*(1-u)^4*u*p1 + 10*(1-u)^3*u^2*p2 +...
     10*(1-u)^2*u^3*p3 +5*(1-u)*u^4*p4 + u^5*p5;
 i =i+1;
 end
 
 for i = 1:100 
 pd(i) = (p(i+1,2)-p(i,2))/(p(i+1,1)-p(i,1));
 pd(101) = 0;
 end
  %计算一阶导数
 for i =2: 100
     pdd(1) = 0;
     pdd(101) = 0;
     pdd(i) = (p(i+1,2)-2*p(i,2) + p(i-1,2))/(0.5*(-p(i-1,1)+p(i+1,1)))^2;
 end
  %计算二阶导数
 figure
 plot(1:101,pd);
figure
 plot(1:101, pdd);
 
 for i  = 1:101
     k(i) = (pdd(i))/(1+pd(i)^2)^(1.5);
 end
 figure
 plot(1:101,k)
 
 figure
 for i = 1: length(p)
 plot (p(i,1),p(i,2),'-o')
 hold on
 drawnow
 end

三次和五次曲线的形状是有差别的:

三次曲线
在这里插入图片描述
五次曲线在这里插入图片描述

进一步的,分析曲线曲率,可以看出五次曲线的连续性更加平缓:

三次曲线
在这里插入图片描述
五次曲线
在这里插入图片描述
对于车辆来说,平滑的曲率意味着平滑的车辆转角控制,也意味着平滑的方向盘转角控制。因此,在变道路径规划中,更推荐 使用五阶贝塞尔曲线。

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值