OS: Win10 x64
V-REP: V-REP PRO EDU 3.5.0
MATLAB: 2016b
下面我们来聊一聊V-REP中MATLAB远程API的应用。如果你只对V-REP有基本了解,对V-REP的远程API不熟悉,强烈建议你先阅读此文。V-REP是机器人仿真界的“瑞士军刀”,其功能之丰富可以满足绝大多数仿真需求。这里仅以UR5的仿真为例进行介绍。

介绍之前,我想多说一句,无论什么时候,官方手册都是最好的参考资料,实践才是最好的老师。本文针对想要快速入门的初学者,以尽量言简意赅的方式引领读者入门。读完后你可以自己搭建一个可用的仿真平台,并对仿真的过程有初步的了解。部分介绍中存在不严谨的措辞还请谅解。
准备MATLAB环境
对应于Windows系统,你只需要准备三个文件,而且都可以在V-REP的安装目录下找到:
- remoteApiProto.m
- remApi.m
- remoteApi.dll
你只需要将其复制到你的Matlab工作目录下即可。至此Matlab环境准备完成,很简单对吧?准备完成后,你只需要调用:
vrep=remApi('remoteApi')
来建立一个vrep对象并且加载库文件。调用
vrep.simxStart
即可使能client端(Matlab)的应用。具体使用方法参考后续内容。
官方手册列出了所有支持的Matlab远程API。
V-REP的两种服务器服务模式
server端(V-REP)的操作稍微复杂。远程API服务是基于V-REP插件的。因此,使能服务器端的前提是相应的插件都被成功加载(v_repExtRemoteApi.dll, libv_repExtRemoteApi.dylib 或 libv_repExtRemoteApi.so)。你可以通过终端查看。其实一般情况下这个问题无需多虑。
V-REP服务器服务提供两种模式:
- Continuous(连续)远程API服务器服务
- Temporary (临时)远程API服务器服务
下面分别介绍。
连续远程API服务器服务
连续服务随V-REP的启动而启动。远程API插件会从一个名为 remoteApiConnections.txt 的文件中读取配置信息,并启用相关服务。此模式下,即便V-REP仿真没有开始,远程API仍然可以工作。你也可以通过命令行的形式启动连续服务。
对于Matlab机器人的仿真而言,这种模式其实非常方便,因为我们每一次仿真不需要先运行V-REP仿真再运行Matlab仿真,仅在Clent端(Matlab)一步到位。缺点是V-REP端的仿真行为是“失控”的,不太适合有bug时的调试。
临时远程API服务器服务
临时服务在仿真脚本中被启动。V-REP的仿真行为始终处于用户可控的状态下,比较适合调试。当然仿真结束时服务也会一起结束。总之这种方式更加受欢迎。
临时服务器服务可以通过以下两个Lua函数(对Lua不熟悉者参考后续内容)控制开始/终止:
simRemoteApi.start
simRemoteApi.stop
配图是手册给出的说明,已经十分清楚了。V-REP还提供了两个函数检测服务器状态和重置服务:
simRemoteApi.status
simRemoteApi.reset

Remote API的工作模式
V-REP远程API提供四种工作模式,四种模式各有特色,下面逐一介绍。
Blocking 函数调用
Blocking函数调用时调用远程API最简单的方式,这种模式适用于我们必须等待V-REP服务器反馈信息的情况。例如我们想要获取当前机械臂每个关节的角度时。
Non-Blocking 函数调用
如果我们不需要V-REP服务器反馈任何信息,采用Non-Blocking函数会大幅度提高效率。例如给机械臂的各个轴设定一个目标值,我们不需要等待设定完成再进行下一步操作。
还有一种情况,为了保证信号的完整性,我们可能需要向V-REP服务器发送多个需要同时处理的数据。这样可防止由于时序问题造成的混乱。此时我们可以暂停通信线程,这样发送出去的数据不会立即被接收,而是等待通信线程启动后一起接收。
Data streaming
数据流机制类似于ROS系统中的Topic机制。V-REP服务器会按照指定的频率连续发送数据,Client应用随时可获取。
Synchronous operation
上述工作模式均是异步的,即V-REP仿真的执行并没有考虑到Client应用(Matlab)端的执行情况。如果说我们的仿真有同步需求,我们可以使用同步模式。该模式需要事先被使能。
几种工作模式的关系如下图所示:

你的系统中也可以同时又多个Client同时运行,但是操作方法稍微复杂,因此不作介绍。有兴趣可以参考官方手册。
常用的Remote API (MATLAB)
所有支持的Remote API函数 (Matlab)均可以在这里找到。在这里你可以找到所有可能会用到的Remote API常量。
时间原因,此处暂时不列举常用的API函数及其用法,你可以后续的例子中体会。
Lua语言基础
这里仅介绍下操作V-REP服务器时可能需要用到的Lua语言基础,Lua语言博大精深,想深入学习的或者想完全利用Lua方式操作V-REP仿真的请参考专业教材。
Lua语言是一门以C语言为基础的

本文详细介绍了如何在MATLAB环境中使用V-REP Remote API,包括准备MATLAB环境、V-REP的两种服务器服务模式、Remote API的工作模式以及Lua语言基础。通过实例展示了在MATLAB中调用Remote API进行机器人仿真的操作流程,帮助读者快速入门V-REP的MATLAB远程API应用。
最低0.47元/天 解锁文章
1709

被折叠的 条评论
为什么被折叠?



