文章目录

  • 一. 给关节施加力和建立传感器
  • 二. 加入PID控制器
  • 三.观察运行结果
  • 四. 给零件施加外部力

一. 给关节施加力和建立传感器

建立完模型之后,我们最想要做的就是模拟系统在受力情况下是怎么运动的,这就是动力学仿真的真谛。上一节我们其实已经观察了自由单摆在只受重力作用下的运动,其实就是一个正弦变动,由于没有摩擦力,所以他会一直等幅振荡。

接着上一节的内容,本次我们的目标是给单摆施加驱动力矩,同时记录单摆的摆动位置和速度。在Multibody里面施加力和增加传感器都是在关节当中进行的。

打开我们上一节的模型,双击打开Revolute Joint,像下面这样设置

Internal Mechanics是施加弹性力(Spring Stiffness)与阻尼(Damping Coefficient),以前都学过的,弹性力与位移成正比,阻尼力与速度成正比(力是广义力,包含力矩)这样设置完之后其实就是一个标准的质量—弹簧—阻尼系统了,一个二阶系统。

Actuation是驱动力,在Torque里面选择Provided by Input,就是通过输入力驱动,当然可以选择直接给一个值的。

Sensing就是传感器,这里勾选Position和velocity,位置和速度。

完事之后Revolute Joint就多出了几个接口,分别是输入力与输出位置、速度。

加进去一个正弦信号,一个Simulink-PS Converter,一个PS-Simulink Converter,一个Scope,一个to workspace块,连接起来。最后像下面这样。

说明一下,所有的部件都可以在Simulink library里面找到,找不到就搜索,最快的是直接在模型里面打字,它会自己出来的,比如搜索To Worksapce模块


这样就加入了力和传感器,Simulink-PS Converter和PS-Simulink Converter的作用已经说过了,是实现Simulink信号与Multibody信号的转换,没有这个东西它是不让你连接的。

点击运行,观察三维视图里面的真实运动,打开Scope观察位移和速度的曲线,然后在Matlab Workspce里面可以使用导出的数据绘图。这里我就不截图了,很简单。

二. 加入PID控制器

接下来是重头戏,我们看如何加入PID控制器,控制输入力矩,实现单摆的角度控制。

有了上面的基础其实答案已经呼之欲出了,我们只需要像在simulink里面仿真一样加入PID控制器、比较器就行了。只不过Simulink里面的Plant是建立的数学模型(传递函数或状态空间或S-function别的什么东东),而Multibody里面是虚拟样机。

直接给出连接关系,如下:

这里面PID控制器的参数调整采用里面提供的PID整定器,双击打开PID控制器,点击Tune,打开PID Turner

PID Turner的页面如下,TURNING TOOLS里面拖动两个按钮就可以调整输出曲线。

调完之后点击RESULT,点击UPDATE Block,将参数更新到PID控制器。

三.观察运行结果

点击运行,看看效果。很快就调整到倒立位置了,也就是设立的参考输入180度。

可以加一个示波器看看角度曲线。可以看到跟PID整定的曲线是一样的,大家可以调整一下PID,看看变化。

四. 给零件施加外部力

上面我们是通过关节的设置,来实现给关节施加力的,那么能不能直接给零件施加力呢,答案是肯定的,这个时候需要用到External Force And Torque模块。下面我们看看它的用法

拖进来一个External Force And Torque模块,位置在这里

拖进来之后双击打开,如下设置,增加一个沿着x轴的力(复选框打钩)。这里解释一下,关于力的施加位置和方向,External Force And Torque模块有一个输出端口F(follower),连接到下一个坐标系。力的作用点就是下一个连上来的坐标系的原点,力方向就是沿着下一个练上来的坐标系的轴。

然后连接,把External Force And Torque的F连到pendulum的尾巴上去。也就是说给单摆的末端施加了一个始终垂直于单摆的力。在这个力的作用下就会形成绕转轴的力矩,单摆就会摆起来。

运行之后看一下。

图里面这个坐标系就是pendulum的尾巴坐标系,力的施加方向就是沿着这个坐标系的x轴的。
那么怎么施加力和力矩到任意一点呢?就很简单了,首先需要在你想要施加力的位置建立一个坐标系,然后把External Force And Torque的F连到这个坐标系就行了。

Simscape Multiby学习笔记5——在Multibody中建立控制器-驱动力-传感器相关推荐

  1. Simscape Multiby学习笔记7——Multibody仿真实例2双曲柄瞄准系统

    文章目录 一. 建立和封装零件 (一)建立杆件A (二)建立杆件B (三)建立滑块C (四)建立杆件D 二. 修改坐标系 (一)修改D的坐标系 (二)修改B的坐标系 (三)修改A的坐标系 (四)修改C ...

  2. Java快速入门学习笔记9 | Java语言中的方法

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  3. Java快速入门学习笔记8 | Java语言中的数组

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  4. Java快速入门学习笔记7 | Java语言中的类与对象

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  5. Java快速入门学习笔记3 | Java语言中的表达式与操作符

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  6. Java快速入门学习笔记2 | Java语言中的基本类型

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  7. ROS学习笔记十一:ROS中数据的记录与重放

    ROS学习笔记十一:ROS中数据的记录与重放 本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录 ...

  8. python学习笔记26(python中__name__的使用)

    python学习笔记26(python中__name__的使用) 在python中,每个py文件都是一个模块,也都是一个可执行文件,即包含main方法.因此,对每个py文件,可以单独运行,也可以imp ...

  9. webpack入门学习笔记10 —— 在项目中使用图片资源

    1. 写在前面 在前端项目中,图片是必不可少的一种资源.在使用图片的时候,我们可以有以下几种方式: 在 .html 文件中,通过 <img src="" alt=" ...

最新文章

  1. 鼠标位置精确定位总结
  2. 查看真实的执行计划 绑定变量对执行计划的影响--“绑定变量窥探”
  3. 070_获取日期方法
  4. Bootstrap页面布局13 - BS按钮
  5. 一步一步详解ID3和C4.5的C++实现
  6. iphone UILabel 顶部对齐(top align)
  7. qdialog 只有点击才能获得焦点_4 个突破点,让你的 Banner 点击率提升10倍
  8. java第二章_JAVA第二章知识点
  9. qt中的菜单QMenu QAction
  10. Java String 探索
  11. 苍溪实验中学计算机等级考试,苍溪实验中学2021年招生录取分数线
  12. Unity为Mesh指定uv
  13. [转]VC2005中实现窗口淡入淡出
  14. 查看数据库实例名的方法:
  15. 双稳态继电器工作原理图_常见的继电器及工作原理
  16. 实例分割:R-CNN、Fast R-CNN、Faster R-CNN、Mask R-CNN
  17. 微信 java抓取_【java】微信文章抓取
  18. navicat for mysql 导出向导_详解 Navicat 导出向导步骤
  19. 网络安全设备概念的熟悉和学习
  20. 根据学生分数给学生成绩分等级

热门文章

  1. crh寄存器_STM32的寄存器控制SDA_IN()/SDA_OUT()
  2. 递归方法实现最大公约数
  3. 举个栗子!Tableau 技巧(16):如何插入自定义形状
  4. 编译与调试以及makefile
  5. 颤抖吧(C++) kkmd66
  6. Liang的Rootkit习作-ZION
  7. Revit API 之 气泡
  8. 用matlab跳动的心,[ 教程 ] 用Arduino制作一个跳动的心
  9. 蜗牛一般的UAP开发(零)初识UAP
  10. 使用PayPal补习注册(2/3):PayPal项目的真实注册