主要内容

凉亭差动驱动机器人的Simulink控制金宝app

本例展示了如何利用Simulink在Gazebo联合仿真中控制差动驱动机器人。金宝app机器人通过读取姿态和车轮编码器位置来遵循一组路径点,并生成扭矩控制命令来驱动它。

运行虚拟机

请按照在Simulink和Gazebo之间进行联合仿真金宝app下载使用Gazebo的虚拟机。

露台的世界

这个例子使用了虚拟机中给定的世界,differentialDriveRobot.world,作为一个具有默认物理设置的简单地平面。世界上使用的先锋机器人去掉了默认控制器,这样内置控制器就不会与Simulink提供的扭矩竞争。金宝app先锋机器人在默认的Gazebo安装中可用。Gazebo插件引用连接到Simulink所需的插件,详见金宝app在Simulink和Gazebo之间进行联合仿真金宝app

双击凉亭差动驱动机器人图标。

或者,在终端上运行这些命令:

cd /home/user/src/ gazeboplugin /export export SVGA_VGPU10=0 gazebo ../world/ differaldriverrobot .world

如果Gazebo模拟器无法打开,您可能需要重新安装插件。看到安装Gazebo Plugin手动在Simulink和Gazebo之间进行联合仿真金宝app

模型概述

打开模型:

open_system (“GazeboDifferentialDriveControl”

该模型有四个部分:

  • 露台Pacer

  • 读取传感器数据

  • 控制移动机器人

  • 发送驱动数据到瞭望台

露台Pacer

本节建立到Gazebo的连接。双击露台Pacer块打开其参数,然后单击配置Gazebo网络和仿真设置链接。这将打开一个对话框。

指定IP地址虚拟机。默认情况下,Gazebo连接到14581端口。单击测试按钮以验证与凉亭的连接。

如果测试不成功,请务必检查中的说明在Simulink和Gazebo之间进行联合仿真金宝app并确保Gazebo配置正确,相关世界正常运行。

凉亭传感器输出

传感器输出来自Gazebo的读取传感器数据,并将其传递给适当的Simulink块。金宝app一个XY图形描绘出机器人当前的位置,姿态数据保存到仿真输出中。

阅读凉亭传感器子系统提取机器人姿态和车轮传感器数据。姿态数据是xy-坐标和一个四元四元数来表示方向。车轮的速度是根据车轮位置的变化率来计算的。

移动机器人控制

移动机器人控制Section接受一组目标路径点、当前姿态和当前车轮速度,并输出使机器人沿着路径跟踪路径点所需的车轮扭矩。

有三个主要组成部分。

单纯的追求Block是一个控制器,它指定车辆的速度和方向角速度,以固定的速度跟随路径点,给定当前姿态。

设定轮速MATLAB函数块利用差动驱动机器人的运动学,将车速和航向角速度转换为左右轮速度:

ϕ ˙ l 1 r v - d 2

ϕ ˙ R 1 r v + d 2

ϕ ˙ l 而且 ϕ ˙ R 左右轮的速度, v 是车速, 是飞行器前进的角速度, d 是轨道宽度,和 r 是车轮半径。此外,这个MATLAB®函数包括代码来节流车轮速度。自单纯的追求块使用固定的速度贯穿始终,在MATLAB函数块内部,有两个if语句。当机器人在一定距离阈值内时,第一个以与目标距离成正比的速率减慢速度。第二个if语句当机器人处于一个严格的阈值范围内时停止机器人。这有助于机器人轻柔地停下来。

最后,前轮控制子系统使用比例控制器将所需的车轮速度转换为扭矩。

执行器扭矩命令

模型的最后一部分接受控制器产生的扭矩命令,并使用模块将其发送到Simulink金宝app凉亭联合模拟库。

在这个块中的每个子系统中,a总线分配块用于将关节扭矩分配到正确的关节。

例如,在左轮凉亭扭矩命令如上所示的子系统a凉亭空白消息ApplyJointTorque命令类型用于指定总线类型。类提供了模型和联合名称凉亭选择实体块,它与凉亭世界中与左轮相关的关节相连,left_wheel_hinge.扭矩应用于整个步长时间,0.01秒,指定为纳秒,因为这些输入必须以整数形式提供。总线的输出被传递给凉亭应用命令块。

模拟机器人

要运行模型,初始化路径点并设置采样时间:

路点= [0 0;4 2;3 7;3 6];sampleTime = 0.01;

点击按钮或使用sim卡命令运行模型。执行过程中,机器人应在凉亭内移动XY情节更新在Simulink中观察到的姿态。金宝app

图中描绘了路径点的集合和机器人的最终执行路径。