01.|初识CPS方法的连续动态建模( 二 )


其中 , x(0)是初始位置 。 基于这些方程 , 如果已知物体的初始位置、初始速度以及施加在物体上的三个方向的作用力(时间的函数) , 就可以确定物体在任意时刻的加速度、速度以及位置 。
这些作用于方向的运动方程使用了转矩 , 即旋转形式的作用力 。 这又是一个作为时间函数的三元素向量 , 代表了作用在物体上的净旋转力 。 它与角速度相关 , 形式类似于公式1.
01.|初识CPS方法的连续动态建模
文章图片
其中 , T是三个轴上的转矩向量 , I(t)是物体的转动惯量张量 。 转动惯量是一个3X3矩阵 , 其取决于物体的集合形状和方向 。 如果物体是个球形的 , 那么这个惯性在所有轴上都是相同的 , 因此 , 其将归纳为一个常标量I , 此时 , 该方程将与公式1非常相似 , 如式3所示 。
01.|初识CPS方法的连续动态建模
文章图片
旋转速度是加速度的积分 , 如下公式所示 。 其中 , θ'(0)即三个轴的初始旋转速度 。
01.|初识CPS方法的连续动态建模
文章图片
如果将物体看作是球形 , 那么使用公式(3)可以得到以下方程 。
01.|初识CPS方法的连续动态建模
文章图片
方向则是旋转速度的积分 , 可由以下方程计算 。
01.|初识CPS方法的连续动态建模
文章图片
其中 , θ'(0)是初始方向 。
如果已知物体的初始方向、初始旋转速度 , 以及作用在物体三个轴上的转矩是一个时间函数 , 使用这些方程就能随时确定物体的旋转加速度、速度以及方向 。
以上就是对连续动态物体进行简单建模的过程 , 此方法可以得到三维物体的加速度、速度、位置、旋转加速度和方向等信息 , 如果物体是在平面上移动的车辆 , 那么可以不考虑y轴方向的运动 , 车辆的运动方程也可以使用此方法进行简单的建模 。 03.使用ModelCoder进行建模
使用ModelCoder对式(6)进行建模 , 通过模型观察连续动态模型的变化:
假设参数I为1 , θ(0)初始方向=1 , 方程由三部分构成:
01.|初识CPS方法的连续动态建模
文章图片
因此 , 我们分别对这三部分进行建模 ,
第一部分 , 由于θ(0)=1 , 我们直接使用Constant模块进行输出即可:
01.|初识CPS方法的连续动态建模
文章图片
第二部分 , 这是初始方向微分与时间的乘积 , 假设初始方向的导函数的结果是1 , 用Constans模块表示 , 与Clock模块相乘 。
01.|初识CPS方法的连续动态建模
文章图片
对于T(α) , 我们知道它是一个随时间变化而变化的值 , 我们使用斜率为1的Ramp模块来表示 , 对其进行两次积分 , 并乘以系数1/I=1 , 第三部分建模如下:
01.|初识CPS方法的连续动态建模
文章图片
最后将方程的三部分用加法器组合在一起 , 搭建如下模型 。
01.|初识CPS方法的连续动态建模
文章图片
对此模型进行仿真 , 得到的结果如下图:
01.|初识CPS方法的连续动态建模
文章图片
通过模型仿真 , 我们可以看到 , 模型在开始之初变化不大 , 但是随着时间的推移 , 施加在某个方向上的转矩T(α)越大 , 物体旋转的速度也越快 。 04.Modelcoder
由我司自主开发的ModelCoder是一款支持多种嵌入式系统建模并可以自动生成高安全可靠的C代码的软件设计和开发工具 。 ModelCoder支持同步数据流以及状态机等嵌入式模型 , 其从模型生成代码的过程经过了形式化验证 , 保证生成过程的正确无误性 , 能够用于飞控 , 航电 , 核电DCS等多个安全关键领域的嵌入式软件的设计和开发 。