RoboDK API-文档
C++的RooDK API

介绍

本文档的这一部分是对c++的RoboDK API的介绍。

RoboDK API允许为工业机器人创建模拟,并生成特定于供应商的机器人程序。虽然RoboDK的图形用户界面可以用于创建程序,但可以通过使用通用编程语言(如c++)来扩展机器人控制器的限制。RoboDK API可在c++, c#, Python, Matlab和Visual Basic中使用。

通过RoboDK API,可以使用您喜欢的编程语言模拟和编程任何工业机器人。这避免了使用特定于供应商的编程语言。

注意:这个RoboDK API不是插件接口:

更多信息:插件接口与RoboDK API

c++的RoboDK API实现在2个文件(robodk_api.hrobodk_api.cpp).这些文件定义了以下类。

RoboDK类

RoboDK类定义了RoboDK API的接口。在这里可以找到原始的Python参考://www.hi-ks.com/doc/en/RoboDK-API.html#RoboDKAPI

有关RoboDK API的更多信息,请访问:

项目类

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

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

RoboDK类型文件

RobodkAPI定义了RobodkAPI使用的一组类型。包括:

  • 垫子类的姿势操纵。
  • 表示机器人关节变量的tjoint类
  • tMatrix2D数据结构表示可变大小的2D矩阵(主要用于内部目的)

插件接口与RoboDK API

RoboDK API是一组通用命令,允许您与RoboDK交互并自动执行任务。在RoboDK中使用宏时,默认情况下使用RoboDK API。RoboDK插件是一个库(DLL)RoboDK可以加载它来扩展某些特性和定制RoboDK接口。该接口包括RobodkAPI的接口。

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

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

在插件中使用RoboDK API时,你应该注意以下几点:

  • 项(项/IItem)是指针,而不是对象。可以通过检查项是否为空指针(nullptr)来检查项是否有效。
  • 每次要更新屏幕时(例如,如果使用class:IItem::Joints更改机器人的位置),都必须调用class:IRoboDK::Render。更新屏幕不是自动完成的。
  • 插件只能部署为使用Qt库的c++代码。

要求

RoboDK API使用Qt库,并提供了一个使用Qt Creator创建的示例。建议使用APIExample项目来开始您的新项目(双击robodk - api - cppp - sample)。pro用Qt Creator打开它)。

安装要求

使RoboDK插件工作的要求:

离线编程示例

下面的代码(c++)展示了一个使用RoboDK API进行机器人模拟和离线编程的示例:

