C#(发音为“C sharp”)是由微软开发的一种编程语言,可以用于构建和运行在.NET Framework之上的各种应用程序。C#是简单、强大、类型安全、面向对象的高级程序设计语言。
本文将主要main section 介绍RoboDK API配合通用计算机编程语言C# 进行机器人编程的优势。
面向C#的RoboDK API 是一个RoboDK.cs 源文件,它包含了RoboDK类(类似于Python的Robolink类),RoboDK.Item 类(类似于Python的Robolink.Item 类的API),和其他机器人工具,例如用于进行姿态转向操作的矩阵类(RoboDK.Mat) 。
此处为面向C#的RoboDK API提供了一个项目示例,如下图所示(包含完整的源代码)。
选择加载文件Load File选项,打开RoboDK站或任何RoboDK支持的其他文件。如果你已成功加载机器人,则相应机器人变量将会依次更新(与使用选择机器人Select Robot相同)。
下面的视频展示了一个面向C#的RoboDK API的项目示例:https://www.youtube.com/watch?v=1hRRYr9bEsY
注意:加载和运行项目示例时需要Microsoft Visual Studio软件。你可以到Visual Studio Community (Express)下载它的免费版本。
当机器人使用此类命令时(如MoveJ、MoveL或setDO),系统将默认在C#仿真下运行该程序。当C#示例项目启动时,系统也会默认设置C#为仿真模式。
这意味着机器人的动作可以在RoboDK上进行仿真。例如,我们可以选择右边的按钮(+Tx, -Tx,…),使得机器人位移10 mm的步长,或者我们可以选择运行测试程序Run Test Program按钮,机器人就会围绕当前位置做一个六边形的运动。
设置一些断点来调试应用程序并测试该机器人的目标范围。机器人的目标范围可以定义为关节坐标或Mat变量(4x4姿态矩阵),通过使用XYZWPR形式可以帮助排除一些程序问题。更多相关信息请参见参考坐标系Reference Frames部分。
此外,也可以将运行模式Run Mode切换为离线编程Offline Programming模式或在线编程Online Programming模式(Run on Robot),具体内容如下一节所示。
C#语言编程程序支持通过重复使用之前相同的C#代码离线生成Offline Programming程序。以下步骤将测试这一特性:
1. 在运行模式部分选择离线编程Offline Programming
2. 选择运行测试程序Run Test Program或任何其他动作组合。
3. 选择生成程序Generate Prog来获取特定于供应商的机器人程序
基于这种操作,可以快速通过执行一个特定于机器人控制器的机器人程序获得相应结果,这个操作可以代替仿真程序。
一旦生成该程序,运行模式Run Mode将会切换为仿真Simulation状态。
提示:右键单击机器人,然后点击选择后置处理器Select Post Processor,这样就可以为离线编程指定一个后置处理器(如后置处理器Post Processor部分所示)。
注意:当离线编程Offline Programming模式处于活动状态时,机器人不会移动,因为这时已由RunMode模式切换到RUNMODE_MAKE_ROBOTPROG模式,相关内容请参见Python离线编程Python OLP部分。
C#程序支持直接在机器人上运行程序,通过重复使用之前相同的C#仿真代码。线上编程允许在一些特定的机器人控制器上使用机器人驱动Robot Drivers。以下步骤将以C#项目为例测试此特性:
1. 在运行模式Run Mode部分选择Run on Robot
2. 选择其他任何命令都会使机器人移动
你的运动指令将在真实的机器人上运行,并且对应的仿真器将与该机器人同步运动。
重要提示:使用机器人驱动程序需要连接PC和机器人 (右键单击机器人,然后选择Connect to robot…)。更多相关信息请参见Robot Drivers section。
注意:此时RDK/Robolink下的运行模式RunMode将会被切换为RUNMODE_RUN_ROBOT模式,机器人由此可以执行命令动作。相关代码如下:
RDK = Robolink();
RDK.setRunMode(RUNMODE_RUN_ROBOT);
提示:在线编程Python实例文档SampleOnlineProgramming.py宏位于路径C:/RoboDK/Library/Macros/ folder下,该文档为RoboDK GUI之外的在线编程方案提供了一个很好的Python案例。
注意:更多关于如何通过API使用机器人驱动的信息请参见Robot Drivers section。