RoboDK插件接口
RoboDK插件接口介绍

简介

本帮助文档是为RoboDK开发插件的介绍。RoboDK插件允许通过使用RoboDK接口和RoboDK API扩展RoboDK。与默认的RoboDK API(在Python, c#, c++, Matlab等中提供)相反,这个RoboDK插件接口本机链接到RoboDK的核心。因此,当在插件接口中使用RoboDK API时(使用IItem而且IRoboDK)速度比使用默认API快时间测试.但是,所有的RoboDK插件应用程序必须存在于RoboDK的环境中。

一些RoboDK示例插件可在这里:

每个示例都包含robodk_interface文件夹中。每个插件都需要这个文件夹,并定义RoboDK的接口。

这些示例包括一个应用机器人正逆运动学的定制机器人面板,一个实时示例,一个模拟重力的插件和基于OPC-UA的接口Open62541(服务器和客户端示例)。

双击PluginExample。使用Qt启动项目。请确保遵循安装要求部分(安装要求)以安装Qt作为c++开发环境。

RoboDK插件结构

插件接口(IAppRoboDK)

每个插件都必须实现IAppRoboDK类。的IAppRoboDK定义RoboDK应用程序的接口。

与标准API相反,插件接口允许您与RoboDK的主窗口交互,并通过插件自定义RoboDK的外观IAppRoboDK类。工具栏、菜单栏和窗口可以使用IAppRoboDK类。

您可以通过选择加载一个示例插件:

  • 工具-插件

插件中的RoboDK API

IRoboDK (RoboDK)

IRoboDK类(或RoboDK)定义了RoboDK API的接口。这个RoboDK API在默认情况下是相同的(//www.sinclairbody.com/doc/en/RoboDK-API.html#RoboDKAPI).然而,当你在RoboDK插件中使用它时,RoboDK API更快:时间测试.当使用class加载插件时:IAppRoboDK: PluginLoad它将一个指针传递给IRoboDK这是RoboDK API的接口。

RoboDK和IRoboDK是完全相同类型的类。在默认示例中使用RoboDK,使其与标准c++ RoboDK API兼容。

更多关于RoboDK API的信息请点击这里:

IItem(项)

IItem类(或项目)可以用于操作RoboDK树中任何可用的项目。使用函数,如class:IRoboDK: getItem或类:IRoboDK: getItemList从RoboDK站树中检索项目。Item是指向的指针IItem.应该使用class删除项:IItem:删除(不使用类析构函数)。

关于RoboDK Item类(基于Python API)的更多信息可在这里:

RoboDK类型文件

robodktypes.h文件定义了RoboDK API使用的一组类型。包括:

  • 类的姿态操作。
  • tJoints类来表示机器人关节变量
  • tMatrix2D表示可变大小的2D矩阵的数据结构(主要用于内部用途)

插件接口vs. RoboDK API

RoboDK API是一组通用命令,允许您与RoboDK交互并自动化任务。在RoboDK中使用宏时,默认使用RoboDK API。RoboDK插件接口包括一个RoboDK API接口。

通过插件接口使用RoboDK API的主要优点如下:

  • RoboDK API要快得多,因为它是作为库加载的(RoboDK插件实际上是由RoboDK加载的库)。
  • 您可以自定义RoboDK主窗口的外观(包括菜单、工具栏和添加停靠窗口)。

在插件中使用RoboDK API时,需要注意以下几点:

  • 项(Item/IItem)是指针,不是对象。您可以通过检查一个项是否为空指针(nullptr)来检查它是否有效。更多信息:ItemValid。
  • 你必须呼叫班级:IRoboDK:渲染每次你想要更新屏幕时(例如,如果你使用class改变机器人的位置:IItem:关节).更新屏幕不会自动完成。
  • 插件只能使用Qt库作为c++代码进行部署。

时间测试

PluginExample应用程序展示了如何实现一个基本的插件。除此之外,它还执行一些定时测试,以计算RoboDK在特定计算机上的速度。通过选择“插件速度信息”按钮,您将获得定时统计数据。

这些统计数据是按类别生成的:PluginExample: callback_information.例如,正运动学和逆运动学通常分别小于2微秒和10微秒(1微秒= 1e-6秒)。

需求

每个RoboDK插件必须使用Qt Creator开发,并遵循Qt的项目指南。建议使用PluginExample项目开始使用新的RoboDK插件(双击PluginExample. exe)。pro使用Qt Creator打开它)。

开发插件必须安装RoboDK。RoboDK的免费版本足以开发一个插件作为概念的证明。

安装要求

使RoboDK插件工作的要求:

  • 将插件文件放在:C:/RoboDK/bin/plugins/ (DLL文件)文件夹中。这是在PluginExample中默认设置的。Pro文件(如下图所示)
  • 启动RoboDK (C: / RoboDK / bin / RoboDK.exe)并传递命令行参数:-PLUGINSLOAD如下图所示。
    • 或者,如果DLL没有放在默认路径中,您可以传递参数“-PLUGINLOAD=path-to-your-plugin. DLL”。该值可以是库的路径、plugins文件夹中的文件名或插件的名称(PluginName)。
    • 您也可以使用BAT文件启动RoboDK: C:/RoboDK/RoboDK- allow - plugins . BAT。将显示示例插件。
    • 选择工具-插件以获得更多选项。RoboDK的未来版本将自动加载位于C:/RoboDK/bin/plugins中的插件
  • 出于开发目的,请确保使用RoboDK启动插件并传递-PLUGINSLOAD参数,如下图所示。
    您可以通过选择加载一个示例插件:
  • 工具-插件

RoboDK插件的默认位置是C:/RoboDK/bin/plugins

以调试模式运行

您的插件发布和调试二进制文件不应该与RoboDK的发布和调试二进制文件混合。默认情况下不提供RoboDK调试二进制文件。

要在调试模式下正确运行插件,您应该使用RoboDK调试二进制文件:

  • 联系我们获取RoboDK的调试版本(绑定文件夹)。
  • 解压绑定文件夹C: / RoboDK /绑定/
  • 选择“项目-运行-运行设置”,将“可执行文件”设置为C: / RoboDK /绑定/ RoboDK.exe(如下图所示,不要忘记d).

重要提示:将调试DLL与发布DLL混合将不起作用(将作为控制台输出提供一条消息)。确保在每次切换调试和发布模式时更新此设置。

重要提示:如果您遇到奇怪的插件加载问题,请尝试删除所有插件并重新构建它们(C:/RoboDK/bin/plugins和C:/RoboDK/bind/plugins中的所有文件)。

  • 选择Debug版本,您可以像往常一样开始调试。

Qt的技巧

RoboDK插件必须使用Qt插件框架创建。Qt是基于c++的,因此需要用c++编写RoboDK插件。

Qt是一组有用的c++库,Qt Creator是Qt的默认开发环境(IDE),我们推荐使用Qt Creator作为开发环境来编程RoboDK插件。

这个列表提供了一些使用Qt编程的有用链接和技巧:

  • 双击PluginExample。使用Qt Creator打开示例项目。
  • 使用Qt信号/插槽机制进行动作/按钮回调(http://doc.qt.io/qt-5/signalsandslots.html).信号和槽是线程安全的。
  • 使用tr("your string")或QObject::tr("your string")包装您的字符串,以允许使用Qt Linguist进行翻译。欲了解更多信息:http://doc.qt.io/qt-5/qtlinguist-index.html
  • 如果您遇到奇怪的构建问题,删除自动创建的构建文件夹以强制进行新的构建可能会很有用。
  • 如果你在RoboDK中遇到奇怪的插件加载问题,建议删除这些库并使用新版本创建插件库。
  • 更多关于Qt的信息:https://www.qt.io/

有用的链接

RoboDK API的有用链接: