OpenModelica中的可视化仿真

  • OpenModelica中的可视化仿真
    • 1. 复合摆
      • 1.1 综述
      • 1.2 组件的介绍
        • 1.2.1 world组件
        • 1.2.2 damper组件
        • 1.2.3 revolute组件
        • 1.2.4 boxBody组件
      • 1.3 接口的连接规则
    • 2. 机械臂(R3)
      • 2.1 组件介绍
        • 2.1.1 MechanicalStructure组件
        • 2.1.2 AxisType组件
        • 2.1.3 PathPlanning6组件
      • 2.2 接口连接

OpenModelica中的可视化仿真

OpenModelica中的可视化仿真主要是关于机械运动的可视化以及运动仿真

在OpenModelica中也提供了大量的案例,案例的目录主要在Modelica-Mechanics-multiBody-Examples这个路径下,想要学习OpenModelica的可视化可以先学习这个路径下的可视化案例。

接下来首先对其中的复合摆以及机械臂案例做代码分析的介绍,希望可以帮助到想要学习OpenModelica的朋友。

1. 复合摆

1.1 综述

复合摆在OpenModelica中的路径为Modelica-Mechanics-multiBody-Examples-Elementary-DoublePendulum

在组件视图中可以看到主要部件之间的连接关系,复合摆主要由两个revolute和两个boxBody组成。其中将第一个revolute1连接在world上,world指的是世界坐标–绝对坐标系,在可视化完成后,用户看见的唯一的坐标,也是一个统一的坐标。然后在revolute1上我们可以看见一个damper,damper组件的作用是为revolute1转轴提供一个阻尼,模仿显示世界中的带有阻尼的运动。

1.2 组件的介绍

图2为复合摆的组件连接图,其中共有四种组件,下面依次对四种组件进行介绍,介绍的主要内容为组件的接口、组件的运动控制方式以及组件的可视化。

1.2.1 world组件

world表示世界坐标系+重力场,在惯性系统中使用,模型世界代表一个固定在地面上的全球坐标系。

world中拥有一个frame_b接口(图2中world的1接口),frame_b用于确定坐标原点以及在和其他组件连接时,将其他组件固定在坐标系的原点。

图1中的xyz就代表了world,图中左侧的红色小圆柱revolute1就是通过自身的接口3(frame_a)与world的frame_b相连接固定在坐标原点。

world中引入了在frames包下定义的许多转换旋转坐标系的函数,用于完成系统的旋转。例如axesRotations函数返回方向对象 R,该对象描述沿单位轴从第 1 帧旋转到第 2 帧的方向,就是所改变两帧之间所改变的角度,实现可视化。

1.2.2 damper组件

damper是线性一维旋转阻尼器,一般连接在惯性或齿轮与外壳之间,连接在revolute组件之上,通过tau变量设定剪切扭矩(提供阻力),具体的连接在连接部分中详细讲述。Damper是一个提供阻力的原件只为了模仿现实中轴承或齿轮之间存在的阻力,所以没有可视化。

1.2.3 revolute组件

旋转接头,可以理解为轴承,分内外两层,内层连接frame_a是支撑轴承用于固定,外层是旋转轴承用于旋转。

下图中显示了旋转关节的动画。浅蓝色坐标系是frame_a,深蓝色坐标系是关节的frame_b。黑色箭头是定义平移轴的参数向量“n”(此处:n = {0,0,1},phi.start = 45o)。

在默认情况下revolute是没有外来动力的,使得revolute受力的方式有两种1)如图1中连接boxBody后外层的frame_b就受到了力的作用(这里的力来自于boxBody的重力);2)设置useAxisFlange参数为true,在flange_a和flange_b(图2中的1和2号接口)两个接口上连接外部的部件。连接的部件可以提供动力也可以提供阻力。

revolute组件的可视化通过shape组件实现,这是一个专门用于可视化的组件,shapeType属性设置为cylinder,显示的内容是由系统渲染的圆筒,圆筒的大小、颜色由属性color、length、width设置。

1.2.4 boxBody组件

箱形刚体(一个有质量的长方体),质量和动画属性是根据框数据(内外边框的长宽高)和密度得到的。

可视化通过FixedTranslation实现,通过设置shapeType来设置显示的外观,这里可视化实现和revolute组件使用的组件不相同是因为在revolute中frame_a和frame_b的位置是相同的,但是在boxBody中frame_a和frame_b的位置不同,两端表示长方体的两端,是一个平移关系。frame_a和frame_b需要连接其他组件,在可视化中frame_a和frame_b需要在正确的位置才可以正确的可视化。

下面介绍一些boxBody中的参数以及主要作用,r_0为frame_a(图1中长方体)左侧的三维坐标,v_0为frame_a的速度(坐标的导数、变化率),下图给出了十秒内boxBody2中frame_a相对于x轴的速度和相对于y轴的速度。

