💥1 概述
机器人运动规划是移动机器人导航的核心技术之一。40多年来,运动规划技术发展迅速,涌现出了许多规划算法,但因为环境描述方式差异巨大,技术差别大,实验比较难度较大。在总结机器人发展史上具有典型意义的规划算法的基础上,提出了路径规划算法的评价标准和形式化描述方式,介绍了每种算法的原理或技术,从搜索策略和环境建模的角度将它们分为四大类,分别是基于自由空间几何构造的规划算法、前向图搜索算法、基于随机采样的运动规划算法以及智能化规划算法,并按照提出的标准比较它们的性能。
针对路径规划以及碰撞检测这一研究的重点问题,提出了C空间法、人工势力场法、遗传算法等。序列规划问题一般转化为旅行商问题来求解。在综合现有序列规划和路径规划方法的基础上,提出两种机器人运动规划算法:基于任意路径的运动规划算法和基于直线路径的运动规划算法,思路简单,能对各种机器人工程任务进行运动规划。
📚2 运行结果
🎉3 参考文献
[1]刘华军,杨静宇,陆建峰,唐振民,赵春霞,成伟明.移动机器人运动规划研究综述[J].中国工程科学,2006(01):85-94.
👨💻4 Matlab代码
主函数部分代码:
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 nearest_bot=Initial_Positions(p,:); nearest_robot_form=distance1; end if distance1<clearance && distance1~=0 mindist=[distance1 mindist]; if min(mindist)== distance1 near_bot=Initial_Positions(p,:); end end end