前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Script(二)

Script(二)

作者头像
六四零
发布2020-08-04 20:39:38
1.2K0
发布2020-08-04 20:39:38
举报
文章被收录于专栏:小白VREP

这次介绍V-REP内部和周围的通信方式。

01

Signals

signals可以看作是全局变量。目前支持四种类型的信号:整数型、浮点型、双型和字符串型信号。可以定义、重新定义、读取和清除信号。在模拟结束时,所有由主脚本或任何子脚本创建的信号都将被清除。例如:

02

Custom data blocks

自定义数据块是可以存储在对象内部或场景内部的数据。它可以用来存储与模型或场景一起保存的自定义数据,也可以作为一种通信手段。例如:

03

ROS

04

BlueZero

05

Remote API

06

Persistent Data

可以将持久数据块视为持久全局缓冲区。可以定义、重新定义、读取和清除持久数据块,并在所有打开的场景中共享这些数据块。它们会一直保存到模拟器结束,但也可以保存在文件中,并在下一次V-REP启动时自动重新加载。

07

Custom Lua functions

主客户端应用程序或任何插件都可以通过Lua定制API命令注册自定义Lua函数。然后,当从脚本中调用自定义Lua命令时,将回调主客户机应用程序或插件中已注册的函数。这对于实现高级Lua命令非常方便(例如,可以想象使用一个插件处理机器人的移动,使用一个Lua命令simRobot.moveAndAvoidObstacle () !)

08

Wireless communication simulation

V-REP允许以一种非常灵活的方式模拟无线通信:数据可以发送到一个特定的方向,并在一个特定的距离。如果接收器位于指定的发射区域,则可以接收发射的数据。有关详细信息,请参考常规API中的相应函数。通过启用环境对话框中的可视化无线发射和可视化无线接收项,可以可视化无线发射/接收活动。下图展示了两个移动机器人之间的可视化无线通信:

09

LuaSocket

V-REP附带一个名为LuaSocket的Lua扩展库(有关此库的致谢和致谢信息,请参见此处)。它允许在嵌入式脚本或外接程序中执行各种类型的套接字通信。下面的代码部分演示了一个线程的子脚本如何获取网页:

注意request命令的阻塞部分是如何放在非阻塞部分中的。有关如何避免外部命令阻塞的更多信息,请参考sim.setThreadIsFree API命令。 如果你的应用程序需要套接字通信,这是非常方便的设置一个线程脚本作为请求服务器,并让其他脚本访问它的套接字通信如下例: 线程请求服务器:

下面的非线程子脚本的例子可以用来访问套接字信息:

10

Lua extension library

利用Lua的扩展库机制,可以几乎无限地扩展V-REP的通信方式。正如在LuaSocket库中所做的那样,您可以添加在线可用的任何其他类型的Lua扩展库。您只需根据库的说明将库安装到V-REP的安装目录中。如上面的LuaSocket所示,确保你使用了sim.setThreadIsFree API命令的非阻塞部分应该有一个扩展库命令块V-REP。

11

Calling script functions

从主客户端应用程序、插件、嵌入式脚本、远程API客户端或ROS节点,都可以使用simCallScriptFunctionEx或simxCallScriptFunction调用脚本函数。被调用的脚本函数可以执行各种任务,然后将数据发送回调用方。

12

Setting a script variable

在主客户端应用程序或插件中,可以使用sim.setScriptVariable设置/清除脚本变量(即Lua变量)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白VREP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档