V-rep学习笔记:机器人模型创建2—添加关节
下面接着之前经过简化并调整好视觉效果的模型继续工作流,为了使模型能受控制运动起来必须在合适的位置上添加相应的运动副/关节。一般情况下我们可以查阅手册或根据设计图纸获得这些关节的准确位置和姿态,知道这些信息以后就可以通过[Menu bar --> Add --> Joints --> ...]来添加关节了, 之后可以通过位置和姿态对话框来调整关节位置姿态。在之前写过的V-rep学习笔记:曲柄摇杆机构中就是按照这种方式添加的关节。
如果我们有机器人的DH参数表也可以使用VREP中的工具来生成关节[Model browser-->tools-->Denavit-Hartenberg joint creator]. 以机器人学导论书中简单的三连杆机械手臂为例:

可以很容易写出其DH参数表:

我们将关节创建工具拖入场景中,选择地面作为根节点,然后填入表格中所示的DH参数,点击创建旋转关节。L1、L2杆长均为0.5m,$\theta$为关节变量,这里初始化为0,则三次的参数分别输入为:


有时我们无法知道关节的准确位置,只能通过现有的网格模型去创建关节。以基座的转动关节为例(先将其它部分隐藏,后面会讲到),可以用基座上表面的规则圆面作为参考来定位关节。
进入Shape edit模式,通过Page selector选择俯视图(如下面左图所示),在Triangle edit模式下通过框选可以很容易选中所有三角面片;或者可以选择正视图,进入顶点编辑模式(Vertex edit mode),选中如下面右图所示的所有顶点,然后切换回面编辑模式,可以发现所有的三角面已经选中。接着点击Extract cylinder在这个位置上生成规则圆柱体。


接下来添加转动关节:按Ctrl键先后选中该关节和之前创建的圆柱体,然后打开位置调整对话框,点击Apply to selection,这一操作会使关节的X、Y、Z坐标与圆柱体一致。如果想单独控制X、Y、Z坐标对齐,可以点左侧的Apply X/Y/Z to selection,这样就将关节放到了合适的位置。

剩下的关节也可以按照这种方式创建:

有时为了对特定的部件进行操作需要隐藏其它部分以便观察,可以通过设置物体所在图层来实现这一功能。双击要隐藏物体的图标打开Common属性页,在可见性一栏中可以看到16个图层:物体默认创建在图层1,将其移动到图层9中(默认图层1~8内的物体是可见的,图层9~16内的物体是隐藏的),隐藏后物体名将变灰。


如果要显示图层9~16内的物体可以打开Layer selection对话框:

[Layer selection dialog toolbar button]
如下图所示,默认只勾选了图层1~8,要显示图层9只需要勾选该图层即可:

参考:
Building a clean model tutorial
V-rep学习笔记:机器人模型创建2—添加关节的更多相关文章
- V-rep学习笔记:机器人模型创建3—搭建动力学模型
接着之前写的V-rep学习笔记:机器人模型创建2—添加关节继续机器人创建流程.如果已经添加好关节,那么就可以进入流程的最后一步:搭建层次结构模型和模型定义(build the model hierar ...
- JUC学习笔记——共享模型之管程
JUC学习笔记--共享模型之管程 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的管程部分 我们会分为以下几部分进行介绍: 共享问题 共享问题解决方案 线程安全分析 Monitor ...
- JUC学习笔记——共享模型之内存
JUC学习笔记--共享模型之内存 在本系列内容中我们会对JUC做一个系统的学习,本片将会介绍JUC的内存部分 我们会分为以下几部分进行介绍: Java内存模型 可见性 模式之两阶段终止 模式之Balk ...
- Django:学习笔记(7)——模型进阶
Django:学习笔记(7)——模型进阶 模型的继承 我们在面向对象的编程中,一个很重要的的版块,就是类的继承.父类保存了所有子类共有的内容,子类通过继承它来减少冗余代码并进行灵活扩展. 在Djang ...
- Django:学习笔记(6)——模型
Django:学习笔记(6)——模型 快速上手 模型到底是什么呢?我们可以想,如果一张数据表的各个字段可以自动映射到一个类的各个属性,则每条记录对应这个类的一个对象.那我们通过类方法来操作对象(即表记 ...
- JVM学习笔记——内存模型篇
JVM学习笔记--内存模型篇 在本系列内容中我们会对JVM做一个系统的学习,本片将会介绍JVM的内存模型部分 我们会分为以下几部分进行介绍: 内存模型 乐观锁与悲观锁 synchronized优化 内 ...
- ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理
ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理 计划时间:第二天下午 背景:数据量大,工程大 目的:自动化,批处理,定制业务流程,不写程序 教程:Pdf/343 数据:chap8/ex5 ...
- InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移
系列目录 InterSystems Ensemble学习笔记(一) Ensemble介绍及安装InterSystems Ensemble学习笔记(二) Ensemble创建镜像, 实现自动故障转移 一 ...
- 【opencv学习笔记八】创建TrackBar轨迹条
createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...
随机推荐
- [转]php 操作数组 (合并,拆分,追加,查找,删除等)
From : http://justcoding.iteye.com/blog/1181962 1. 合并数组 array_merge()函数将数组合并到一起,返回一个联合的数组.所得到的数组以第一个 ...
- Identifier:GUID (全局唯一标识符)
ylbtech-Miscellaneos-Identifier:GUID (全局唯一标识符) A,返回顶部 1, 全局唯一标识符(GUID,Globally Unique Identifier)是一种 ...
- go语言之进阶篇runtime包中 Gosched Goexit GOMAXPROCS的使用
一.runtime包 1.Gosched的使用 runtime.Gosched() 用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其他等待的任务运行,并在下次某个时候从该位置恢 ...
- Java信号量Semaphore
Semaphore Semaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得. Semaphore实现的功能就类似厕所有5个坑,假如有10个人要上厕所,那么同时只能有多少 ...
- Java提高篇(转)
http://www.cnblogs.com/mfrank/category/1118474.html Day1 抽象类 Day2 接口 Day3 抽象类与接口的比较 Day4 Java中的回调 Da ...
- 如何启动docker service
From powershell prompt following works for me with no issues restart-service *docker* [注意] 我试了一下,这个命 ...
- How to skip to next iteration in jQuery.each() util?
[问] I'm trying to iterate through an array of elements. jQuery's documentation says: jquery.Each() ...
- External component has thrown an exception
C#调用c++的DLL报错:External component has thrown an exception, 也没有log产生,怎么回事那? [解决方法] 这是因为c++的程序报错了,而且没有c ...
- Ext JS isField为空或不是对象问题的解决
在做Ext Js的DataGrid的时候经常会遇到这种问题,火狐谷歌没有问题,IE8及以下版本就无法通过,经调试会提示: “isField为空或不是对象问题的解决” 这通常是我们在js代码中多加了一个 ...
- ASP入门(十六)-ASP开发的规范
毋容置疑,在开发中遵守一套规范,将会有利于提高代码的可读性,较低后期维护成本. 文件存放目录规范 js 目录下存放着页面所使用的 JavaScript 脚本文件,因为我们可能用到第三方提供的免费的 J ...