目录
1 概述
2 运行结果
3 参考文献
4 Matlab代码
机器人运动规划是移动机器人导航的核心技术之一。40多年来,运动规划技术发展迅速,涌现出了许多规划算法,但因为环境描述方式差异巨大,技术差别大,实验比较难度较大。在总结机器人发展史上具有典型意义的规划算法的基础上,提出了路径规划算法的评价标准和形式化描述方式,介绍了每种算法的原理或技术,从搜索策略和环境建模的角度将它们分为四大类,分别是基于自由空间几何构造的规划算法、前向图搜索算法、基于随机采样的运动规划算法以及智能化规划算法,并按照提出的标准比较它们的性能。
针对路径规划以及碰撞检测这一研究的重点问题,提出了C空间法、人工势力场法、遗传算法等。序列规划问题一般转化为旅行商问题来求解。在综合现有序列规划和路径规划方法的基础上,提出两种机器人运动规划算法:基于任意路径的运动规划算法和基于直线路径的运动规划算法,思路简单,能对各种机器人工程任务进行运动规划。
[1]刘华军,杨静宇,陆建峰,唐振民,赵春霞,成伟明.移动机器人运动规划研究综述[J].中国工程科学,2006(01):85-94.
主函数部分代码:
clc
clear all
num = 20; % number of robots
Initial_Positions = 50*rand(num,2); % Random generation of robots in entire plot area
% If robot spawned in obstacle area
for k=1:num
if Initial_Positions(k,1)>25 && Initial_Positions(k,1)<30 && Initial_Positions(k,2)>20 && Initial_Positions(k,2)<35
Initial_Positions(k,:)=rand(1,2);
end
end
% Obstacle reagion
Obstacle_1 = [25 30 30 25 25; 20 20 35 35 20];
Obstacles = [15 15;35 40];
V = 0.01;
dt = 1;
% parameters for weightage
am=1.1;
bm=4;
ar=2;
clearance=1;
timesteps = 850;
waypoints = [5 3; 40 45]; % Initial and final goal positions
% Flocking towards centre of mass
for i = 1:1:2
X_goal = waypoints(i,1);
Y_goal = waypoints(i,2);
for j = 1:1:timesteps
Updated_Coordinates = [];
if j == 1
for z = 1:1:num
X_curr = Initial_Positions(z,1);
Y_curr = Initial_Positions(z,2);
Update = goal_seeking(X_goal,Y_goal,X_curr,Y_curr,dt,am);
Updated_Coordinates = [Updated_Coordinates;Update];
end
else
for l = 1:1:num
% if l>1
near_bot=[];
Update=Initial_Positions(l,:);
mindist=[];
nearest_robot_form=inf;
for p=1:num
distance1=nearest_robot(Update,Initial_Positions(p,:));
heading_diff= (Initial_Positions(l,3)- Initial_Positions(p,3));
if distance1
nearest_robot_form=distance1;
end
if distance1
if min(mindist)== distance1
near_bot=Initial_Positions(p,:);
end
end
end
完整代码:
链接:https://pan.baidu.com/s/1S0vrmf6eeL6H5BoMTzUKsA
提取码:wyhw
--来自百度网盘超级会员V2的分享