V-REP可以在几何组件中快速判断各种干扰与碰撞,以及计算多个组件间的最小距离。

  • 碰撞检测

  V-REP可以检测两个碰撞体实体(Collidable objects are objects that can be tested for collision against other collidable objects)之间的碰撞,类似于SolidWorks等三维设计软件中的干涉检查。碰撞检测只会检测碰撞状态,而不会直接对碰撞做出反应(The collision detection module will only detect collisions; it does however not directly react to them)。碰撞检测模块中可以注册碰撞对象,即collidable entity-pairs (collider entity and collidee entity). 在仿真过程中,注册的碰撞对象之间的碰撞状态可以由不同的颜色可视化显示,也可以通过Graph对象来进行记录。

  下面创建一个简单的模型来看看怎么使用碰撞检测:

  (1)新建一个场景,在场景中添加两个立方体,分别赋予不同的颜色。绿色立方体放置在地面,红色立方体位于其正上方1m高度处:

  (2)修改两个立方体的属性,分别勾选Collidable选项

  (3)在Calculation Modules的属性对话框中,打开Collision detection标签页,添加新碰撞对象。然后在弹出的对话框中选择要检测的碰撞体(Collider)和与之发生碰撞的被碰撞体(Collidee)。添加完成后双击可以修改碰撞对象名。

  注意这里有一个Adjust collision color选项,从这个弹出的对话框中可以选择碰撞发生时的颜色(如果勾选下面的Collider color change和Collidee color change选项,则检测到碰撞发生时,碰撞体和被碰撞体的颜色会发生改变。这样就可以直观的从仿真过程中观察到碰撞了),这里设置为白色。

  (4)除了通过改变颜色可视化碰撞之外,还可以通过Graph对象来记录碰撞。在场景中单击右键添加Graph,然后添加数据流,在弹出的选项框中选择Collision:colliding state

    在场景中添加一个Floating view,先选中Graph,然后在Floating view中空白处右键选择View-->Associate view with selected graph。这样就可以将碰撞事件数据流显示在我们创建的浮动视窗中。

  (5)下面开始仿真,可以看到碰撞发生时,碰撞体之间颜色变成我们之前设置的颜色。Graph也记录到碰撞事件的发生,即从0到1的一个上升沿

  如果我们将绿色的立方体的Collidable属性选项取消,再次进行仿真,则不会检测到碰撞发生。

  • 距离计算

  V-REP能检测两个可测量实体(Measurable objects are objects that can be used for minimum distance calculation against other measurable objects)之间的最小距离。The calculation is an exact minimum distance calculation. The distance calculation module will only measure distances; it does however not directly react to them.

  距离检测与碰撞检测的使用方法大致相同,下面也来建立一个简单的模型:

  (1)按照之前写过的转动关节创建方法创建两个匀速转动的连杆,如下图所示。其中绿色的连杆link_1以2°/s的角速度绕其左端点逆时针转动,蓝色连杆link_2以1°/s的角速度绕其中心顺时针转动。

  (2)勾选两连杆的距离检测属性

  (3)打开Calculation Modules中的Distance calculation选项页,添加距离检测对象。在弹出的对话框中选择link_1和link_2

  这里Display distance segment选项用于仿真过程中显示最短距离线段,Segment width为该线段的宽度,Adjust segment color选项可以调整线段的颜色。Use threshold选项用于加快仿真减小计算量——在两物体距离远大于设定的阈值threshold时不会进行最小距离计算。

  (4)开始仿真,如果开启距离检测则在仿真过程中会不停刷新最小距离

  如果设置Use threshold的阈值为0.5m,则两物体距离大于0.5m时不进行计算。如下图所示,当两根连杆转到一个位置后最小距离大于阈值,并且越来越大,这时会停止计算:

  (5)我们同样也可以使用Graph来记录最小距离的变化。添加一个Graph,然后建立新的数据流,选择Distance:segment length

  (6)将其显示在Floating view中:

  更复杂的例子可以参考V-rep安装路径下scenes文件夹中的minimuDistanceCalculationDemo.ttt模型:

参考:

3D碰撞检测

Picking with a physics library

Convex Hull

