1.两幅图(暂时看不懂不必在意)

支持的语言和特性吗,lua,c++,matlab常用

消息传递机制
2.Embedded scripts(嵌入式脚本)主要用的脚本
V-REP是一个高度可定制的模拟器:几乎每一步的模拟都是用户定义的。。脚本语言是用Lua(另外介绍)。
嵌入式脚本是嵌入在场景(或模型)中的脚本,是场景的一部分,将被保存并与场景(或模型)一起加载。
Simulation scripts:仿真脚本仅在仿真过程中执行,用于定制仿真或仿真模型
main script:每个场景中都有一个主脚本,用于调用其他脚本。更改主脚本最好在子脚本中完成。可以理解成主函数。

child scripts:处理具体的仿真步骤,操控场景中物体。

The contact callback script: 这个脚本一般不用,它是用来处理动力学环境下两物体的碰撞反应。
Joint control callback scripts:关节动力学控制用

复制和粘贴操作objects,子脚本和联合控制回调脚本也将被复制。
主脚本:非必要不修改
三个部分,the initialization part:仿真开始时执行,用于准备仿真。
the regular part在每个仿真中多次调用,用于处理子脚本,the restoration part仿真结束时恢复初始状态(包括传感器,物体位置)

Child scripts

在vrep里面子脚本不限数量,必须绑定到物体上。把main脚本理解成main函数,子脚本理解成供main调用的普通函数。
Very easy synchronization with the simulation loop:可以非常简单的和仿真循环同步。
2.1Non-threaded child scripts 单线程脚本/非线程脚本
单线程在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行。

单线程脚本每次调用必须return control,否则仿真会停顿。
单线程子脚本的执行顺序从根到叶(如下图从link0—joint1—link1……):

初始化(Initialization):初始化这个语句只执行一次,也是在仿真开始的时候执行,主要完成变量初始值的初始化,获取你需要的实体的handle。
执行(Actuation):“执行”相当于在提交到动力学引擎计算之前进行的操作,比如你这里设置了关节的转速,然后动力学引擎就驱动这个关节按照这个转速运动,直到下次再执行到此部分。
感知(Sensing):控制里最重要的一块内容,也是我认为控制系统设计的核心。一切控制算法都是基于反馈来做的,大家做机器人控制一定要注意有些值很难测量或者误差特别大(电机电流,受摩擦影响大),有些值可以精准测量并且误差小(关节角度)。这一部分的执行顺序是位于Actuation之后
清理(cleanup):这个部分只会在仿真结束时被执行一次,可以理解成c++里面的析构。
自动门的仿真模型:前部和后部的接近传感器允许检测接近的人。当人够近的时候,门会自动打开

if (sim_call_type==sim_childscriptcall_initialization) thensensorHandleFront=simGetObjectHandle("DoorSensorFront")sensorHandleBack=simGetObjectHandle("DoorSensorBack")motorHandle=simGetObjectHandle("DoorMotor")
end//初始化if (sim_call_type==sim_childscriptcall_actuation) thenresF=simReadProximitySensor(sensorHandleFront) resB=simReadProximitySensor(sensorHandleBack)if ((resF>0)or(resB>0)) thensimSetJointTargetVelocity(motorHandle,-0.2)elsesimSetJointTargetVelocity(motorHandle,0.2)end
end//执行if (sim_call_type==sim_childscriptcall_sensing) thenend//感知if (sim_call_type==sim_childscriptcall_cleanup) then-- Put some restoration code here
end//恢复

2.2 Threaded child scripts 多线程脚本
线程级子脚本的启动是通过默认的主脚本代码,通过SimRunCuthStudioDaScript脚本函数以级联方式处理的。当线程子脚本的执行仍在进行时,不可以再次启动。当线程子脚本结束时,只有在脚本属性中的执行一次项未选中时才可以重新启动。
同样是自动门:

threadFunction=function()while simGetSimulationState()~=sim_simulation_advancing_abouttostop doresF=simReadProximitySensor(sensorHandleFront)resB=simReadProximitySensor(sensorHandleBack)if ((resF>0)or(resB>0)) thensimSetJointTargetVelocity(motorHandle,-0.2)elsesimSetJointTargetVelocity(motorHandle,0.2)end-- 这个循环浪费了很多时间,每次仿真时间改变都要重新读取值end
end-- Put some initialization code here:
sensorHandleFront=simGetObjectHandle("DoorSensorFront")
sensorHandleBack=simGetObjectHandle("DoorSensorBack")
motorHandle=simGetObjectHandle("DoorMotor")-- Here we execute the regular thread code:
res,err=pcall(threadFunction)
if not res thensimAddStatusbarMessage('Lua runtime error: '..err)
end//下有解释-- Put some clean-up code here:

和单线程的区别是正则部分:regular part部分可以在一个循环中执行。
res,err=pcall(threadFunction) 调用在头部编写的函数,回路中的代码负责处理仿真的特定部分(例如处理自动滑动门)。在上述具体示例中,它浪费计算时间,并且与主仿真回路异步运行。
注意:默认情况下,一个线程在自动切换到另一个线程之前,线程子脚本将执行约1-2毫秒。 simSetThreadSwitchTiming函数用于修改这个时间。
simSwitchThread():

threadFunction=function()while simGetSimulationState()~=sim_simulation_advancing_abouttostop doresF=simReadProximitySensor(sensorHandleFront)resB=simReadProximitySensor(sensorHandleBack)if ((resF>0)or(resB>0)) thensimSetJointTargetVelocity(motorHandle,-0.2)elsesimSetJointTargetVelocity(motorHandle,0.2)endsimSwitchThread() -- 切换到另一个线程-- 这个方式可以不浪费时间还保持同步。end
end

某些操作不可以被中断(想象在一个循环中移动多个对象)。在这种情况下,用simSetThreadAutomaticSwitch 函数禁止切换线程。
3.脚本仿真参数:

如上图:用于快速调节参数,机器人最大速度,机器人加速度。
如果用户修改参数列表中的值,脚本根据修改做出反应。脚本可以使用 simGetScriptSimulationParameter函数检索参数的值,或者 simSetScriptSimulationParameter函数来修改参数的值。脚本模拟参数也可以用于特定的脚本间消息传递目的。
Parameter is private:参数私有,也就是在仿真期间不能被显示和修改;
Parameter is persistent:参数持久,结束仿真不会恢复成初始值,比如让机械臂的关节保持仿真结束时的位姿。
4.Contact callback script 一般不用
当启用时,物理引擎检测到两个可响应的形状之间的碰撞,然后将以适当的参数调用回调脚本,允许用户自定义碰撞处理。
Joint control callback scripts
控制电机,一般会被频繁调用。

Customization scripts:
添加在场景中的物体后面,尽量不要用这个,最好是用child scripts。
General callback script
具体看代码,lua另写一文

if sim_callback_id==sim_callbackid_dynstep then-- This is called at the beginning or end of-- an individual dynamics simulation step (by-- default, there are 10 times more dynamics-- simulation steps as simulation steps)if sim_callback_tag==0 then-- at the beginning of a dynamics stependif sim_callback_tag==1 then-- at the end of a dynamics stependreturn 0
endif sim_callback_id==sim_callbackid_userdefined+42 then-- This is a user defined callback. User defined-- callbacks start at ID sim_callbackid_userdefined upwards.return 1
end

脚本对话框的注意点:
Execute just once:此项仅适用于带线程的子脚本。当这个条目不被选中时,一个结束的线程将被主脚本重启。
Execution order:设置执行优先级,normal,last,first。
5.脚本编辑
脚本编辑器有以下特点:
auto-completion自动补充
call tips通话提示
syntax highlighting语法高亮显示
Highlighting of all occurrences of selected word强调所选单词的所有出现
source folding/unfolding源折叠/展开
simple word search 通过ctrl +f键进行简单的单词搜索
no need for explicit saving 不需要显式储蓄,写完关闭,默认保存

require “myExternalLuaFile”//相当于#include <**>;
另外,不同脚本关系如下

V-REP教程(二)Script相关推荐

  1. Docker教程(二) Docker环境安装

    Docker教程(二) Docker环境安装 本文链接:https://blog.csdn.net/yuan_xw/article/details/77248243 Docker教程(二) Docke ...

  2. ps文字换行_零基础一周内熟悉使用PS基础工具【Photoshop教程二】

    零基础一周内熟悉使用PS基础工具[Photoshop教程一]这篇的后台数据显示有很多知友都有收藏了.由此可见现在的视频教程,网络上太多太多但,但好多知识都太"碎片化"今天学习这个技 ...

  3. (翻译)开始iOS 7中自动布局教程(二)

     (翻译)开始iOS 7中自动布局教程(二) 这篇教程的前半部分被翻译出来很久了,我也是通过这个教程学会的IOS自动布局.但是后半部分(即本篇)一直未有翻译,正好最近跳坑翻译,就寻来这篇教程,进行 ...

  4. 小柏实战学习Liunx(图文教程二十一)

    前言:一定要知道每一个命令是啥意思,并且要学会看报错信息,学会使用搜索引擎. 前情回顾:小柏实战学习Liunx(图文教程二十)_Shaun-sheng的博客-CSDN博客 本节课主题:Linux安装A ...

  5. Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库

    [homebrew 系列文章] HomeBrew常规使用教程 Homebrew进阶使用教程(一) Homebrew进阶使用教程(二)-用一个命令行天气客户端构建自己的仓库 Homebrew进阶使用教程 ...

  6. 令人愉快的 Nuxt3 教程 (二): 快速轻松地搭建博客

    令人愉快的 Nuxt3 教程 (二): 快速轻松地搭建博客 继 令人愉快的 Nuxt3 教程 (一): 应用的创建与配置 后,我们已经成功的创建了一个 Nuxt3 应用,同时已经添加了大量的开发配置. ...

  7. 动画骨骼【Visual C++】游戏开发五十二 浅墨DirectX教程二十 骨骼动画来袭(一)...

    间时紧张,先记一笔,后续优化与完善. 本系列文章由zhmxy555(毛星云)编写,载转请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/detail ...

  8. 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/16384009 作者:毛星 ...

  9. 【Visual C++】游戏开发五十二 浅墨DirectX教程二十 骨骼动画来袭(一)

    这是答应大家的讲解骨骼动画的文章的N部曲的第二篇.这篇文章里,我们对现行的三种模型动画技术进行了概述,然后对X文件构成进行了详细的剖析,最后放出了骨骼动画的第一个示例程序,载入了<诛仙>中 ...

  10. 【Visual C++】游戏开发五十二 浅墨DirectX教程二十 骨骼动画来袭(一)

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8832812 作者:毛星云(浅墨 ...

最新文章

  1. 游戏设计艺术(第3版) The Art of Game Design
  2. Spark源码阅读03-Spark存储原理之存储分析
  3. java安全技术-Base64编码与解码
  4. WWDC 2018:iOS 12 通知的新特性
  5. springsecurity不拦截某个接口_SpringSecurity 默认表单登录页展示流程源码
  6. 【Transformer】AdaViT: Adaptive Tokens for Efficient Vision Transformer
  7. 【flink】Flink 1.12.2 源码浅析 : yarn-per-job模式解析 TaskMasger 启动
  8. 缺钱的特斯拉,是否在走向“乐视化”?
  9. Spring源码解析之BeanFactory
  10. his开发前途如何_八线城市开发人员前途迷思2019年开源年会后记
  11. dorado 刷新_dorado BDF常见问题
  12. Mysql千万级数据查询优化技巧
  13. 设置电脑的保护色(绿豆沙色)
  14. pr电影混剪思路及常用快捷键
  15. repost 从APP工厂到游戏工厂?字节跳动进攻腾讯腹地
  16. 前端进阶知识汇总(持续更新中)
  17. 让程序跳转到指定地址执行(绝对地址赋值/强转)
  18. (原)android系统下绑定Server的时候报MainActivity has leaked ServiceConnection的错误
  19. python利用列表计算斐波那契数列前30项_使用python计算斐波那契数列
  20. 全网分析HTTP协议最全的一篇文章,程序员赶紧收藏

热门文章

  1. 全国中小学电脑制作比赛(大赛系列第11期)
  2. office二级证书和mysql_省级计算机二级证书和全国计算机二级证书的区别
  3. 小学一年级语文考试试题【21】
  4. java 设置list中数组的值
  5. 看好物联网市场,投资者应该买些什么?
  6. 企业部门网络规划设计(课程报告+拓扑图源文件)
  7. 微信小程序 腾讯云 mysql 初始_微信小程序初始化怎么处理?小程序服务器域名配置...
  8. 阵列卡直通模式和raid模式_DNF:希洛克四模式简单介绍,平民优先小队模式
  9. 中高级口译与日语口译考试
  10. 如何在Photoshop中创建光剑