主要内容

基于Simulink的差动驱动机器人路径规划金宝app

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

加载地图和Simulink模型金宝app

加载占用地图,它定义了地图的限制和地图中的障碍。exampleMaps.mat包含多个映射,包括simpleMap,本例使用。

负载exampleMaps.mat

在映射中指定开始和结束位置。

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

模型概述

打开Simulin金宝appk模型。

open_system (“pathPlanning金宝appSimulinkModel.slx”

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

  • 规划

  • 控制

  • 工厂模式

规划

规划师MATLAB®函数块使用mobileRobotPRM路径规划器,并将起始位置、目标位置和地图作为输入。这些块输出一个机器人遵循的路径点数组。控件在下游使用所规划的路径点单纯的追求控制器。

控制

单纯的追求

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

检查是否达到目标

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

工厂模式

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

运行模型

模拟= sim(“pathPlanning金宝appSimulinkModel.slx”);

想象机器人的运动

模拟模型后,在地图中可视化机器人行驶的无障碍路径。

map = binaryoccuancymap (simpleMap);robotPose =模拟。pose;thetaIdx = 3;%的翻译xyz =机器人姿势;xyz(:, thetaIdx) = 0;% XYZ欧拉角旋转theta = robotPose(:,thetaIdx);thetaEuler = 0 (size(robotPose, 1), 3 * size(theta, 2));thetaEuler(:, end) = theta;每隔10步绘制机器人姿态图。K = 1:10:大小(xyz, 1)显示(地图)保持绘制起始位置。plotTransforms([startLoc, 0], eul2quat([0,0,0])) text(startLoc(1), startLoc(2), 2,“开始”);绘制目标位置。plotTransforms([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;持有结束

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

©版权所有2019 The MathWorks, Inc.