2.1 BubbleRob tutorial

本章描述Vrep官方第一个教程,利用规则几何体构建简易机器人并利用脚本文件控制机器人运动。以下为具体步骤。

1、添加一个简单的球(直径0.2)【Menu bar -->Add-->Primitive shape-->Sphere】,且默认情况下,它是动态可响应的(dynamic and respondable shape enabled)【shape dynamicproperties】,这就意味着BubbleRob的本体会掉下来且在与别的具有碰撞响应的物体碰撞时会发生碰撞效应。(copy-paste);

2、要让BubbleRob的本体能够供其它模块进行计算(如:最小距离计算模块),在【object common properties】中勾上Collidable、Measurable、Rendeable、Detectable。

3、打开【position dialog】在【translation】中将球体向上升0.02(沿世界坐标系z轴);

4、为了让机器人知道它离障碍物有多远,添加距离传感器【Menu baràAddàProximity sensor-->cone type】。在【orientation dialog】对话框中的【orientation】栏,沿y轴和z轴旋转90度,点击Rotation Selection;在位置对话框中的【position】栏,x方向设置0.1,z方向设置0.12,修改距离传感器的参数【show detection parameters】,调整offset为0.005,角度为30,范围为0.15;然后,【showdetection parameters】中将Don’t  allow detection ifdistance smaller than。最后将传感器包含在机器人中,【Menu bar-->Edit-->Make last selected object parent】

5、【Menu bar-->File-->New scene】添加一个圆柱(0.08,0.08,0.02),并且使能collidable,Measurable,Renderable和Detectable,位置设为(0.05,0.1,0.04),绝对角度设为(-90,0,0);然后copy-paste并设置y轴为-0.1。

6、添加关节,【Menu bar-->Add-->Joint-->Revolute】,保持选中的关节,然后CTRL同时选中左轮,在【position dialog】中position栏中选Apply to selection,在【orientation dialog】中orientaton栏做同样的操作,在【joint properities—>show dynamic parameters】使能电机【enablethe motor】、【Lock motor when target velocity is zero】,然后将左右轮加到各自的电机上,并把电机贴到机器人上。

7、定义对象集合【Menu bar-->Tools-->Collections】,在对话框中选中【Add new collection】,选中bubbleRob,再点击Add。跟踪最小距离【Menu bar-->Tools-->Calculation module properties】,然后,点击【Add newdistance object】。

8、添加(graph object)显示最小距离,【Menubar-->Add-->Graph】将图贴到bubbleRob,设置该图的绝对坐标为(0,0,0.005),在图的属性中取消Display XYZ-panes,然后,点击Add new data stream to record,并选择Object:absolutex-position(Data stream type),bubbleRob_graph(Object/item to record),同样建立y轴和z轴的图。Add new data stream to record,选择Distance:segment length(Data streamtype),BubbleRob_distance (Object/item to record)

接下来添加3D曲线。

9、操作顺序Edit 3Dcurves-->Add new curve,然后在对话框中依次选择bubbleRob_x_pos作为x轴的值,bubbleRob_y_pos作为y轴的值,bubbleRob_z_pos作为z轴的值。最后选择Relative to world和 curve width 设为4。

10、添加障碍物,添加圆柱体(0.1,0.1,0.2),且为了使障碍物保持静态属性,因此,取消掉其动态特性,在shape dynamics properties中不要勾选Body is dynamic,另外,要保证这些障碍物具有刚性,因此需要选择collidable,Measurable,Rendeable和Detectable。然后选中平移图标,复制à粘贴,选中粘贴的圆柱体依次放到小车的周围。

11、将小车做一个模型定义,选中模型基(如bubbleRob),然后在object common properties 中勾选Object is modelbase和Object/model can transfer or accept DNA,接着在两个轮子和滑块上使能Select base of model instead。

12、添加视觉传感器,【Menubar-->Add-->Vision sensor-->Perspective type】,将视觉传感器和距离传感器安在一起且方向一致,在视觉传感器的属性栏中配置Far clipping plane 为1,Resolution x 和y 设为256和256,在show filter dialog 中选择Edget detection on work image,然后点击Add filter,且,阈值设置为0.2。在主视图上点击右键AddàFloating view,然后选中视觉传感器,并在该Floating view上右键,View-->Associate simulation with selected vision sensor。

13、脚本控制文件解析

选中基对象(BubbleRob)--->右键选择Add-->Associate child script-->Non threaded

脚本文件语言为lua语言,整个脚本文件框架:(1)初始化、(2)驱动部分、(3)传感器处理部分、(4)对象销毁即复位部分。无进程子脚本类似一个函数,主函数每循环一次,该函数被调用两次(驱动部分和传感器部分),初始化部分只会调用一次。以下针对以上脚本文件做各个模块解释:

1)初始化:利用simGetObjectHandle函数获取各个仿真部件的句柄,该函数的参数为Scene hierarchy中各个部件的名字;并设置每个电机的最大最小速度,以及设置小车后退时间,并利用xml创建了一个滑条,simExtCustomUI_create(string  xml),simExtCustomUI_setSliderValue(int   handle,   int   id ,    int  value,   bool   suppressEvents=true)

