V-rep学习笔记:机器人模型创建1—模型简化

摘要:
为了进行机器人仿真,需要首先获得机器人的几何模型。我们可以通过VREP中提供的基本几何图形直接构建一个简单的机器人[Menubar--˃添加--˃图元形状--˃…]。如下图所示,两轮差速机器人由一个球体和一个圆柱体组成。记住:在每个方面,越少越好。[ComplexCADdata]如上图所示,该模型包含许多孔和小细节,当导出为网格模型时,这些特征将生成许多不必要的三角形面片。如果选中“线框”,几何图形将始终显示为线框模型。

  要进行机器人仿真首先需要得到机器人的几何模型。我们可以直接通过VREP中提供的基本几何体来搭建一个简易的机器人[Menu bar --> Add --> Primitive shape --> ...],如下图所示的两轮差动机器人就是由球和圆柱体搭建而成。这种形状简单的几何体称为Primitive shapebest suited for dynamics collision response calculation, since it will perform much faster and more stable than non-pure shapes(e.g. random or convex meshes). Primitive shapes will be simple meshes, which might not contain enough details or geometric accuracy for our application. For that reason, pure shapes are often hidden in an invisible layer (e.g. layer 9).

V-rep学习笔记:机器人模型创建1—模型简化第1张

  使用基本几何体来搭建抽象的机器人虽然有计算量小等诸多优点,但是却无法模拟机器人真实形状。为了模型更真实我们可以导入外部三维模型文件。但如果我们导入的文件过大(三角面片太多),就会严重影响图形显示和运动学、动力学计算的实时性。下面的图片中导入的CAD模型就不是一个很好的例子,它包含多达47000个三角面片,而这仅仅只是一个机械手爪。如果场景中有多台机器人装有这种手爪,那么当机器人与其它机器人、设备或外界环境接触时物理引擎的计算量会非常大,仿真会变得很慢,因此我们需要简化模型。Remember: less is better, in almost every aspect.

V-rep学习笔记:机器人模型创建1—模型简化第2张

[Complex CAD data (in solid and wireframe)]

   可以从上面左图中看出,模型包含了很多孔和小细节,而这些特征在导出为网格模型时会生成很多不必要的三角面片。所以首先需要删除这些孔、螺纹和CAD模型内部的一些特征(比如轴承、外壳内部的加强筋板等结构)。其次,在输出网格文件时要限制输出的精度,避免产生过大的文件(export the original data with a limited precision: most CAD applications let you specify the level of details of exported meshes)。同时还要注意当场景中模型的大小差别很大时要分别输出,避免同时输出时大模型细节过多,和小模型的细节过少。

   VREP支持多种格式的导入文件:OBJ,STL,DXF,3DS,Collada,URDF。假设上面提到的几点我们都考虑进去了,在删除一系列不必要的细节后我们可能依然会得到如下图所示的网格文件,这个模型文件还是很大,并且还存在许多问题(模型作为一个整体被导入,没有可动部件;导入的姿态和位置不是我们想要的...)。

V-rep学习笔记:机器人模型创建1—模型简化第3张

[Imported CAD data]

  VREP为我们提供了几种方法来进一步简化模型:   

  • Automatic mesh division(自动分割网格):allows to generate a new shape for all elements that are not linked together via a common edge
  • Extract the convex hull(提取凸壳):allows to simplify the mesh by transforming it into a convex hull.
  • Decimate the mesh(缩减网格数量):allows to reduce the number of triangles contained in the mesh.
  • Remove the inside of the mesh(移除内部网格):allows to simplify the mesh by removing its inside.

  下面的图片分别显示了凸壳提取、缩减网格数、移除内部网格后的结果:

