1 简介
目前,随着智能机器人技术的发展,人们对移动机器人的导航,动态避障,路径规划等方面提出了更高的要求。移动机器人运动环境的多变性和复杂性,决定了移动机器人路径规划问题是机器人领域一个研究重点。路径规划作为移动机器人研究中的一个重要研究内容,它是移动机器人按照某一性能指标(如距离、时间、能量等)寻找一条从起始状态到目标状态无碰撞的最优或次最优路径,使之尽可能的平滑和安全。遗传算法是建立在自然选择和群体遗传学基础上的随机、迭代和进化过程,是路径规划研究领域中的一种十分有效地算法。本论文在结合目前多种路径规划方法优缺点的基础上,选择遗传算法来解决移动机器人的路径规划问题。 论文在阐述移动机器人的研究状况和发展趋势的基础上,分析了目前移动机器人的路径规划方法,重点研究了基于遗传算法的移动机器人路径规划方法。主要内容有:首先,采用栅格建立地图的方法建立机器人的地图模型,并用序列号法进行编码以及用间断无障碍路径结合启发式方法产生遗传算法的初始种群;其次,选取路径最短设定适应度函数;最后,进行遗传操作,包含有:用轮赌盘方法进行选择、用重合点交叉法进行交叉、以一个较小的概率进行变异和交叉概率和变异概率的自适应调整方法等内容。论文是在静态环境下,对移动机器人进行的全局路径规划,利用MATLAB仿真对移动机器人路径规划进行模拟,从而验证了这种仿生的智能算法的有效性。
2 部分代码
% 基于遗传算法的栅格法机器人路径规划 clc; clear all close all; kaishi = 0; % 起始序号 jieshu =399; % 终止序号 zhongqun = 100; % 种群数量 diedaicishu = 1000; % 最大进化代数 jiaochaP = 0.5; % 交叉概率 bainyiP = 0.5; % 变异概率 z = 1; zuixin_pop = {}; % 元包类型路径 % 输入数据,即栅格地图 p = randperm(20); G= [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 0 0 0 0 1 0 0 0 0; 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 0; 0 1 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0; 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0; 0 0 1 1 0 0 1 1 0 0 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 0 0 0 1 1 1 0 1 0 1 1 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 0 0 0 0 0 1 1 1 0 0 1 1 1 0 1 0 0 0 0; 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 0; 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0; 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0; 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 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 1 1 1 0 0 0 0 1 1 1 1 0; 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 1 0 1 1 1 1 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 0 0 0 0];%G % for i=1:length(p) % G(i,:)=G1(p(i),:); % end [y, x] = size(G); % 起点所在列(从左到右编号1.2.3...) kaishi_x = mod(kaishi, x) + 1; % 起点所在行(从上到下编号行1.2.3...) kaishi_y = fix(kaishi / x) + 1; % 终点所在列、行 jieshu_x = mod(jieshu, x) + 1; jieshu_y = fix(jieshu / x) + 1; end % 画每次迭代平均路径长度和最优路径长度图 figure(1) plot(1:diedaicishu, mean_path_value, 'r') hold on; title('优化曲线图'); xlabel('迭代次数'); ylabel('路径长度'); plot(1:diedaicishu, min_path_value, 'b') legend('平均路径长度', '最优路径长度'); min_path_value(1, end) % 在地图上画路径 [~, min_index] = max(fit_value); min_path = zuixin_pop{min_index, 1}; figure(2) hold on; title(['遗传算法机器人运动轨迹']); xlabel('坐标x'); ylabel('坐标y'); DrawMap(G); [~, min_path_num] = size(min_path); for i = 1:min_path_num % 路径点所在列(从左到右编号1.2.3...) x_min_path(1, i) = mod(min_path(1, i), x) + 1; % 路径点所在行(从上到下编号行1.2.3...) y_min_path(1, i) = fix(min_path(1, i) / x) + 1; end hold on; plot(x_min_path, y_min_path, 'r')
3 仿真结果
4 参考文献
[1]崔建军. (2010). 基于遗传算法的移动机器人路径规划研究. (Doctoral dissertation, 西安科技大学).