v-rep---script-function

作用,实现,参数讲解。

script-function标签

作用

问题:如何在插件的接口中调用lua脚本中定义的函数?

用于声明一个函数,这个函数的作用是通过v-rep提供的接口sim::callScriptFunctionEx()调用脚本的函数,并且返回函数执行结果。

script-funciton声明的函数在哪被调用

只要设置好需要的输入参数,可以在插件的任意合理位置调用。

function内部在c++中实现

就是实现脚本函数的调用,并且获取返回值。

创建栈帧的作用:

传递函数的参数和返回值。

将脚本函数需要的参数传入栈帧,脚本函数执行时从栈帧获取输入的参数;

脚本函数执行完成后将返回值写入栈帧,调用者可以从栈帧中获取返回值。

怎么样传递脚本函数需要的参数

通过script-function声明的函数的in参数;

scriptId要怎么获取

所有的插件接口的in参数都会有一个SScriptCallBack类型的”_“成员,这个成员中就有可以直接从这个

怎么样获取脚本函数返回的值

eg:

<script-function name="testCallback">
...
</script-function>

因为调用testCallback函数之前,我们是需要先创建in和out变量的,所以testCallback函数返回之后,如果执行的脚本函数有返回值,只需要从out中获取即可。

sim::callScriptFunctionEx

这个是v-rep提供的调用脚本函数的接口。

参数解析

  • scriptHandle:

需要调用的脚本函数所在的lua脚本的脚本句柄。

也就是说第二个参数(脚本函数名),必须要在scriptId标识的lua脚本文件中。

  • functionName:

被调用的脚本函数名。

  • stackId:

这个参数是一个栈帧的id,这个栈用来存放传递脚本函数需要的参数和脚本函数执行返回的值。

这个参数以及栈我们不用自己传递,script-funciton生成的函数会自己生成完成传递。

官网函数说明

函数链接

其实xml中使用script-function标签,最重要的就是要实现一个c++函数,内部通过调用sim::callScriptFunctionEx这个接口调用lua语言脚本(这里只讲lua这种脚本)函数,并执行脚本函数,返回脚本函数执行的返回值。

案例

插件:

simTest

simTest.lua脚本文件:

因为加载这个simTest插件时,执行的是simTest.lua脚本,我们需要调用的脚本函数也要在这个文件里.

lua:

local simTest = loadPlugin 'simTest';
function testScriptFunc(str)print("You call script function successfully ,str="..str)m_str="This is return from script function"return m_str
end
(require 'simTest-typecheck')(simTest)
return simTest

xml:

    <command name="testCallback"><params><param name="call_str" type="string" /></params><return><param name="ret" type="string" /></return></command><script-function name="callScriptFunc"><params><param name="script_str" type="string" /></params><return><param name="ret" type="string" /></return></script-function>

pugin.cpp

void testCallback(testCallback_in *in,testCallback_out *out){callScriptFunc_in in_args;callScriptFunc_out out_args;in_args.script_str=in->call_str;if(callScriptFunc(in->_.scriptID,"testScriptFunc",&in_args,&out_args)) out->ret=out_args.ret;}

v-rep调用结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/841226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专业的力量:在自己的领域成为专家

专业的力量:在自己的领域成为专家 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 现在稀缺的已不再是信息资源&#xff0c;而是运用信息的能力。过去的海…

深入了解Nodejs模块机制

深入了解Nodejs模块机制 我们都知道Nodejs遵循的是CommonJS规范&#xff0c;当我们require(moduleA)时&#xff0c;模块是怎么通过名字或者路径获取到模块的呢&#xff1f;首先要聊一下模块引用、模块定义、模块标识三个概念。 1 CommonJS规范 1.1 模块引用 模块上下文提供…

安装部署统信UOS服务器操作系统1070e

原文链接&#xff1a;安装部署统信UOS服务器操作系统1070e Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于安装部署统信UOS服务器操作系统1070e的文章。统信UOS是一款基于Linux的国产操作系统&#xff0c;以其安全性和稳定性受到广泛关注。本文将详细介绍如何安…

58同城如何降低 80%的机器成本 | OceanBase案例

本文作者&#xff1a;58同城架构师刘春雷 一、背景介绍 58同城作为中国互联网生活服务领域的领军者&#xff0c;其平台规模居国内之首&#xff0c;涵盖了包括车辆交易、房产服务、人才招聘、本地生活服务以及金融等多元化的业务场景。 因其业务的广泛性和多样性&#xff0c;我…

Java开发大厂面试第26讲:生产环境如何排查问题和优化 JVM?

通过前面几个课时的学习&#xff0c;相信你对 JVM 的理论及实践等相关知识有了一个大体的印象。而本课时将重点讲解 JVM 的排查与优化&#xff0c;这样就会对 JVM 的知识点有一个完整的认识&#xff0c;从而可以更好地应用于实际工作或者面试了。 我们本课时的面试题是&#x…

本地连接github仓库

【1】新建github仓库 【2】本地克隆并提交 $ git clone https://github.com/TomJourney/soil.git Cloning into soil... warning: You appear to have cloned an empty repository.pacosonDESKTOP-E4IASRJ MINGW64 /d/github/TomJourney/soil (master) $ git add readme.txtpa…