//在半径为100.0 mm的圆内画一个六边形
intn_边=6;
浮动尺寸=100.0;
//检索参考坐标系和工具坐标系(TCP)
Mat pose_frame = ROBOT->PoseFrame();
Mat pose_工具=机器人->PoseTool();
Mat pose_ref=机器人->姿势();
//程序启动
机器人->移动(姿势参考);
ROBOT->setPoseFrame(姿势框架);//设置参考框架
机器人->设置姿势工具(姿势工具);//设置工具框架:对在线编程很重要
机器人——> setSpeed (100);//速度设置为100mm /s
机器人->设置成圆(5);//设置舍入指令(C_-DIS&APO_-DIS/CNT/ZoneData/Blend Radius/…)
机器人->运行指令(“CallOnStart”);//运行程序
对于inti=0;i<=n_边;(i++){
//以度为单位计算角度:
角度=((双)输入/输出侧)*360.0;
//创建一个相对于pose_ref的姿势
垫子姿势i(姿势参考);
姿势i.旋转(角度,0,0,1.0);
姿势i.平移(大小,0,0);
姿势i.旋转(-角度,0,0,1.0);
//添加注释(在生成代码时)
机器人->运行指令(“移动到点”+QString::number(i),RoboDK::指令(注释);
//获取欧拉角(X,Y,Z,W,P,R)的例子
xyzwpr[6];
pose_i.ToXYZRPW (xyzwpr);
机器人——> MoveL (pose_i);//移动机器人
机器人->运行指令(“CallOnFinish”);
机器人->移动(姿势参考);//移回参考点

用于模拟的相同脚本可用于离线编程,这意味着可为机器人控制器生成相应的程序。RoboDK支持大量机器人控制器,并且很容易包含使用后处理器的新机器人控制器的兼容性。

更多的例子:

有关机器人后置处理器的更多信息:

支撑机器人

以下列表包括RoboDK支持的机器人控制器:

  • ABB RAPID IRC5:用于ABB IRC5机器人控制器
  • ABB RAPID S4C:用于ABB S4C机器人控制器
  • Adept V+:适用于Adept V+编程语言
  • Allen-Bradley Logix5000:适用于Allen-Bradley Logix5000 PCL
  • CLOOS:用于CLOOS机器人控制器
  • Comau C5G:用于Comau C5G机器人控制器
  • Denso PAC:用于Denso RC7(及更老的)机器人控制器(PAC编程语言)
  • Denso RC8:适用于Denso RC8(及更新版本)机器人控制器(PacScript编程语言)
  • 多宝:用于教育型多宝机器人
  • Fanuc R30iA:用于Fanuc R30iA和R30iB机器人控制器
  • Fanuc R30iA电弧:用于Fanuc电弧焊接
  • Fanuc RJ3:用于Fanuc RJ3机器人控制器
  • GCode BnR:用于B&R机器人控制器
  • GSK:用于GSK机器人
  • 上银HRSS:用于上银机器人
  • KAIRO:用于Keba KAIRO机器人控制器
  • KUKA IIWA:用于Java中的KUKA IIWA sunrise编程
  • KUKA KRC2:用于KUKA KRC2机器人控制器
  • 库卡KRC2 CamRob:用于库卡CamRob铣削选项
  • KUKA KRC2 DAT:用于KUKA KRC2机器人控制器,包括DAT数据文件
  • KUKA KRC4:用于KUKA KRC4机器人控制器
  • KUKA KRC4配置:适用于KUKA KRC4机器人控制器,每一行都有配置数据
  • KUKA KRC4 DAT:用于KUKA KRC4机器人控制器,包括DAT数据文件
  • 川崎:用于川崎AS机器人控制器
  • Meca500机器人
  • Motoman/Yaskawa:用于Motoman机器人控制器(JBI II和JBI III编程)
  • 三菱:用于三菱机器人控制器
  • Nachi AX FD:用于Nachi AX和FD机器人控制器
  • 代亨OTC:代亨OTC机器人控制器
  • 精确:用于精确的Scara机器人
  • Siemens Sinumerik:用于Siemens Sinumerik ROBX机器人控制器
  • Staubli VAL3:用于Staubli VAL3机器人程序(CS8控制器及更高版本)
  • Staubli VAL3 InlineMove:使用内联移动数据生成Staubli VAL3程序
  • Staubli S6:用于Staubli S6机器人控制器
  • 东芝:用于东芝机器人
  • 通用机器人:对于UR机器人,生成线性运动作为姿态目标
  • 通用机器人RobotiQ:用于UR机器人,包括支持RobotiQ夹持器
  • 万能机器人关节:对于UR机器人,作为关节目标产生线性运动
  • 雅马哈:用于雅马哈机器人

Qt尖端

Qt是一组有用的c++库,Qt Creator是Qt的默认开发环境(IDE)。

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

  • 双击RoboDK-API-Cpp-Sample.pro文件以使用Qt Creator打开示例项目。
  • 使用Qt信号/槽机制的动作/按钮回调(http://doc.qt.io/qt-5/signalsandslots.html).信号和插槽是线程安全的。
  • 使用tr(“您的字符串”)或QObject::tr(“您的字符串”)包装字符串,以允许使用Qt语言学家进行翻译。有关详细信息:http://doc.qt.io/qt-5/qtlinguist-index.html
  • 如果您遇到奇怪的构建问题,那么删除自动创建的构建文件夹以强制进行新的构建可能会很有用。
  • 如果你在RoboDK中遇到奇怪的插件加载问题,建议删除库,并在新的构建中创建插件库。
  • 有关Qt的更多信息:https://www.qt.io/

有用的链接

涉及RoboDK API的有用链接: