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

时间: 2024-10-07 03:37:28

V-rep学习笔记:转动关节1的相关文章

HashMap之put(K key, V value)学习笔记 jdk8版 (一)

    /**      * Associates the specified value with the specified key in this map.      * If the map previously contained a mapping for the key, the old      * value is replaced.      *      * @param key key with which the specified value is to be ass

Linux程序设计学习笔记----System V进程间通信(信号量)

关于System V Unix System V,是Unix操作系统众多版本中的一支.它最初由AT&T开发,在1983年第一次发布,因此也被称为AT&T System V.一共发行了4个System V的主要版本:版本1.2.3和4.System V Release 4,或者称为SVR4,是最成功的版本,成为一些UNIX共同特性的源头,例如"SysV 初始化脚本"(/etc/init.d),用来控制系统启动和关闭,System V Interface Definitio

Linux程序设计学习笔记----System V进程通信(共享内存)

转载请注明出处:http://blog.csdn.net/suool/article/details/38515863 共享内存可以被描述成内存一个区域(段)的映射,这个区域可以被更多的进程所共享.这是IPC机制中最快的一种形式,因为它不需要中间环节,而是把信息直接从一个内存段映射到调用进程的地址空间. 一个段可以直接由一个进程创建,随后,可以有任意多的进程对其读和写.但是,一旦内存被共享之后,对共享内存的访问同步需要由其他 IPC 机制,例如信号量来实现.象所有的System V IPC 对象

Linux程序设计学习笔记----System V进程通信之消息队列

一个或多个进程可向消息队列写入消息,而一个或多个进程可从消息队列中读取消息,这种进程间通讯机制通常使用在客户/服务器模型中,客户向服务器发送请求消息,服务器读取消息并执行相应请求.在许多微内核结构的操作系统中,内核和各组件之间的基本通讯方式就是消息队列.例如,在 MINIX 操作系统中,内核.I/O 任务.服务器进程和用户进程之间就是通过消息队列实现通讯的. Linux中的消息可以被描述成在内核地址空间的一个内部链表,每一个消息队列由一个IPC的标识号唯一的标识.Linux 为系统中所有的消息队

AT&T汇编学习笔记

AT&T汇编和intel汇编的区别 (1)在Intel格式中大多使用大写字母,而在AT&T格式中都是用小写字母. (2)在AT&T格式中,寄存器名要加上"%"作为前缀,而在intel格式中则不带前缀. (3)在AT&T的386汇编语言中,指令的源操作数与目标操作数的顺序与在intel的386汇编语言中正好相反.在intel格式中是目标在前,源在后:而在AT&T格式中则是源在前,目标在后.例如,将寄存器eax的内容送入ebx,在intel格式中为&

R语言学习笔记

參考:W.N. Venables, D.M. Smith and the R DCT: Introduction to R -- Notes on R: A Programming Environment for Data Analysis and Graphics,2003. http://bayes.math.montana.edu/Rweb/Rnotes/R.html 前言:关于R 在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(A system for data

嵌入式学习笔记101-uboot_1.1.6移植(1)

根据前篇博文(嵌入式学习笔记100-uboot1.1.6初体验)最后的结论,现在开始将其实现: a. 修改makefile的CROSS_COMPILE指定编译器 arm-linux-gcc -v –> gcc version 3.4.5 CROSS_COMPILE = /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux- chmod -R 777 u-boot-1.1.6/

node.js在windows下的学习笔记(2)---简单熟悉一些命令

1.打开如下的安装 2.输入node -v,显示node的版本号 3.输入node --help.显示帮助命令 4.自己用一个文本编辑器编写一下代码,保存为text.js,然后在控制台输入node.exe  text.js的路径(直接把这个js文件拖到控制台自动显示路径),按下回车键 var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {&

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

Vim学习笔记

1.复制粘贴操作 vim有12个粘贴板,分别是0.1.2.....9.a.".+: 用:reg命令可以查看各个粘贴板里的内容.在vim中简单用y只是复制到"(双引号)粘贴板里,同样用p粘贴的也是这个粘贴板里的内容要将vim的内容复制到某个粘贴板,需要退出编辑模式,进入正常模式后,选择要复制的内容,然后按"Ny(注意带引号)完成复制,其中N为粘贴板号(注意是按一下双引号然后按粘贴板号最后按y),例如要把内容复制到粘贴板a,选中内容后按"ay就可以了,有两点需要说明一下