此示例演示了如何在Simulink®中的给定地图上执行两个位置之间的障碍路径。金宝app使用概率路线图(PRM)规划算法生成该路径(Mobilerobotprm)
。使用该路径的控制命令使用纯粹的追求控制器块。差分驱动运动型运动模型基于这些命令模拟机器人运动。
加载占用映射,定义地图中的地图限制和障碍物。examplemapsmat.
包含多个地图,包括简单映射
,此示例使用。
加载examplemapsmat.
在地图中指定一个开始和结束Locaiton。
startloc = [5 5];Goalloc = [20 20];
打开Simulin金宝appk模型。
Open_System('pathplanning金宝appsimulinkmodel.slx')
该模型由三个主要部分组成:
规划
控制
植物模型
这策划者MATLAB®功能块使用Mobilerobotprm.
Path Planner并占用起始位置,目标位置和地图作为输入。块输出机器人遵循的WAPOITES数组。计划的航点在下游使用纯粹的追求控制器块。
这纯粹的追求控制器块基于机器人的航点和当前姿势产生线性速度和角速度命令。
这检查到目标的距离子系统计算到目标的当前距离,如果它在阈值范围内,则仿真停止。
这差分驱动运动型号块创建了一种用于模拟简化的车辆运动学的车辆模型。该块将线性和角速度从中获取线性和角速度作为来自的命令输入纯粹的追求控制器块,并输出当前位置和速度状态。
仿真= SIM('pathplanning金宝appsimulinkmodel.slx');
在模拟模型后,可视化驾驶地图中无障碍路径的机器人。
地图= BiniaroccupAccymap(SimpleMap);RobotPosite =仿真。Thetaidx = 3;% 翻译XYZ =机器人;XYZ(:, XTAIDX)= 0;XYZ欧拉角度旋转Theta = Robotpose(:,Thetaidx);TheTaeuler =零(尺寸(机器人,1),3 *尺寸(θ,2));theTaeuler(:,结束)=θ;%绘制机器人在每个第10步姿势摆姿势。为了K = 1:10:尺寸(XYZ,1)显示(地图)保持在;%绘制起始位置。plottransforms([startloc,0],eul2quat([0,0,0])文本(startloc(1),startloc(2),2,'开始');%绘制目标位置。plottransforms([goalloc,0],eul2quat([0,0,0]))文本(GoAlloc(1),Goalloc(2),2,'目标');%绘制XY位置。绘图(Recootpose(:,1),Recootpose(:,2),'-b')%绘制机器人姿势,因为它遍历路径。quat = Eul2quat(theTaeuler(k,:),'XYZ');plottransforms(xyz(k,:),quat,'meshfilepath'那......'roundvehicle.stl');光;粗暴;抓住离开;结尾
©版权所有2019 The Mathworks,Inc。