2) 驱动部分:此处用到if(result>0) then backUntilTime=simGetSimulationTime()+4   end,当传感器检测到障碍物时result>0,此时设置一个延时4s,即小车向后倒退4s,当其未检测到障碍物时,仿真时间要大于backSimulationTime(),因此,小车前进。

4)销毁ui

说明:Vrep安装文件目录下有相应的教程源文件。

Vrep基础部分(二)相关推荐

  1. 【C++自我精讲】基础系列二 const

    [C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...

  2. java负数右移_收入囊中篇---Java程序基础(二)

    前言: 本篇是接着上一篇更新的,如果没有阅读上一篇的话,可以查阅或回顾一下. 1.收入囊中篇---Java基础必备知识(一) 2.收入囊中篇---Java程序基础(二) Java程序基础目录 1.Ja ...

  3. mysql 基础篇(二) 账号、权限管理

    mysql 基础篇(二) 账号.权限管理.备份与还原 建立账号密码: Grant all on test.* to "cj"@"localhost" ident ...

  4. JVM 内部原理(七)— Java 字节码基础之二

    JVM 内部原理(七)- Java 字节码基础之二 介绍 版本:Java SE 7 为什么需要了解 Java 字节码? 无论你是一名 Java 开发者.架构师.CxO 还是智能手机的普通用户,Java ...

  5. CV:计算机视觉技术之图像基础知识(二)—图像内核的可视化解释

    CV:计算机视觉技术之图像基础知识(二)-图像内核的可视化解释 目录 图像内核的可视化解释 测试九种卷积核 官方Demo DIY图片测试 DIY实时视频测试 相关文章 CV:计算机视觉技术之图像基础知 ...

  6. CV:计算机视觉技术之图像基础知识(二)—以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础)

    CV:计算机视觉技术之图像基础知识(二)-以python的skimage和numpy库来了解计算机视觉图像基础(图像存储原理-模糊核-锐化核-边缘检测核,进阶卷积神经网络(CNN)的必备基础) 目录 ...

  7. MySQL基础总结(二)

    MySQL基础总结(二) 文章目录 MySQL基础总结(二) 四.索引 7.MyISAM主键索引与辅助索引的结构 8.InnoDB主键索引与辅助索引的结构 **`主键索引`** **`辅助(非主键)索 ...

  8. 网络基础(二)及HTTP协议

    网络基础(二)及HTTP协议 文章目录 网络基础(二)及HTTP协议 一.HTTP协议 二.端口 三.udp协议 四.tcp协议 一.HTTP协议 1 . 什么是url? 平时我们俗称的 " ...

  9. 计算机应用基础第二版在线作业c,计算机应用基础作业二(答案)

    计算机应用基础作业二 一.单选题(40题,每题1分,共40分) 1.第一台电子数字计算机的运算速度为每秒______. A:5,000,000次 B:500,000次 C:50,000次 D:5000 ...

  10. (五)JS基础知识二(通过图理解原型和原型链)【三座大山之一,必考!!!】

    JS基础知识二(原型和原型链) 提问 class 继承 类型判断(instanceof) 原型 原型关系 基于原型的执行规则 原型链 说明 提问 如何准确判断一个变量是不是数组 class的原型本质 ...

最新文章

  1. php语句中两个if语句,如何在PHP中组合两个IF语句
  2. c++ opencv 通过网络连接工业相机_OpenCV项目实战之零件缺陷检测(上)
  3. 希捷撤离 硬盘的那些风花雪月记忆
  4. 009_Spring Data JPA一对一关系
  5. ubuntu服务器mysql管理 第一弹
  6. Nginx 搭建图片服务器
  7. vb与matlab数据交互时间延时多长,VB中实现延时(等待)的几种方法
  8. SpringBoot 集成 clickhouse + mybatis-plus 配置及使用问题说明(含建表语句、demo源码、测试说明)
  9. scrapy如何指定生成python3的项目_新手学习scrapy的坑(都是泪)
  10. android ios logo原型,iOS关于logo和LaunchImage处理
  11. Mosquito的优化——订阅树优化(八)
  12. 搜python题_python知识点汇总(可以搜Python题答案的APP)
  13. 负载均衡SLB中开启会话保持并选择重写Cookie时的配置方法
  14. java课程设计学生信息管理_JAVA课程设计---学生基本信息管理系统
  15. 结构体02:结构体数组
  16. 前端开发-跨浏览器测试工具
  17. 华盛顿大学计算机专业gpa,华盛顿大学计算机专业基本信息全盘点 学习来这里就对了...
  18. 周末加班,中午吃饭时看到了马总的一条新闻
  19. 【JAVA】RequestResponse
  20. 30位中外大师的摄影箴言

热门文章

  1. iis 域名无法访问
  2. iOS开发 调用系统的震动和提示音
  3. #PLC_一次看懂数位低通滤波器设计(含代码实现)
  4. 自己写的一个GPS卫星地图
  5. php命令行生成文件,php命令行生成与读取配置文件
  6. 【转发分享】基于单片机PID控制算法开关电源设计实现-基于51单片机八音电子琴仿真设计毕业-基于51单片机的智能抽奖系统控制设计-基于51单片机的停车场车位管理系统设计
  7. caj怎么转word文档
  8. 【学习笔记】Nake Statistics
  9. PcShareVIP弄来的免杀思路
  10. ASP.NET程序设计_新闻发布系统