V-rep学习笔记:碰撞检测与距离计算的更多相关文章

  1. 【Python学习笔记】使用Python计算皮尔逊相关系数

    源代码不记得是哪里获取的了,侵删.此处博客仅作为自己笔记学习. def multipl(a,b): sumofab=0.0 for i in range(len(a)): temp=a[i]*b[i] ...

  2. Vue.js 学习笔记 第3章 计算属性

    本篇目录: 3.1 什么是计算属性 3.2 计算属性用法 3.3 计算属性缓存 模板内容的表达式常用语简单的运算,当其过长或逻辑复杂时,会难以维护,本章的计算属性就是用于解决该问题的. 3.1 什么是 ...

  3. HCNP学习笔记之子网掩码的计算和划分详细

    0x00 子网掩码的计算 TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的.网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保证主机地址的唯一性,而是会 ...

  4. swift学习笔记之--类的计算属性

    1,Swift中类可以使用计算属性,即使用get和set来间接获取/改变其他属性的值,代码如下 class Calcuator{ ; ; var sum:Int{ get{ return a + b ...

  5. java 多线程学习笔记(一) -- 计算密集型任务

    最近在看<Java虚拟机并发编程>,在此记录一些重要的东东. 线程数的确定:1. 获取系统可用的处理器核心数:int numOfCores = Runtime.getRuntime().a ...

  6. MySQL学习笔记(三)——计算字段及常用函数

    拼接字段-Concat()函数        将值连接在一起构成单个值.注意:大多数DBMS使用+或者||来实现拼接,mysql则使用Concat()函数来实现. 去空格函数-Trim函数       ...

  7. python学习笔记(2):科学计算及数据可视化入门

    一.NumPy 1.NumPy:Numberical Python 2.高性能科学计算和数据分析的基础包 3.ndarray,多维数组(矩阵),具有矢量运算的能力,快速.节省空间 (1)ndarray ...

  8. 莫烦python教程学习笔记——利用交叉验证计算模型得分、选择模型参数

    # View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...

  9. ArcGIS JS 学习笔记1 用ArcGIS JS 实现仿百度地图的距离量测和面积量测

    一.开篇 在博客注册了三年,今天才决定写第一篇博客,警告自己不要懒!!! 二.关于ArcGIS JS 版本选择 在写这篇博客时ArcGIS JS 4.0正式版已经发布.它和3.x版本的不同是,Map不 ...

随机推荐

  1. HTML5 本地文件操作之FileSystemAPI整理(二)

    一.文件目录操作 1.DirectoryEntry对象 属性: 1.isFile: 操作对象的是否为文件,DirectoryEntry对象固定其值为false 2.isDirectory: 操作对象是 ...

  2. git如何删除远端不存在的本地分支?

    问题:远端分支删除后,如何删除之前拉取的本地分支? 答案: git fetch -p git remote show origin 可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息 ...

  3. RV32A指令集

    RV32A指令包括两类:AMO(atomic memory operation)指令,Load-Reserved/Store-Conditional指令 Category Fmt RV32I base ...

  4. STM32中基于DMA的ADC采样实例之MQ-2烟雾传感器

    最近学习了一下STM32中的ADC采样,由于手头正好有一个MQ-2的烟雾传感器,所以正好可以测试一把.体验ADC采样的过程.下面介绍一下这个MQ-2烟雾传感器. 1.MQ-2烟雾传感器简介 MQ-2气 ...

  5. cesium and three.js【转】

    https://blog.csdn.net/zhishiqu/article/details/79077883 这是威尔逊Muktar关于整合Three.js与铯的客人帖子.Three.js是一个轻量 ...

  6. 遛老虎网 http://6laohu.com/

    遛老虎网 http://6laohu.com/

  7. thinkphp生成的验证码不显示问题解决

    在调用验证码之前加上 ob_clean(); 不显示验证码的代码: public function verify(){ $verify = new \Think\Verify(); $verify-& ...

  8. CSS只是进化的一部分

    Bert Bos是一位计算机科学家,他也是CSS的创始人之一.在CSS的发展过程中,Bos是最早与Håkon Wium Lie(CSS之父)合作的人之一.在1996年,他加入了World Wide W ...

  9. SQL操作查漏补缺

    SQL教程地址:http://www.w3school.com.cn/sql/index.asp TOP 子句 TOP 子句用于规定要返回的记录的数目. 对于拥有数千条记录的大型表来说,TOP 子句是 ...

  10. JAVA-SpringMVC基于注解模式第一个应用

    项目文件结构 1. web.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <web-app x ...