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. Apache Ant 简介和配置

    Apache Ant 简介     Apache Ant是目前事实上的Java应用的标准build脚本工具.使它大受欢迎的一个主要愿意是它的和灵活,允许程序员创建自己的Task来对Ant进行扩展.   ...

  2. .AVLFile Extension

    .AVLFile Extension File Type 1ArcView Legend File   Developer ESRI Popularity           4.1 (7 Votes ...

  3. 使用jupyter搭建golang的交互式界面:类似于ipython;jupyter还可以使用spark或者结合机器学习

    Jupyter Notebook The Jupyter notebook is a web-based notebook environment for interactive computing. ...

  4. C#7.0新增功能点

    原文地址:  https://www.cnblogs.com/runningsmallguo/p/8972678.html 第二部分:C#7.0新增的功能 (1)数字字面量的提升: C#7中的数字文字 ...

  5. SQL Script for select data from ebs and make a csv file to FTP

    DECLARE CURSOR cur_lcy_test IS SELECT rcta.customer_trx_id, rcta.trx_number, rcta.trx_date FROM ra_c ...

  6. ASP.NET MVC:UrlHelper.cs

    ylbtech-funcation-Utility: ASP.NET MVC:UrlHelper.cs 充当表示 ASP.NET Razor 页的类的基类. 1.UrlHelper 类返回顶部 1-1 ...

  7. SpringMVC request生命周期

    When the request leaves the browser, it carries information about what the user is asking for. At ve ...

  8. css3 animation 学习

    css3中可以实现动画效果,主要是通过css3中新增加的属性(transform , transition,animation )来完成. 他们的详细解释可以参考 W3CSCHOOL 下面是效果图: ...

  9. Python3 OpenCV应用

    1.openCV介绍 openCV:Open Source Computer Vision Library.OpenCV于1999年由Intel建立,如今由Willow Garage提供支持.Open ...

  10. LAMP架构之PHP-FPM 服务器

    PHP简介 安装PHP 解决依赖关系 # 请配置好yum源(系统安装源及epel源)后执行如下命令: yum -y groupinstall "Desktop Platform Develo ...