1.3 接口的连接规则

详细讲述frame_a和frame_b这两个接口,两个接口本质是一样的,在连接时避免出错所以设计a、b两种,接口作用是提供在world坐标系下的坐标,可以通过frame_a.r_0获得,以及用于连接。

例如在revolute1中frame_b和boxBody1中frame_a相连接,会为revolute提供一个扭矩,公式为tau = -frame_b.t*e,tau是revolute1自带的扭矩参数,frame_b与boxBody1相连之后受重力影响因此会收到一个扭矩。

Frame_a和frame_b不但是接口还是参数传递的方式。

2. 机械臂(R3)

图2.1 组件连接图

2.1 组件介绍

2.1.1 MechanicalStructure组件

MechanicalStructure中包括R3机器人机械臂的极限部分,包括轴承和外壳的组成。

R3机械臂的外观如图2.2,在关闭外观的可视化后,得到图2.3,图中红色部分展现的就是每个组件内部的轴承。

在R3机械臂中所有的机械部件都在MechanicalStructure组件中进行声明,其中包括r1-r6共六个轴承,这里的轴承的复合摆中使用的轴承相同,同样开启了useAxisFlang,轴承受到外力(除去重力的力,例如阻力、驱动力等)。MechanicalStructure中还声明了world世界坐标系,以及七个外观部件(b0-b6),通过BodyShape组件完成可视化,BodyShape是通过shapeType属性控制显示的外观,shapeType属性的值可以是系统自动渲染的3d模型的名字如box等,也可以指定自己想要的dxf文件的地址(目前尝试下需要放在modelica环境路径下,使用绝对路径会出错),使用自己描绘的3d文件无法根据程序中参数改变外观,只能在3d软件中重新描绘,所以3d文件只是做一个展示作用。在使用BodyShape进行可视化时,不管使用的3d文件还是系统渲染的模型都是位于frame_a和frame_b之间,frame_a和frame_b平行。

b0-b6的运动都是通过控制frame_a的坐标变换进行控制的。下图给出了几个轴在一秒内x轴坐标的变换曲线。

在MechanicalStructure中还有一个load组件,一个形状类似于权杖的物体,和前面的b0相同,只是使用了系统的渲染方式,没有使用自己的外观组件。

此外还提供六个Flange_a接口(取名为axis),用于和轴承的Flange_b接口相连接,这个接口的作用是向外提供的统一的接口,作为中间过渡,与axis相连接就是与轴承上的Flange_a接口相连接,轴承的Flange_a接口的作用是根据外部组件收到相关的受力。

2.1.2 AxisType组件

AxisType1的主要作用是将刚刚MechanicalStructure中提到的前三个轴承r1-r3设置为由一个齿轮弹性和轴承摩擦建模的齿轮箱、一个电机模型和一个连续时间级联控制器的形式。该组件是没有可视化外观的,主要是通过flange同MechanicalStructure的axis接口相连接,提供受力。

AxisType2组件和AxisType1组件类似,唯一区别是齿轮箱中的弹性和阻尼未被忽略,连接在轴承r4-r6上。

2.1.3 PathPlanning6组件

设定每个轴的开始和结束角度,各轴最大速度,每个轴的最大加速度,该组件计算给定约束下的最快移动。

该组件向外暴露由六个接口汇聚而成的一个统一接口——controlBus,该接口内部有六个接口,分别与AxisType组件相连接,通过相关变量,控制AxisType的运动角度、速度等。

2.2 接口连接

所有组件都声明在FullRobot中,其中pathPlanning组件内部控制轴运动参数的六个接口会汇聚成为一个统一的接口就是controlBus接口,在FullRobot中同样声明一个controlBus接口,将FullRobot中的controlBus接口与pathPlanning中的controlBus接口相连接,这样在FullRobot中可以之间使用controlbus接口。

FullRobot中还有三个AxisType1接口和三个AxisType2接口以及MechanicalStructure接口,AxisType接口是MechanicalStructure中轴体外力的提供者,所以将AxisType与MechanicalStructure中的axis接口分别对应连接。pathPlanning内部还有axisControlBus接口用于连接AxisType进行数据交互,同样是一一连接。

OpenModelica中的可视化仿真相关推荐

  1. Matlab模型可视化仿真:SimMechanics Link的安装与使用

    这是我的第一篇博客,以记录研究生生涯的各种瞎折腾.这几天一直在想能不能将Solidworks的模型导入matlab中做可视化仿真,原因在于matlab自带的机器人工具箱实在是太丑了.有多丑,看图就知道 ...

  2. Gprmax 三维地质雷达建模及在 paraview 中的可视化

    Gprmax 三维地质雷达建模及在 paraview 中的可视化(1) Gprmax 运行三维模型速度很慢,建议在有GPU加速的环境下运行,有关GPU加速的方法,在我的上一个博客link中有说明. 文 ...

  3. MATLAB轨迹规划 发给ROS中机器人实现仿真运动

    MATLAB轨迹规划 发给ROS中机器人实现仿真运动 现象如图所示: 0.matlab 与 ROS 通信: https://blog.csdn.net/qq_40569926/article/deta ...

  4. 在NS-3中安装可视化工具NeAnim

    在NS-3中安装可视化工具NeAnim NetAnim 是一个独立的,基于Qt4的离线动画演示工具,在ns-3的仿真过程中生成XML格式的trace文件,仿真结束后NetAnim读取该文件显示网络拓扑 ...

  5. 【Stewart并联机器人运动学逆解可视化仿真】

    Stewart并联机器人可视化仿真 1. 坐标系建立(SPS构型) 在已知六自由度 Stewart 平台结构参数以及动平台位置的情况下,求其所有连杆伸缩长度就是 Stewart 平台的位置反解问题.提 ...

  6. 基于Matlab模拟、检测和跟踪飞机着陆进场中异常的仿真(附源码)

    目录 一.介绍 二.生成和标记轨迹 三.定义方案 四.运行方案并检测异常轨道 五.将跟踪异常报告与事实进行比较 六.总结 七.程序 该示例显示了如何自动检测最终接近机场跑道的飞机的偏差和异常.在此示例 ...

  7. 计算机网络搭建软件,计算机网络搭建中的虚拟仿真技术

    计算机网络搭建中的虚拟仿真技术 来源:用户上传 作者:胥果 [摘           要]  现代计算机技术.通信技术的快速发展将二者成功地连接在一起,形成计算机网络,广泛地应用于当前的生活和工作中. ...

  8. 【20220605】文献翻译——虚拟现实中的可视化:一个系统的回顾

    Visualization in virtual reality: a systematic review 摘要 1 简介 4 结果和分析 4.1 工具.工具包和框架 4.2 数据可视化 4.3 信息 ...

  9. windows安装MongoDB环境以及在pycharm中配置可视化插件

    安装MongoDB数据库 参考这里 安装PyMongo python3 -m pip3 install pymongo指定版本 python3 -m pip3 install pymongo==3.5 ...

  10. python使用matplotlib可视化subplots绘制子图、自定义几行几列子图,如果M行N列,那么最终包含M*N个子图、在指定的子图中添加可视化结果

    python使用matplotlib可视化subplots绘制子图.自定义几行几列子图,如果M行N列,那么最终包含M*N个子图.在指定的子图中添加可视化结果 目录

最新文章

  1. js 变量、函数提升
  2. 只用来保存JQuery lightbox图片用的
  3. OpenGL编程指南12:光照_渲染真实球体
  4. android 6.0动态权限的申请
  5. 在WebPart中上传图片到SharePoint图片库,读取Exif信息到图片的自定义属性
  6. 阿里云对象存储OSS支持版本管理特性
  7. linux添加删除回环地址,CentOS7如何添加本地回环地址?CentOS7添加本地回环地址的方法...
  8. Android的布局
  9. [wordpress]更新插件时,免去FTP操作
  10. 正则表达式之模式匹配的String方法
  11. windows安装多个maven_全网最容易理解的Maven安装、配置、集成演示
  12. Centos7 只启用iptables 禁用firewalld功能.
  13. 【java】超市购物小程序
  14. 伪原创文章生成器-自媒体洗稿工具-关键词文章生成工具免费
  15. 磁盘提示:使用驱动器中的光盘之前需要将其格式化怎么办?
  16. 为什么百度蜘蛛不对网站进行抓取?
  17. 两年,从纯小白到腾讯阿里,应届非计算机毕业生的2014互联网求职之路(转)...
  18. 博图在线升级 gsd_美生在线消费全返张鹏海外大举收割国内韭菜。
  19. 电脑播放视频报错----------无法播放。请确保你的计算机的声卡和视频卡可以使用,并安装了最新的驱动程序----------解决!
  20. matlab commsrc.pn,poly2trellis

热门文章

  1. python中function是什么意思_Python中的Function定义方法
  2. 微信小程序获取当前位置 地图定位导航-详细代码
  3. Java电阻计算器(二)
  4. 二进制 八进制 十进制 十六进制 相互转化法
  5. 万兴pdf编辑解压后打不开_为什么有的PDF文档无法编辑?
  6. Redis可视化客户端
  7. 老司机推荐企业用什么代理ip好
  8. RS232 RS485 串口 电平标准
  9. java扩展类库_Java 类库和常用类库
  10. js 计算两个时间的时间差