基于粒子群优化算法的移动机器人全局路径规划-附代码
摘要:本文主要介绍一种基于粒子群优化算法的移动机器人全局路径规划算法。
1.问题描述与建模
对于移动机器人, 路径规划就是寻找其在环境中移动时所必须经过的点的集合. 如图1 所示, 在全局坐标系O-XY 中, S 为机器人的出发点, G 为终点.图中黑色实心填充的物体表示障碍. 机器人的路径规划即为寻找一个点的集合
P
=
{
S
,
p
1
,
p
2
,
.
.
,
P
m
,
G
}
(1)
P = \{S,p_1,p_2,..,Pm,G\} \tag{1}
P={S,p1,p2,..,Pm,G}(1)
其中
(
p
1
,
p
2
,
.
.
,
p
m
)
(p_1,p_2,..,p_m)
(p1,p2,..,pm)为全局地图中一个点的序列,即规划目标. 对点
p
j
p_j
pj的要求是:
p
j
p_j
pj为非障碍点,
p
j
p_j
pj与相邻点的连线上不存在障碍点.
在全局地图中建立一个新的坐标系, 以 SG 作为 X ′轴, 垂直于 X′且经过 S 点的直线作为 Y′轴,X′, Y′轴的方向如图 1所示. 对应的坐标变换为:
[
x
′
y
′
]
=
[
c
o
s
α
−
s
i
n
α
s
i
n
α
c
o
s
α
]
[
x
y
]
+
[
x
s
y
s
]
\left[\begin{matrix}x'\\ y'\end{matrix}\right] = \left[\begin{matrix}cos\alpha&-sin\alpha\\ sin\alpha&cos\alpha\end{matrix}\right]\left[\begin{matrix}x\\ y\end{matrix}\right] + \left[\begin{matrix}xs\\ ys\end{matrix}\right]
[x′y′]=[cosαsinα−sinαcosα][xy]+[xsys]
其中:
(
x
,
y
)
,
(
x
′
,
y
′
)
(x, y) , ( x′, y′)
(x,y),(x′,y′) 分别为地图中某一点在不同坐标系
O
−
X
Y
O-X Y
O−XY 和
S
−
X
′
Y
′
S-X ′Y′
S−X′Y′下的坐标,
A
A
A为坐标轴
X
X
X 与
X
′
X′
X′的夹角,
(
x
S
,
y
S
)
( x S , y S )
(xS,yS) 为
S
S
S 点在坐标系
O
−
X
Y
O-X Y
O−XY 下的坐标。
将线段
S
G
SG
SG进行
(
m
+
1
)
( m + 1)
(m+1) 等分, 在每一个等分点作垂线, 得到平行直线族
(
l
1
,
l
2
,
⋯
,
l
m
)
( l_1 , l_2 , ⋯, l_m )
(l1,l2,⋯,lm) , 它们与路径
P
P
P的交点即为目标点序列
(
p
1
,
p
2
,
⋯
,
p
m
)
( p_1 , p_2 , ⋯, p_m )
(p1,p2,⋯,pm) . 定义
S
S
S 为
p
0
p_0
p0 ,
G
G
G为
p
m
+
1
p_{m+ 1}
pm+1 , 路径
P
P
P 的长度
L
P
LP
LP 为:
L
P
=
L
s
p
1
+
∑
j
=
1
m
−
1
L
p
j
p
j
+
1
+
L
p
m
G
=
∑
j
=
0
m
L
p
j
p
j
+
1
(2)
LP=Lsp_1+\sum_{j=1}^{m-1}Lp_jp_{j+1}+Lp_mG=\sum_{j=0}^mLp_jp_{j+1}\tag{2}
LP=Lsp1+j=1∑m−1Lpjpj+1+LpmG=j=0∑mLpjpj+1(2)
其中
L
p
j
p
j
+
1
Lp_jp_{j+1}
Lpjpj+1 表示点
p
j
p_j
pj 与点
p
j
+
1
p_{j+1}
pj+1间的距离. 最终优化算法的目标函数即为求一条不存在障碍物的路径使得LP的值最小。
2.基于粒子群算法的路径规划
粒子群算法原理这里不在阐述,网上资料很多。粒子群的适应度函数为:
f
i
t
n
e
s
s
=
a
r
g
m
i
n
{
L
P
}
(2)
fitness = argmin\{LP\} \tag{2}
fitness=argmin{LP}(2)
约束条件为,路径不能经过障碍物。
3. 实验结果
粒子群相关参数设定如下:
%% 粒子群参数设定
%速度范围设定
Vmax = 2;
Vmin = - 2;
dim = lineNum-1;%变量维度,段数-1
fobj = @(x) fun(x,PointStart,PointEnd,ks,bs);%适应度函数
lb = 1; %变量下边界
ub = boundary-1;%变量上边界
SearchAgents_no = 30;%种群数量
Max_iteration = 1000;%最大迭代次数
设置不同的分段数如5,10,15。如结果如下图所示:
粒子算法的收敛曲线如下图所示:
4.参考文献
[1]孙波,陈卫东,席裕庚.基于粒子群优化算法的移动机器人全局路径规划[J].控制与决策,2005(09):1052-1055+1060.
5.Matlab代码
基于粒子群优化算法的移动机器人全局路径规划
个人资料介绍