资源简介
matla运行APROBOT脚本即可实现人工势场法的仿真。使用vrep中的三轮小车,构建其运动的环境,包括转向角度,以及转向速度等。
本程序寻找的并不是最优路径,可适当改变转弯角度以及转弯速度进行优化。其中astart,m是经典的人工势场法程序,非常好理解,potential.pdf是介绍该算法非常直观的一篇论文。
代码片段和文件信息
function APRobot()
%UNtitleD2 此处显示有关此函数的摘要
% 此处显示详细说明
% 定义vrep与matlab连接的相关模块
disp(‘Program started‘);
% vrep=remApi(‘remoteApi‘‘extApi.h‘); % using the header (requires a compiler)
vrep=remApi(‘remoteApi‘); % using the prototype file (remoteApiProto.m)
vrep.simxFinish(-1); % just in case close all opened connections
clientID=vrep.simxStart(‘127.0.0.1‘19997truetrue50005);
[~MotorLeft] = vrep.simxGetobjectHandle(clientID‘leftmotor‘vrep.simx_opmode_blocking);
[~MotorRight] = vrep.simxGetobjectHandle(clientID‘rightmotor‘vrep.simx_opmode_blocking);
% 五个超声波传感器,探测机器人左、左前、前、右前、右方向上的障碍物
[~LeftSensingNoseHandle] = vrep.simxGetobjectHandle(clientID‘LeftSensing‘vrep.simx_opmode_blocking);
[~RightSensingNoseHandle] = vrep.simxGetobjectHandle(clientID‘RightSensing‘vrep.simx_opmode_blocking);
[~FrontSensingNoseHandle] = vrep.simxGetobjectHandle(clientID‘FrontSensing‘vrep.simx_opmode_blocking);
[~RightFrontSensingNoseHandle] = vrep.simxGetobjectHandle(clientID‘RightFrontSensing‘vrep.simx_opmode_blocking);
[~LeftfFrontSensingNoseHandle] = vrep.simxGetobjectHandle(clientID‘LeftFrontSensing‘vrep.simx_opmode_blocking);
% 机器人与目标句柄
[~BubbleRob] = vrep.simxGetobjectHandle(clientID‘BubbleRob‘vrep.simx_opmode_blocking);
[~goalhandle]=vrep.simxGetobjectHandle(clientID‘goal‘vrep.simx_opmode_blocking);%获得目标句柄
%minMaxSpeed = {50*pi/180300*pi/180}; %Min and max speeds for each motor
% 各部分模块定义结束
pathFound=false; % has goal been reached
% 人工势场法相关定义
robotSpeed=[-4 -4]; % arbitrary units
distanceThreshold = 1;%障碍物影响的距离
k=100; % degree of calculating potential
attractivePotentialScaling=100; % scaling factor for attractive potential
repulsivePotentialScaling=1000; % scaling factor for repulsive potential
minAttractivePotential=0.5; % minimum attractive potential at any point
% 全局变量用作计算势能用
distanceFront = 0;
distanceLeft = 0;
distanceRight = 0;
distanceFrontLeft = 0;
distanceFrontRight = 0;
distanceGoal = 0;
angleGoal = 0;
currentDirection=0;
speednew = 0;
if (clientID>-1)
tic;
disp(‘Connected to remote API server‘);
vrep.simxStartSimulation(clientIDvrep.simx_opmode_oneshot);
vrep.simxSetJointTargetVelocity(clientIDMotorLeftrobotSpeed(1)vrep.simx_opmode_oneshot);
vrep.simxSetJointTargetVelocity(clientIDMotorRightrobotSpeed(2)vrep.simx_opmode_oneshot);
% 获取目标的位置
[returnCodeGoalPositionXYZ]=vrep.simxGetobjectPosition(clientIDgoalhandle-1vrep.simx_opmode_blocking);%获得目标的位置
if(returnCode==vrep.simx_return_ok)
goal = GoalPositionXYZ(:1:2);%所有行的第一列和第二列
fprintf(“goal is:(%2.3f%2.3f)\n“goal);
else
fprintf(“Invalid Goal! the error code is: %d\n“returnCode);
end
%while toc<10
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 627121 2018-06-13 16:11 BubbleRob\20180607.ttt
文件 625953 2018-06-05 13:32 BubbleRob\BubbleRob.ttt
文件 12748 2018-06-13 11:06 BubbleRob\MATLAB_VREP_workspace\APRobot.m
文件 7351 2018-06-07 20:49 BubbleRob\MATLAB_VREP_workspace\astart.m
文件 557 2014-06-06 15:35 BubbleRob\MATLAB_VREP_workspace\distanceCost.m
文件 792 2018-05-30 14:56 BubbleRob\MATLAB_VREP_workspace\feasiblePoint.m
文件 251078 2014-06-06 15:35 BubbleRob\MATLAB_VREP_workspace\map1.bmp
文件 251078 2018-06-05 09:40 BubbleRob\MATLAB_VREP_workspace\map2.bmp
文件 251078 2014-06-06 15:35 BubbleRob\MATLAB_VREP_workspace\map3.bmp
文件 251078 2014-06-06 15:35 BubbleRob\MATLAB_VREP_workspace\map4.bmp
文件 251078 2014-06-06 15:35 BubbleRob\MATLAB_VREP_workspace\map5.bmp
文件 848 2018-05-15 16:33 BubbleRob\MATLAB_VREP_workspace\matlab.mat
文件 750054 2018-01-27 15:41 BubbleRob\MATLAB_VREP_workspace\my_map.bmp
文件 5580 2018-06-04 21:33 BubbleRob\MATLAB_VREP_workspace\obstacle.m
文件 1537 2018-05-31 11:00 BubbleRob\MATLAB_VREP_workspace\plotRobot.m
文件 192524 2014-06-06 15:35 BubbleRob\MATLAB_VREP_workspace\potential.pdf
文件 1089 2019-04-02 22:41 BubbleRob\MATLAB_VREP_workspace\readMe.txt
文件 100875 2018-01-25 17:03 BubbleRob\MATLAB_VREP_workspace\remApi.m
文件 70656 2018-01-25 17:03 BubbleRob\MATLAB_VREP_workspace\remoteApi.dll
文件 35378 2018-01-25 17:03 BubbleRob\MATLAB_VREP_workspace\remoteApiProto.m
文件 2716 2018-06-02 15:49 BubbleRob\MATLAB_VREP_workspace\simpleTest.m
文件 9885 2018-06-04 21:43 BubbleRob\MATLAB_VREP_workspace\turn.m
文件 1417 2018-06-12 16:05 BubbleRob\MATLAB_VREP_workspace\TurnSpeed.m
目录 0 2019-04-02 22:29 BubbleRob\MATLAB_VREP_workspace
目录 0 2019-04-02 22:29 BubbleRob
----------- --------- ---------- ----- ----
3702471 25
- 上一篇:vwap算法交易详解
- 下一篇:ZeroServer_01
相关资源
- 5次B样条曲线.rar
- MTD雷达信号处理
- libsvm工具包含网格法查找最优解函数
- libsvm工具包含网格法查找最优解函数
- libsvm工具包含网格法查找最优解函数
- 基于灰度共生矩阵的图像匹配算法
- 完整的QPSK-MSK-QAM-OFDM调制解调m程序.
- 防侧翻控制系统模型 SUV仿真
- 详细注释的MIMO-OFDM信道估计
- LBM boiling
- ls信道估计算法
- 支持向量机SVM多分类算法实现
- OFDM及信道估计的程序
- 数据插值,拉格朗日,牛顿,埃尔米
- 双广义二阶积分及双dq锁相仿真模型
- new_cfar用于sar检测
- pso算法路径规划
- BP神经网络,可以处理图像进行分类等
- 支持向量机小波核函数
- 基于卡尔曼滤波的定位跟踪算法仿真
- 差分进化算法源代码DE
- 很实用的检测图像中的圆,并拟合,
- 模糊神经网络 matlab实现
- 隐马尔科夫模型HMM的具体算法代码,
- 光伏电池最大功率跟踪仿真,能够了
- 小波包分解程序,可以运行的,你值
- 极限学习机分类,绝对可以完美运行
- 33节点粒子群算法
- 数学建模竞赛题目 木板最优切割方案
- 粒子群算法解决TSP问题pso_tsp.rar
评论
共有 条评论