深度解析V-REP Remote API (MATLAB) 的应用

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

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的仿真为例进行介绍。
V-REP

介绍之前,我想多说一句,无论什么时候,官方手册都是最好的参考资料,实践才是最好的老师。本文针对想要快速入门的初学者,以尽量言简意赅的方式引领读者入门。读完后你可以自己搭建一个可用的仿真平台,并对仿真的过程有初步的了解。部分介绍中存在不严谨的措辞还请谅解。

准备MATLAB环境

对应于Windows系统,你只需要准备三个文件,而且都可以在V-REP的安装目录下找到:

  1. remoteApiProto.m
  2. remApi.m
  3. 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服务器服务提供两种模式:

  1. Continuous(连续)远程API服务器服务
  2. 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
start
simRemoteApi.stop
stop
配图是手册给出的说明,已经十分清楚了。V-REP还提供了两个函数检测服务器状态和重置服务:

simRemoteApi.status
gather
simRemoteApi.reset
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)端的执行情况。如果说我们的仿真有同步需求,我们可以使用同步模式。该模式需要事先被使能。

几种工作模式的关系如下图所示:
modus operandi

你的系统中也可以同时又多个Client同时运行,但是操作方法稍微复杂,因此不作介绍。有兴趣可以参考官方手册。

常用的Remote API (MATLAB)

所有支持的Remote API函数 (Matlab)均可以在这里找到。在这里你可以找到所有可能会用到的Remote API常量。

时间原因,此处暂时不列举常用的API函数及其用法,你可以后续的例子中体会。

Lua语言基础

这里仅介绍下操作V-REP服务器时可能需要用到的Lua语言基础,Lua语言博大精深,想深入学习的或者想完全利用Lua方式操作V-REP仿真的请参考专业教材。

Lua语言是一门以C语言为基础的

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值