主要内容

在Simulink中规划差动驱动机器人的路径万博1manbetx

这个例子演示了如何在Simulink®中执行给定地图上的两个位置之间的无障碍路径。万博1manbetx路径是使用概率道路图(PRM)规划算法(mobileRobotPRM).控件命令用于导航此路径单纯的追求控制器。基于这些指令,建立了差动驱动运动学模型来模拟机器人的运动。

加载映射和Simulink模型万博1manbetx

载入占用地图,它定义地图范围和地图内的障碍。exampleMaps.mat包含多个映射,包括simpleMap,本例将使用它。

负载exampleMaps.mat

在地图中指定开始和结束位置。

startLoc = [5 5];goalLoc = [20 20];

模型概述

打开Simulin万博1manbetxk模型。

open_system (“pathPlanning万博1manbetxSimulinkModel.slx”

模型由三个主要部分组成:

  • 规划

  • 控制

  • 工厂模式

规划

规划师MATLAB®函数块采用mobileRobotPRM路径规划器,并将起始位置、目标位置和映射作为输入。块输出机器人跟随的波点数组。规划的路径点在下游被使用单纯的追求控制器。

控制

单纯的追求

单纯的追求控制器模块根据路径点和机器人当前位姿生成线速度和角速度命令。

检查目标是否达到

检查目标距离子系统计算当前到目标的距离,如果距离在一个阈值内,则模拟停止。

工厂模式

差动驱动运动学模型Block创建一个车辆模型来模拟简化的车辆运动学。块以线速度和角速度作为命令输入单纯的追求控制器块,并输出当前位置和速度状态。

运行模型

模拟= sim卡(“pathPlanning万博1manbetxSimulinkModel.slx”);

想象机器人的运动

对模型进行仿真后,在地图上可视化机器人驱动无障碍路径。

地图= binaryOccupancyMap (simpleMap);robotPose = simulation.Pose;thetaIdx = 3;%的翻译xyz = robotPose;xyz(:, thetaIdx) = 0;%以XYZ欧拉角旋转θ= robotPose (:, thetaIdx);thetaEuler = zero (size(robotPose, 1), 3 * size(theta, 2));theta (:, end) =绘制机器人每10步的姿势。K = 1:10:size(xyz, 1) show(map) hold%绘制起始位置。plot ([startLoc, 0], eul2quat([0,0,0]))) text(startLoc(1), startLoc(2), 2,“开始”);%绘制目标位置。plot ([goalLoc, 0], eul2quat([0,0,0])) text(goalLoc(1), goalLoc(2), 2,“目标”);%绘制xy位置。plot(robotPose(: 1), robotPose(: 2),“- b”绘制机器人穿过路径时的姿态。quat = eul2quat(thetaEuler(k,:),“xyz”);plotTransforms (xyz (k,:),皮疹,“MeshFilePath”...“groundvehicle.stl”);淡定;drawnow;持有结束

图中包含一个轴对象。标题为“二进制占用网格”的轴对象包含16个类型为patch、line、image、text的对象。

©版权所有2019 The MathWorks, Inc.