V-rep学习笔记:机器人模型创建1—模型简化第4张

  为了控制机构运动,我们接下来要将一个整体的机器人模型分割为几个可动的部分(Two elements are distinct if they don't share any common edge),有如下两种方法:

  • Automatic mesh division(自动分割网格): This does not always work, but is always worth a try. The function can be accessed with [Menu bar --> Edit --> Grouping/merging --> Divide selected shapes]
  • Manual mesh division(手动分割网格): via the the triangle edit mode, you can manually select the triangles than logically belong together, then click Extract shape. This will generate a new shape in the scene. Delete the selected triangles after that operation.

   下图中最左边的是导入VREP中的虎克铰STL文件,它是一个整体。选中它进行自动分割后将生成4个新的网格模型,如中间图片所示。这几个新生成的模型可以随意拖动改变位置,如最右边的图所示,这样我们就将一个整体模型拆分为可动的部分。

V-rep学习笔记:机器人模型创建1—模型简化第5张V-rep学习笔记:机器人模型创建1—模型简化第6张V-rep学习笔记:机器人模型创建1—模型简化第7张

  当然我们可以在SolidWorks等软件导出STL文件时就设置好将装配体的各零部件单独输出,然后在VREP中将其同时导入。如下图所示,机器人共有11个零部件模型文件,将其同时导入到场景中就不需要使用自动/手动分割网格的功能了。

V-rep学习笔记:机器人模型创建1—模型简化第8张

   至于手动分割网格以下面一个简单的连杆机构为例进行说明。有时自动分割生成的新几何体可能不是我们想要的,这时先选中要编辑的网格模型,然后打开shape edit模式,手动选择属于同一个部件的三角面片。如下图所示Triangle1~Triangle76都属于同一个连杆,则同时选中这些面(按住Shift键同时用鼠标左键进行框选可以提高效率),然后点击Extract shape生成新的几何体,之前选中的面可以删掉。

V-rep学习笔记:机器人模型创建1—模型简化第9张

  有时用提取的凸壳代替几何体会很好,但更多时候需要综合使用到上面提到的几种方法来获得满意的结果。兼顾物理引擎计算效率和机器人外观真实性简化网格后,为了区分不同的零部件或者为了达到良好的显示效果,我们需要改变几何体的颜色等外观属性。可以通过双击模型图标弹出形状属性对话框:

V-rep学习笔记:机器人模型创建1—模型简化第10张

  Adjust color选项可以更改几何体的外观颜色。勾选Show edges with angle时会显示轮廓曲线,后面的角度控制显示效果:角度越大,轮廓线越少;角度越小,轮廓线越多(A small angle makes a shape appear sharp, with many edges, a large angle makes a shape appear smooth and with less edges)。勾选Wireframe则几何体会始终以线框模型显示。

V-rep学习笔记:机器人模型创建1—模型简化第11张

  由于很多零部件作为一个整体导入,要给不同表面赋予不同的颜色需要先将模型拆分,调整颜色外观后再将其组合。下面以UR3的基座为例进行说明:

  进入shape edit模式,切换到正视图,按住Shift键,同时用鼠标左键框选下图中的一圈三角面片。A shift-selection will select all triangles under the selection area, also hidden triangles. If you wish to only select visible triangles via a shift-selection, hold down the ctrl-key in addition to the shift-key. 即按住Shift框选时可以选中隐藏的面,提高选取效率(注意这里切换到正视图可以避免误选其它三角面片;释放鼠标前要按住Shift键不要放,否则会选不上),如果只需要选取可见的面可以同时按Shift+Ctrl键。确认没有多选或少选后点击Extract cylinder就可以将其提取为基本的圆柱体(之后就可以单独调整这一部分的颜色),大量减少了网格数量。之后可以按Delete键将选中的三角面片删掉,效果如下面右图所示:

V-rep学习笔记:机器人模型创建1—模型简化第12张V-rep学习笔记:机器人模型创建1—模型简化第13张

   更改了部分面的颜色后我们要将其与其它部分组合成一个整体(虽然表面颜色不同但属于同一可动部件)。We can group the shapes that are part of the same link with [Menu bar --> Edit --> Grouping/merging -> Group selected shapes]. Simple shapes can also be merged ([Menu bar --> Edit --> Grouping/Merging --> Merge selected shapes] in which case the visual properties become same for all composing elements. 如下图所示,将蓝色的端盖,灰色的外壳和黑色的环状垫圈组合成为一个整体,后续控制过程中这个整体将作为连杆相对于底下的固定基座旋转。V-rep学习笔记:机器人模型创建1—模型简化第14张

参考:

Building a clean model tutorial

Triangle edit mode

免责声明:文章转载自《V-rep学习笔记:机器人模型创建1—模型简化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nginx作为静态web服务器——缓存原理HK2使用详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ros机器人之动作(二)

前面我们实现了动作的定义,接下来实现动作的功能 实现一个基本的动作服务器 准备好所需的动作定义后就可以开始编写代码了。动作和话题一样,都是使用回调机制,即回调函数会在收到消息时被唤醒和调用。 例:simple_action_server.py 1 #!/usr/bin/env python...

ROS机器人开发实践学习笔记3

摘要: 刚刚开始学习ROS,打算入机器人的坑了,参考教材是《ROS及其人开发实践》胡春旭编著 机械工业出版社 华章科技出品。本来以为可以按照书上的步骤一步步来,但是,too young to simple啊,程序员的苦逼日子开始了,特地记录如下。 今天居然发现,不是linux没有安装成功,只是没有办法找到boot/efi下的引导文件,充分利用Manjaro...

适合初学者的ROS机器人教程(2): Ubuntu下ROS使用Gazebo和Rviz对UR5机器人建模

作者:知乎@Ai酱 本文的前提是:默认你已安装ROS和Gazebo和Rviz,并且使用Ubuntu。Gazebo显示不出东西?检查下/home/用户名/.gazebo/models下面常见的模型有木有拷贝进去有数以百计的基本模型。 安装UR5的包 $ sudo apt-get install ros-kinetic-ur-gazebo ros-...

Java接口自动化框架增加钉钉机器人配置,自动发送测试结果

1.utils目录下新建DingDingUtil类 package utils; import com.alibaba.fastjson.JSONObject;import org.apache.http.client.methods.CloseableHttpResponse;import restclient.RestClient; import ja...

钉钉开发系列(十二)机器人

钉钉的每个群都可以建若干个机器人,有默认的比如github,也可以自定义。我们使用自定义,建立自己的机器人,然后得到一串的URL,只要向这个URL进行POST请求后,就能将消息通知到对应的群中。机器人的创建可以参照官方的文档。 发送通知的代码如下 private string WEB_HOOK = "https://oapi.dingtalk.com/...

国内外知名激光雷达公司盘点

近年来,激光雷达技术在飞速发展,从一开始的激光测距技术,逐步发展了激光测速、激光扫描成像、激光多普勒成像等技术,如今在无人驾驶、AGV、机器人等领域已相继出现激光雷达的身影。随着无人驾驶、机器人等领域的兴起,国内外陆续涌现出一批激光雷达公司, 鉴于激光雷达在各领域的重要地位,本文对16家知名激光雷达公司进行了各个维度的盘点。 据调查,目前大部分企业都以无人...