您的位置  > 互联网

Car-like小车建模与仿真1.模型推导

市面上常见的两种智能车都是轮式的,淘宝上卖的最流行。 您学生时代用于课程设计和毕业设计的汽车有两种。

1、后轮驱动,前轮阿克曼转向,通常后桥由有刷直流电机驱动,前桥通过转向器驱动连杆转向。 在英文中,通常称为Car-like Model。

2、差速传动,最常见,可制成轮式或履带式。 通过在每个车轮上安装一个电机,您当然可以说它成为轮毂电机驱动器。 这通常称为类坦克模型。

分析控制问题时,第一步是建立被控​​对象的数学模型。

这里我们不强调模型的复杂性,因为大多数都是低速行驶,所以只考虑运动学模型。

如果需要参加XXX智能汽车比赛,这样的赛车项目,就必须考虑动力学模型,需要通过大量的实验来估计和识别模型的参数。

这次我们只讲一个简单的运动学模型,并搭建一个环境模型。 最后,我们使用仿真环境来验证模型的可用性!

所需的软件和硬件

1.电脑一台

2、用/安装的软件本次只是在仿真环境中进行建模,不需要小车硬件和控制器硬件。

类车建模与仿真

1. 模型推导

先给大家一个直观的感受。 比如我上一篇博客中的汽车就是Car-like汽车。 您可以跳回到上一篇文章查看汽车图片。

所以对于小车的运动学模型,需要进行简化,可以简化为如下图所示的模型。 如果不想看数学推导,可以直接看最终的推导结果。

其中v为汽车的轴向速度,x、y表示汽车后轴中心点的大地坐标。

2.模型构建

首先,根据上一节的内容搭建仿真模型。 具体型号如下图所示。 如果你刚刚入门,可以按照我的模型自己搭建。

你会问我为什么报错。 原因很简单。 我没有在数据字典或者数据字典中定义参数的具体值。 显示的编译器无法识别特定参数。 我为什么要这样做? 因为这部分模型会被封装成一个子系统。 。

在子系统打包界面中输入参数。

我会点击几个模块来给大家展示错误的具体原因。例如这个集成模块

该模块的输出值代表汽车大地坐标中的横坐标。 In 是定义汽车的初始值。 这里通过参数定义了小车的初始横坐标。 采样时间用参数表示,方便自定义采样时间,无需每次都打开模型。 进入。

其他方位角、纵坐标、轴距其实都是一样的。 我使用了Bus模块作为输出模块,这样也方便我们查看我们感兴趣的输出信号。接下来,封装子系统。 选择所有接口,右键单击并从中选择。

如下图所示,可以看到还是有错误,不过没关系,稍后会解决的。

身体系统现已完成。

然后我们将建立转向系统和驱动系统。 我不需要说明驱动系统的建立。 这时我们只需要将最后一个模型连接到speed接口上即可。

输入:所需的车速。 输出:实际速度。 当然,控制器不属于系统本身的模型。 我把它们放在一起,是为了方便后面模拟。

那么如何建立转向系统的模型呢?

汽车使用转向器,其惯性非常大。 使用过的同学一定知道,这里我用一阶惯性连杆来表示转向系统。 关于一阶惯性环节的滞后我这里就不详细说了。 通过数学推导,从伯德图可以看出,相位有90度的滞后。

这里使用开环控制,因为我目前无法通过传感器对转向舵机进行反馈控制。 时间常数tao的选择决定了系统的滞后时间。

但要注意不要把惯性环节和延迟环节搞混了,所以要小心! 其中,该模块对小车的预期转向角度进行了限制,限制了最大转向角度。 参数输入到模块中,稍后会被打包使用。

如果你不确定lag参数,可以添加一个Scope来查看lag时间,并选择时间常数tao。 此时我们将整个系统表示如下图所示。

软件的架构一定要清晰,这是最基本的!

接下来创建一个整体子系统。

子系统中,参数未定义,仍处于错误状态。 然后右键该子系统,选择Mask->Mask,会出现如下界面:

首先选择它,然后单击左侧的“编辑”。 编辑如下图所示:

该名称与您设置的参数名称和打包界面显示的名称相对应。

并且您可以在条目中描述子系统。 最后单击“确定”。

再次单击您的子系统即可看到打包完成。

当然,你也可以右键子系统Mask->Add Icon Image,选择你的车的图片。 我还添加了我自己的汽车照片。

您可以将模型生成到自定义库中。

3、类车车模仿真

对于这个模拟环境,我使用了培训视频中提供的一个demo,并对该demo进行了修改。

这个demo的需求是:通过规划路径并设计一个纯跟踪控制器,让小车能够很好地跟踪轨迹。

Emo分为三个部分: