当前位置: 首页 > news >正文

V-rep学习笔记:转动关节1

  V-REP(Virtual Robot Experimentation Platform),是全球领先的机器人及模拟自动化软件平台。V-REP让使用者可以模拟整个机器人系统或其子系统(如感测器或机械结构),通过详尽的应用程序接口(API),可以轻易的整合机器人的各项功能。V-REP可以被使用在远程监控、硬件控制、快速原型验证、控制算法开发与参数调整、安全性检查、机器人教学、工厂自动化模拟及产品展示等各种领域。

  之前用过多体动力学仿真软件ADAMS,现在再来学V-rep感觉很不习惯,界面和操作方式都有很大的差异,毕竟ADAMS是一个成熟的商业软件而V-rep只是一个开源软件。但V-rep好在编程很方便,支持多种编程语言(lua,python,C/C++,MATLAB,java等),还可以和ROS连接。国内的V-rep用户应该不是很多,网上关于V-rep的中文资料也几乎为零,而官方的教程对我这种菜鸟来说又太过高级。所以先自己慢慢摸索吧,下面将自己的学习过程记录下来,以免以后忘记...

  先来研究一下V-rep中的转动关节。为什么想先研究转动关节呢(官方教程里一开始就是各种寻迹、机器人逆解...),可能还是受到ADAMS的影响吧。就像学一门编程语言第一步就是写一个hello world程序一样,ADAMS学习第一步就是建立一个连杆和转动关节来进行运动学、动力学的方针。我一开始在V-rep中按ADAMS的操作方式试过好几次,要么是连杆不转动要么就是一仿真连杆就直接受重力影响直接掉下去。去网上查找解决问题的方法,发现大家讨论的问题都比较高级,相关的细节很少有介绍的。那我就自己动手多试试...

  讲到转动关节先要说一下V-rep中物体姿态角的定义方式。在ADAMS中用户可以自定义姿态角绕坐标轴的旋转顺序,以及是按固定坐标系旋转还是绕自身坐标系旋转。在V-rep中物体姿态以X-Y-Z欧拉角的方式确定(以指定的参考系为初始姿态,然后按X-Y-Z的顺序依次绕自身的坐标轴旋转Alpha,Beta,Gamma角度后得到),参考坐标系有world和Parent frame之分,下面来看看这两者有什么区别。

  先建立一个Plane平面(下图中灰色的正方形),将Plane的坐标系绕自身Z轴旋转90°,然后添加一个Cuboid把它作为Plane的子对象。现在我们选中Cuboid打开其Object orientation对话框,可以看到当选择相对Parent frame时其姿态角位(0,0,-90°),即以Plane的坐标系为基准,绕自身Z轴旋转-90°得到;而选择World时,姿态角位(0,0,0),即Cuboid的姿态与世界坐标系的姿态一致。下图可以说明这一别。

  打开V-rep的帮助找到Joint types and operation那一页,里面写道A joint is used to allow for a relative movement between its parent and its children,即joint是用于连接其父对象和子对象,并限制其父子对象相对运动的。按照ADAMS的方式先建立连杆,再讲旋转关节添加到连杆一端就可以开始愉快的仿真了,而V-rep这样的话连杆会直接掉下去。后来看了一下软件自带的一个齿轮的例子(gearMechanism.ttt),发现V-rep中需要显式的建立一个机架(即为机构上静止不动的部件),而ADAMS默认旋转关节是连着Ground的。下面添加一个平面作为机架,并在dynamic properties对话框中去掉Body is dynamic选项(when enabled, then the shape's position and orientation will be influenced in a dynamic simulation,由于机架固定不动,因此需要去掉该选项)。将连杆和旋转关节建立好放在合适的位置(下图中将旋转关节放在连杆的最左端。如果放在中间且不添加关节驱动力,在重力作用下连杆不会发生转动)。将Joint设为Torque/force mode,在动力学特性对话框中如果勾选Motor enabled,则关节将带动连杆按指定规律运动;如果没有勾选Motor enabled,则关节成为一个自由关节,连杆受重力作用会绕着关节往复摆动。

  另外需要注意的是,根据官方文档:"Non-static shapes will fall (i.e. be influenced by gravity) if they are not otherwise constrained. Dynamic constraints between shapes can be set-up by attaching two shapes together with a dynamically enabled joint. Dynamically enabled joints are joints that are in force or torque mode or that operate in hybrid fashion, and that have a shape as parent object and exactly one child object which must be a non-static shape." 即如果关节没有设置成动力学模式(Torque/force mode)或着在非动力学模式下没有勾选Hybrid operation选项,连杆将不会被约束住,在重力作用下会坠落。

  下面调整视角,添加一个Graph记录连杆在驱动作用下的旋转角度。打开Graph的对话框在Add new data stream to record中添加要测的数据。注意这里要选择absolute gamma-orientation,因为连杆是绕着自身的Z轴在旋转,测量物体选择Cuboid。关节角速度为30°/s,仿真2s后停止,到达60°的位置,Graph记录了连杆转角随时间的变化。

  关节在Torque/force模式下可以设置目标角速度,需要注意的一点是:The target velocity will be instantaneously reached if the maximum torque/force is high enough; otherwise the target velocity is gradually approached. 即如果关节力矩过小,目标速度可能要缓慢才能达到。下面两幅图说明了这种情况。

 

 

参考:

1. V-REP User Manual

2. Simulate a rotating object (valve) using joint

转载于:https://www.cnblogs.com/21207-iHome/p/5911028.html

相关文章:

  • Bootstrap--全局CSS样式之栅格系统
  • 使用Percona XtraBackup热备和恢复MySQL
  • 事件的截获
  • Hibernate中如何完成持久化类和数据库映射文件
  • 如何做好一名实习生
  • 事件分发时候的onTouchEvent,onInterceptTouchEvent,dispatchTouchEvent调用顺序
  • PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)
  • jQuery基础:mouseeter( ) 与 mouseover( ) 区别
  • 为什么「教学相长」?
  • linux内核(kernel)版本号的意义
  • a+=b 是什么意思?
  • 模拟。。。 Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) C
  • 端口聚合配置
  • iOS 2D绘图详解(Quartz 2D)之概述
  • java JVM : Xms Xmx PermSize MaxPermSize 区别
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【知识碎片】第三方登录弹窗效果
  • 345-反转字符串中的元音字母
  • canvas绘制圆角头像
  • JAVA_NIO系列——Channel和Buffer详解
  • js递归,无限分级树形折叠菜单
  • SAP云平台里Global Account和Sub Account的关系
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Travix是如何部署应用程序到Kubernetes上的
  • 简析gRPC client 连接管理
  • 浏览器缓存机制分析
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 那些被忽略的 JavaScript 数组方法细节
  • 学习使用ExpressJS 4.0中的新Router
  • 译有关态射的一切
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • ​【已解决】npm install​卡主不动的情况
  • #define用法
  • #pragma once与条件编译
  • #vue3 实现前端下载excel文件模板功能
  • (+4)2.2UML建模图
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (14)Hive调优——合并小文件
  • (2020)Java后端开发----(面试题和笔试题)
  • (3)选择元素——(17)练习(Exercises)
  • (vue)页面文件上传获取:action地址
  • (生成器)yield与(迭代器)generator
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (推荐)叮当——中文语音对话机器人
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)创业家杂志:UCWEB天使第一步
  • .Net 8.0 新的变化
  • .Net Core 中间件验签
  • .NET Core引入性能分析引导优化
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET 常见的偏门问题
  • .net 简单实现MD5
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)