首页 > 其他 > 详细

V_REP中Plugin控制机制实例

时间:2019-08-02 02:13:38      阅读:89      评论:0      收藏:0      [点我收藏+]

plugin机制是V-REP六种控制机制的一种,最大的优点就是无延迟(lag),计算速度快。可以和V-REP中的嵌入脚本(embeded scripts)实现无缝连接。这是remote API client所不能做到的。

六种控制机制的比较:

 技术分享图片技术分享图片

Plugin

  • V-REP automatically loads all plugins that it can find in its folder
  • V-REP recognizes plugin files with following mask: "v_repExt*.dll" on Windows, "libv_repExt*.dylib" on Mac OS and "libv_repExt*.so" on Linux. 

 

实例:

使用plugin控制小车的行为,小车使用proximity sensor,当接近障碍物时,调节轮的速度,进而调节前进方向;

脚本代码如下:

 1 function sysCall_threadmain()
 2     -- Check what OS we are using:
 3     platf=sim.getInt32Parameter(sim.intparam_platform)
 4     if (platf==0) then
 5         pluginFile=v_repExtBubbleRob.dll  --windows
 6     end
 7     if (platf==1) then
 8         pluginFile=libv_repExtBubbleRob.dylib  -- mac
 9     end
10     if (platf==2) then
11         pluginFile=libv_repExtBubbleRob.so   --linux
12     end
13 
14     -- Check if the required plugin is there:
15     moduleName=0
16     moduleVersion=0
17     index=0
18     bubbleRobModuleNotFound=true
19     while moduleName do
20         moduleName,moduleVersion=sim.getModuleName(index)
21         if (moduleName==BubbleRob) then
22             bubbleRobModuleNotFound=false
23         end
24         index=index+1
25     end
26 
27     if (bubbleRobModuleNotFound) then
28         -- Plugin was not found
29         sim.displayDialog(Error,"BubbleRob plugin was not found. (‘"..pluginFile.."‘)&&nSimulation will not run properly",sim.dlgstyle_ok,true,nil,{0.8,0,0,0,0,0},{0.5,0,0,1,1,1})
30     else
31         -- Plugin is there
32 
33         local jointHandles={sim.getObjectHandle(pluginControlledBubbleRobLeftMotor),sim.getObjectHandle(pluginControlledBubbleRobRightMotor)}
34         local sensorHandle=sim.getObjectHandle(pluginControlledBubbleRobSensingNose)
35         local robHandle=simBubble.create(jointHandles,sensorHandle,{0.5,0.25})
36         if robHandle>=0 then
37             simBubble.start(robHandle,9999) -- control happens here
38             simBubble.stop(robHandle)
39             simBubble.destroy(robHandle)
40         end
41     end
42 end

 

逐一解释说明各段代码含义:

 1     -- Check what OS we are using:
 2     platf=sim.getInt32Parameter(sim.intparam_platform)
 3     if (platf==0) then
 4         pluginFile=v_repExtBubbleRob.dll  --windows
 5     end
 6     if (platf==1) then
 7         pluginFile=libv_repExtBubbleRob.dylib  -- mac
 8     end
 9     if (platf==2) then
10         pluginFile=libv_repExtBubbleRob.so   --linux
11     end

这段代码很直接,根据操作系统不同获得相应的插件名;

 

 1     -- Check if the required plugin is there:
 2     moduleName=0
 3     moduleVersion=0
 4     index=0
 5     bubbleRobModuleNotFound=true
 6     while moduleName do
 7         moduleName,moduleVersion=sim.getModuleName(index)
 8         if (moduleName==BubbleRob) then
 9             bubbleRobModuleNotFound=false
10         end
11         index=index+1
12     end

索引V_REP安装目录下所有的插件,判断是否存在所需要的plugin;

 

V_REP中Plugin控制机制实例

原文:https://www.cnblogs.com/hlhfhmt/p/11285740.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!