RoboDK API -文档
用于c++的RoboDK API

简介

本部分文档介绍了用于c++的RoboDK API。

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

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

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

更多信息请点击这里:插件接口vs. RoboDK API

用于c++的RoboDK API在2个文件中实现(robodk_api.h而且robodk_api.cpp).这些文件定义了以下类。

RoboDK类

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

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

项目类

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

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

RoboDK类型文件

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

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

插件接口vs. RoboDK API

RoboDK API是一组通用命令,允许您与RoboDK交互并自动化任务。在RoboDK中使用宏时,默认使用RoboDK API。RoboDK插件是一个库(DLL),可以由RoboDK加载,以扩展某些功能和自定义RoboDK界面。该接口包括一个RoboDK API的接口。

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

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

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

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

需求

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

安装要求

使RoboDK插件工作的要求:

  • 安装RoboDK (v3.5.4及以上版本)://www.x7093.com/download
  • 您应该安装Qt库和Qt Creator(除非您打算在Visual Studio上使用Qt库)。

ayx官方离线编程示例

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

//在半径为100.0 mm的圆内画一个六边形
intN_sides = 6;
浮动Size = 100.0;
//获取参考帧和工具帧(TCP)
Mat pose_frame = ROBOT->PoseFrame();
Mat pose_tool = ROBOT->PoseTool();
Mat pose_ref = ROBOT->Pose();
//程序启动
机器人——> MoveJ (pose_ref);
机器人——> setPoseFrame (pose_frame);//设置参考系
机器人——> setPoseTool (pose_tool);//设置工具框架:重要的在线编程
机器人——> setSpeed (100);//设置Speed为100mm /s
机器人——> setRounding (5);//设置舍入指令(C_DIS & APO_DIS / CNT / ZoneData / Blend Radius /…)
机器人——> RunInstruction (“CallOnStart”);//运行程序
intI = 0;I <= n_sides;我+ +){
//计算角度:
角度= ((double) I / n_sides) * 360.0;
//创建一个相对于pose_ref的姿态
垫pose_i (pose_ref);
pose_i.rotate(角,0,0,1.0);
pose_i。翻译(大小,0,0);
pose_i.rotate(角,0,0,1.0);
//添加注释(当生成代码时)
机器人——> RunInstruction (“移动到点”+ QString::number(i), RoboDK::INSTRUCTION_COMMENT);
//获取欧拉角(X,Y,Z,W,P,R)
xyzwpr [6];
pose_i.ToXYZRPW (xyzwpr);
机器人——> MoveL (pose_i);//移动机器人
机器人——> RunInstruction (“CallOnFinish”);
机器人——> MoveL (pose_ref);//返回到参考点

用于仿真的脚本可以用于脱机编程,这意味着可以为机器人控制器生成相应的程序。ayx官方RoboDK支持大量的机器人控制器,并且很容易包含使用后处理器的新机器人控制器的兼容性。

更多示例:

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

支持机器人

下面列出了RoboDK支持的机器人控制器:

  • ABB RAPID IRC5:用于ABB IRC5机器人控制器
  • ABB RAPID S4C:用于ABB S4C机器人控制器
  • Adept Vplus:用于Adept V+编程语言
  • Allen Bradley Logix5000: Allen Bradley Logix5000 PCL
  • CLOOS:服装机器人控制器
  • 柯马C5G:柯马C5G机器人控制器
  • Denso PAC:用于Denso RC7(及更老版本)机器人控制器(PAC编程语言)
  • Denso RC8:用于Denso RC8(及更新版本)机器人控制器(PacScript编程语言)
  • Dobot:教育类Dobot机器人
  • Fanuc R30iA:用于Fanuc R30iA和R30iB机器人控制器
  • 发那科R30iA弧焊:用于发那科弧焊
  • Fanuc RJ3:为发那科RJ3机器人控制器
  • GCode BnR:用于B&R机器人控制器
  • GSK:代表GSK机器人
  • HIWIN HRSS: HIWIN机器人
  • KAIRO:为Keba KAIRO机器人控制器
  • KUKA IIWA:用于Java中的KUKA IIWA日出编程
  • KUKA KRC2:库卡KRC2机器人控制器
  • 库卡KRC2 CamRob:为库卡CamRob铣削选项
  • KUKA KRC2 DAT:用于KUKA KRC2机器人控制器,包括DAT数据文件
  • KUKA KRC4:库卡KRC4机器人控制器
  • KUKA KRC4配置:针对KUKA KRC4机器人控制器,每行配置数据
  • KUKA KRC4 DAT:库卡KRC4机器人控制器,包括DAT数据文件
  • 川崎:表示川崎AS机器人控制器
  • Mecademic:为Mecademic Meca500机器人
  • Motoman/Yaskawa:用于Motoman机器人控制器(JBI II和JBI III编程)
  • 三菱:三菱机器人控制器
  • Nachi AX FD:用于Nachi AX和FD机器人控制器
  • 大henotc:用于大henotc机器人控制器
  • Precise:精确的Scara机器人
  • Siemens Sinumerik:为Siemens Sinumerik ROBX机器人控制器
  • Staubli VAL3:用于Staubli VAL3机器人程序(CS8控制器及以后版本)
  • Staubli VAL3 InlineMove:生成Staubli VAL3程序的内联移动数据
  • Staubli S6:用于Staubli S6机器人控制器
  • Toshiba:代表东芝机器人
  • 万能机器人:对于UR机器人,生成线性运动作为姿态目标
  • Universal Robots RobotiQ:针对我们的机器人,包括对RobotiQ夹持器的支持
  • 万能机器人关节:对于UR机器人,生成线性运动作为关节目标
  • 雅马哈:用于雅马哈机器人

Qt的技巧

RoboDK API的c++版本是基于Qt的,Qt是c++的一组有用的库,Qt Creator是Qt的默认开发环境(IDE)。

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

  • 双击robodk - api - ccp - sample。使用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的有用链接: