一、利用计算模块
V-REP提供七个封装好的计算模块
我们以距离计算为例来说明如何利用相应的模块
首先创建两个目标实体
因为我们要计算距离,所以在目标的属性中勾选可测量
为了展示距离的动态变化,我们让关节动起来,角速度为5deg/s
在计算模块中选择要计算距离的两个目标
为了使结果可视化,添加一个graph,并将数据输入选为距离
点击开始仿真,就可以看见距离(这里计算的是最小距离)随时间的变化关系
二、工具箱
tools中有许多常见的辅助工具
1)center of mass visualization tool(质心可视化)
可以显示选择目标的质心,直接将其拖到目标下即可
2)high-resolution screenshot tool(高分辨率截图)
将该工具拖到某一相机下,再选择好分辨率即可保存截图,
截图保存在V-REP3\V-REP_PRO_EDU目录下
3)normal vector tool(法向量测量)
将该工具拖入场景后点击任意目标的某个平面,会自动计算该平面的法向量
4)denavit-hartenberg param.extractor(关节D-H参数计算)
D-H参数在机器人正运动学解算中被广泛应用,可以方便计算出关节末端相对于基坐标系的坐标。将该工具拖入场景后点击关节便可以自动计算D-H参数。
其他调节光线颜色等工具不经常用到,就不列举了。
三、认识脚本
V-REP中的每一个场景都包括一个主脚本(main script),一般来说不需要对主脚本进行修改。主脚本一般包括:
sysCall_init():初始化部分
sysCall_actuation():执行部分
sysCall_sensing():传感数据部分
sysCall_cleanup():结束清理部分
sysCall_suspend():终止部分
sysCall_resume():重启部分
对我们来说,一般更多都是在子脚本(child scripts)上进行仿真代码的实现,子脚本分为两种,非线程模式(non-threaded)和线程(threaded)模式,顾名思义,线程模式会在后台新开一个线程运行,执行结束并不返回,而非线程模式更像函数调用,执行完即返回主函数。
子脚本一般包括上述前四个部分,比如我们为立方体添加一个脚本并在执行部分加上
function sysCall_actuation()
simAddStatusbarMessage('0')
end
这句话的有点像c++中的cout<<'0'<<endl,点击开始仿真,则可以看到如下结果
如果一个目录下有多个子脚本,默认是按顺序执行,比如我又创建了一个脚本输出1,那么结果就是
一个很自然的想法就是应该可以调整子脚本执行的顺序才是合理的,在scripts的属性中可以修改各个脚本的优先级