文章目录
- 【可更换其他算法,`获取资源`请见文章第6节:资源获取】
- 1. 原始ABC算法
- 2. 机器人路径规划环境创建
- 3. 路径规划模型建立
- 4. 部分代码展示
- 5. 仿真结果展示
- 6. 资源获取
【可更换其他算法,获取资源
请见文章第6节:资源获取】
1. 原始ABC算法
2. 机器人路径规划环境创建
对机器人工作空间的进行环境建模是机器人路径规划研究的重要前提。栅格法为环境建模提供了一种简洁有效的方法,是目前为止应用最广泛的机器人工作环境建模方法。
通过二维平面坐标对机器人的局部运动空间进行划分,如下面图所示。栅格编号用来表示机器人和障碍物的具体位置,其中非障碍物栅格称为自由栅格。机器人在当前栅格可以沿其邻域方向移动,以栅格45为例,机器人可以选择的自由栅格包括25、44、46、64、65。
栅格法地图一般通过如下所示的障碍物矩阵来描述。其中0表示此处没有障碍物,1表示此处有障碍物。
3. 路径规划模型建立
在基于HHO算法的路径规划中,设定哈里斯鹰种群每一次迭代更新的位置坐标,代表机器人的一条移动路线。通过HHO优化算法,从二维栅格地图中找寻从起始点到目标点符合约束条件的最优路径。约束条件设定如下:
1)地图边界和障碍物约束条件
机器人的移动路径必须限定在栅格地图边界内,并且在可移动区域内,机器人的移动路径禁止穿越障碍物节点。
2)路径连续条件
机器人在通行区域内的移动路径,需避免路径重叠和迂回。假设移动机器人在
t
t
t时刻的坐标为
(
x
t
,
y
t
)
(x_{t},y_{t})
(xt,yt),则下一时刻机器人位置坐标
(
x
t
+
1
,
y
t
+
1
)
(x_{t+1},y_{t+1})
(xt+1,yt+1)需要满足
x
t
+
1
>
x
t
x_{t+1}>x_{t}
xt+1>xt或者
y
t
+
1
>
y
t
y_{t+1}>y_{t}
yt+1>yt。
3)路径最短条件
为实现移动机器人路径规划,机器人需在满足边界约束和路径连续条件的基础上,寻找从起始点到目标点的最短路径。将路径的欧氏距离作为算法
的适应度函数,适应度最小的路径即为最优路径。
将路径上每两个相邻点之间的欧式距离相加即可得到总路径长度。
4. 部分代码展示
%% 地图矩阵
G=[0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0;
0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0;
0 1 1 1 0 0 1 1 1 0 1 1 1 1 0 0 0 0 0 0;
0 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0;
0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0;
0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0;
0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0;
1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0;
1 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0;
0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 1 1 0;
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0;
0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0;];
% 交换G(1,1)和G(20,1),G(2,1)和G(19,1)
for i=1:20/2
for j=1:20
m=G(i,j);
n=G(21-i,j);
G(i,j)=n;
G(21-i,j)=m;
end
end
%%
S = [1 1]; % 起点
E = [20 20]; % 终点
G0 = G;
G = G0(S(1):E(1),S(2):E(2));
[Xmax,dimensions] = size(G);
dimensions = dimensions - 2;
%% 参数设置
max_gen = 200; % 最大迭代次数
num_polution = 50; % 种群数量
X_min = 1;
[global_best,final_goal] = ABC(num_polution,max_gen,dimensions,G,Xmax,X_min);
5. 仿真结果展示
6. 资源获取
A资源获取说明