主要内容

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

此示例显示如何使用Simulink控制Gazebo共模中的差分驱动机器人。金宝app通过读取姿势和轮编码器位置并产生扭矩控制命令以驱动它来遵循一组航路点。

要下载本例中使用的虚拟机,请参见带ROS和凉亭的虚拟机

有关Gazebo联合模拟和首次连接的介绍,请参阅在Simulink和Gazebo之间执行共同仿真金宝app

运行VM.

打开安装的虚拟机带ROS和凉亭的虚拟机

凉亭世界

这个例子使用了VM中给定的一个世界,differentialDriveRobot.world,作为具有默认物理设置的简单地面平面。世界使用先驱机器人拆除了默认控制器,因此内置控制器不会与从Simulink提供的Torques竞争。金宝app先驱机器人可在默认的凉亭安装中使用。凉亭插件引用连接到Simulink所需的插件,详细金宝app在Simulink和Gazebo之间执行共同仿真金宝app

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

另一种选择,在终端中运行以下命令:

CD / HOME / USE / SRC / GAZEBOPLUGIN / EXUSEX EXPORT SVGA_VGPU10 = 0 GAZEBO ../world/differensienddriverobot.world

如果凉亭模拟器无法打开,则可能需要重新安装插件。看安装露台插件手动在Simulink和Gazebo之间执行共同仿真金宝app

模型概述

打开模型:

open_system ('眺望宝积富律议会'

该模型有四个部分:

  • 露台Pacer

  • 读取传感器数据

  • 控制移动机器人

  • 向露台发送驱动数据

露台Pacer

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

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

如果测试不成功,一定要检查说明书在Simulink和Gazebo之间执行共同仿真金宝app并确保正确配置了凉亭,并且关联的世界取得了启动和运行。

露台传感器输出

传感器从凉亭输出读取传感器数据,并将其传递给适当的Simulink块。金宝appXY图绘制当前机器人位置,并将姿势数据保存到模拟输出。

读凉亭传感器子系统提取机器人的姿态和车轮传感器数据。姿势数据是XY.- 控制和一个四元素的方向四元度。基于轮毂位置的变化率来计算车轮速度。

移动机器人控制

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

有三个主要组成部分。

单纯的追求块是一个控制器,其指定当前姿势以固定速度跟随航点所需的车辆的车速和标题角速度。

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

ϕ ˙ L. = 1 R. V. - D. 2

ϕ ˙ R. = 1 R. V. + D. 2

ϕ ˙ L. ϕ ˙ R. 是左右车轮速度, V. 是车速, 为飞行器的航向角速度, D. 是轨道宽度,和 R. 是车轮半径。此外,该MATLAB®功能包括用于扼杀车轮速度的代码。自从此以来单纯的追求在MATLAB函数块中,有两个if语句。当机器人处于一定距离阈值范围内时,第一种方法以与目标距离成比例的速度减慢速度。第二个if语句在机器人处于严格的阈值范围内时停止机器人。这有助于机器人慢慢停下来。

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

执行器扭矩命令

模型的最后一部分采用控制器产生的扭矩命令,并使用来自金宝app凉亭共模图书馆。

在此块中的每个子系统内部,a公交划分块用于将关节扭矩分配给正确的关节。

例如,在左轮凉亭扭矩命令子系统,如上所示,一个露台空白信息applyJointtorque.命令类型用于指定总线类型。控件提供了模型和联合名称凉亭选择实体块,与凉亭世界的左轮相关联的关节连接,left_wheel_hipe..力矩作用于整个步长时间(0.01秒),单位为纳秒,因为这些输入必须以整数形式提供。总线的输出被传递给总线露台使用命令堵塞。

模拟机器人

要运行模型,请初始化航点并设置示例时间:

航点= [0 0;4 2;3 7;-3 6];Sampletime = 0.01;

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

图绘制了该组的航点和机器人的最终执行路径。