HTML静态网页成品作业(HTML+CSS+JS)——心理健康教育介绍网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;使用Javacsript代码使用下拉菜单的实现以及首页图片的轮播&#xff0c…

windows7的ie11降级到ie8

重点是要在程序管理窗口中“查看已安装的更新”打开当前系统中已安装更新列表&#xff0c;找到两个IE11的更新&#xff08;见下图“卸载文件“&#xff09;并卸载掉&#xff0c;这样windows功能中的ie11才会变成ie8. 打开控制面板 进入面板&#xff0c;点击程序&#xff0c;进…

【设计模式】JAVA Design Patterns——Static Content Hosting(静态内容托管模式)

&#x1f50d;目的 将静态内容部署到基于云的存储服务&#xff0c;该服务可以将它们直接交付给客户端。 这可以减少对昂贵计算实例的需求。 &#x1f50d;解释 真实世界例子 全球性的营销网站&#xff08;静态内容&#xff09;需要快速的部署以开始吸引潜在的客户。为了将托管…

一个机器学习问题的重新定义

任何事物都有两面性。 一些机器学习问题也是如此。并非每个回归问题&#xff08;你认为的&#xff09;都需要回归。仔细考虑和审视问题的业务不仅可以帮助开发更好的模型&#xff0c;还可以找到有效的解决方案。 重构或重新定义&#xff08;reframing&#xff09;是一种改变机…

如何用ai打一场酣畅淋漓的数学建模比赛? 给考研加加分!

文章目录 数学建模比赛1. 数学建模是什么&#xff1f;2. 数学建模分工合作2.1 第一&#xff1a;组队和分工合作2.2 第二&#xff1a;充分的准备2.3 第三&#xff1a;比赛中写论文过程 3. 数学建模基本过程4. 2023全年数学建模竞赛时间轴5. 数学建模-资料大全6. 数学建模实战 数…

【feature selection】特征选择学习笔记

文章目录 1. 什么是特征选择2. 特征选择与特征提取的区别3. 特征选择的方法3.1 Filtering过滤法3.2 Wrapper包装法3.3 Embedding嵌入法 4. 特征选择示例4.1 方差选择法示例4.2 递归特征消除法示例 1. 什么是特征选择 特征选择是特征工程的内容, 其目标是寻找最优特征子集。剔除…

MTK下载AP

只升级选Firemare Upgrade &#xff0c;点下载后&#xff0c;关机下插入USB

无人机反制:光电干扰一体设备技术详解

一、光电干扰技术原理 光电干扰技术是一种利用光学和电子技术手段对无人机实施干扰和控制的先进技术。该技术通过向无人机发射特定频率和强度的光信号或电磁信号&#xff0c;干扰无人机的视觉系统、控制系统或通信链路&#xff0c;进而达到反制无人机的目的。光电干扰技术具有…

N进制计数器【01】

N进制计数器 前面介绍过二进制计数器和十进制计数器&#xff0c;但是在很多时候需要到其他进制的计数器&#xff0c;我们把这些任意进制的计数器简称为 N 进制计数器 设计 N 进制计数器的方法有两种&#xff1a; 用时钟触发器和门电路设计&#xff08;前面常用的方法&#xf…

垃圾回收机制及算法

文章目录 概要对象存活判断引用计数算法可达性分析算法对象是否存活各种引用 垃圾收集算法分代收集理论复制算法标记清除算法标记-整理算法 概要 垃圾收集&#xff08;Garbage Collection&#xff0c; 下文简称GC&#xff09;&#xff0c;其优缺点如下&#xff1a; 优点&#…

Nature Communications | 柔性半导体器件的大规模集成(柔性半导体器件/柔性电子)

韩国中央大学Sung Kyu Park、 韩国成均馆大学Jong-Woong Kim和Yong-Hoon Kim团队,在《Nature Communications》上发布了一篇题为“Full integration of highly stretchable inorganic transistors and circuits within molecular-tailored elastic substrates on a large scal…

OZONBIGSELL分析产品工具,OZON平台数据分析

在当今的数字化时代&#xff0c;电商平台的竞争日趋激烈&#xff0c;数据成为了企业决策的重要支撑。OZON作为俄罗斯领先的电商平台&#xff0c;其背后蕴含的海量数据对于卖家而言&#xff0c;既是挑战也是机遇。接下来看看OZONBIGSELL这一分析产品工具&#xff0c;以及如何利用…

等保2.0看这一篇就够了

一、等级保护介绍 1.1什么是等级保护 网络安全等级保护是指对国家重要信息、法人和其他组织及公民的专有信息以及信息和存储、传输、处理这些信息的信息系统分等级实行安全保护&#xff0c;对信息系统中使用的信息安全产品实行按等级管理&#xff0c;对信息系统中发生的信息安…

ROS | C++和python实现发布结点和订阅结点

发布者结点&#xff1a; 代码实现&#xff1a; python: C: C和Python发布结点的差异&#xff1a; python: 发布结点pub 大管家rospy调用publisher函数发布话题 (话题,类型&#xff0c;话题长度&#xff09; C: 先定义一个大管家&#xff1a;NodeHandle 然后大管家发布话题…