matlab dubins路径,路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)...

路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)

路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)

路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)实际问题

Dubins曲线基础

问题关键

CSC型

CCC型

Dubins曲线的一些讨论

参考文献

实际问题

matlab dubins路径,路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)..._第1张图片

Dubins曲线基础

matlab dubins路径,路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)..._第2张图片

问题关键

matlab dubins路径,路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)..._第3张图片

CSC型

matlab dubins路径,路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)..._第4张图片

matlab dubins路径,路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)..._第5张图片

CCC型

matlab dubins路径,路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)..._第6张图片

Dubins曲线的一些讨论

matlab dubins路径,路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)..._第7张图片

下面是写的一段MATLAB代码,只是简单实现,没有考虑最优。

1、CSC

%Dubins Curve CSC型

%目标定义

%定义起终点[x y dir]

I=[1 1 7*pi/4];

G=[6 8 3*pi/4];

%定义或计算转弯半径

ri=1;

rg=2;

%组合

k=-1; % 1:RSX,-1:LSX

i=-1; % 1:XSR,-1:XSL

j=i*k; % 1:RSR/LSL, -1:RSL/LSR

%计算首尾圆心坐标

xi=I(1,1)+ri*k*cos(I(1,3));

yi=I(1,2)-ri*k*sin(I(1,3));

xg=G(1,1)+rg*i*cos(G(1,3));

yg=G(1,2)-rg*i*sin(G(1,3));

%计算法向量

%首尾圆圆心之间的向量V1

v1x=xg-xi; %向量坐标x

v1y=yg-yi; %向量坐标y

D=sqrt(v1x*v1x+v1y*v1y);%向量模长

v1x=v1x/D; %单位化

v1y=v1y/D;

%计算法向量n

c=(j*ri-rg)/D; %定义中间量

nx=v1x*c-i*v1y*sqrt(1-c*c);

ny=v1y*c+i*v1x*sqrt(1-c*c);

%计算切点

xit=xi+j*ri*nx;

yit=yi+j*ri*ny;

xgt=xg+rg*nx;

ygt=yg+rg*ny;

%绘图

%初始方向

xiDir=[I(1,1)+ri*sin(I(1,3)-pi/2),I(1,1)];

yiDir=[I(1,2)-ri*cos(I(1,3)-pi/2),I(1,2)];

xgDir=[G(1,1)+rg*sin(G(1,3)-pi/2),G(1,1)];

ygDir=[G(1,2)-rg*cos(G(1,3)-pi/2),G(1,2)];

%切线

xxx=[xit xgt];

yyy=[yit ygt];

%首尾圆

t=0:0.01:2*pi;

%t=I(1,3)-pi/2:0.01:3*pi/2-atan(ny/nx);

xxi=xi+ri*sin(t);

yyi=yi+ri*cos(t);

%t=-pi/2-atan(ny/nx):0.01:G(1,3)-pi/2;

xxg=xg+rg*sin(t);

yyg=yg+rg*cos(t);

%法向量

nxi=[xi xi+ri*nx];

nyi=[yi yi+ri*ny];

nxg=[xg xg+rg*nx];

nyg=[yg yg+rg*ny];

%绘图

plot(I(1,1),I(1,2),'go',G(1,1),G(1,2),'go',... %初始位置

xiDir,yiDir,'-g',xgDir,ygDir,'-g',... %初始方向

xi,yi,'k*',xg,yg,'k*',... %圆心

xxi,yyi,'-r',xxg,yyg,'-r',... %首尾圆

nxi,nyi,'-b',nxg,nyg,'-b',... %法向量

xxx,yyy,'-ro') %切线

axis([-3 15 -3 15])

2、CCC

%Dubins Curve CCC型

%目标定义

%定义起终点[x y dir]

I=[1 1 7*pi/4];

G=[4 5 3*pi/4];

%定义或计算转弯半径

ri=1;

rg=1;

rmid=4;

%组合

i=-1; % 1:RLR -1:LRL

%三圆心相关量

%计算首尾圆心坐标及其连线向量V12

xi=I(1,1)+ri*i*cos(I(1,3));

yi=I(1,2)-ri*i*sin(I(1,3));

xg=G(1,1)+rg*i*cos(G(1,3));

yg=G(1,2)-rg*i*sin(G(1,3));

V12=[xg-xi,yg-yi];

angleV12=atan(V12(1,2)/V12(1,1));

%计算中间圆坐标及三圆心连线向量V13、V32

d12=sqrt((xg-xi)^2+(yg-yi)^2);

rmid=max([rmid (d12-ri-rg)*0.5]);

d13=ri+rmid;

d32=rmid+rg;

angleP213=acos((d12^2+d13^2-d32^2)/(2*d12*d13));

xmid=xi+d13*cos(angleV12-angleP213);

ymid=yi+d13*sin(angleV12-angleP213);

V13=[xmid-xi,ymid-yi];

V32=[xg-xmid,yg-ymid];

V13=V13/d13; %单位化

V32=V32/d32;

%计算切点坐标

xt1=xi+ri*V13(1,1);

yt1=yi+ri*V13(1,2);

xt2=xmid+rmid*V32(1,1);

yt2=ymid+rmid*V32(1,2);

%绘图

%初始方向

xiDir=[I(1,1)+ri*sin(I(1,3)-pi/2),I(1,1)];

yiDir=[I(1,2)-ri*cos(I(1,3)-pi/2),I(1,2)];

xgDir=[G(1,1)+rg*sin(G(1,3)-pi/2),G(1,1)];

ygDir=[G(1,2)-rg*cos(G(1,3)-pi/2),G(1,2)];

%首尾圆

t=0:0.01:2*pi;

xxi=xi+ri*sin(t);

yyi=yi+ri*cos(t);

xxg=xg+rg*sin(t);

yyg=yg+rg*cos(t);

xxmid=xmid+rmid*sin(t);

yymid=ymid+rmid*cos(t);

%绘图

plot(I(1,1),I(1,2),'go',G(1,1),G(1,2),'go',... %初始位置

xiDir,yiDir,'-g',xgDir,ygDir,'-g',... %初始方向

xi,yi,'k*',xg,yg,'k*',xmid,ymid,'k*',... %圆心

xt1,yt1,'bo',xt2,yt2,'bo',...%切点

xxi,yyi,'-r',xxg,yyg,'-r',xxmid,yymid,'-r') %三圆

axis([-3 15 -3 15])

参考文献

13、http://planning.cs.uiuc.edu/node821.html

14、http://www.banbeichadexiaojiubei.com/index.php/2020/03/15/自动驾驶运动规划-dubins曲线

15、https://gieseanw.files.wordpress.com/2012/10/dubins.pdf

路径规划算法学习笔记(三)——局部路径规划(Dubins Curve)相关教程

你可能感兴趣的:(matlab,dubins路径)