Doc No. :T20178
www.universal-robots.com
优傲机器人技术文档
Universal Robots Technical Document
文 档 名 称: URSDK (.Net 4.0) 快速指南
Document Name:URSDK (.Net 4.0) Quick Start
UR3, UR5 & UR10/CB3.0 及之上
优傲机器人贸易(上海)有限公司
Universal Robots (Shanghai) Co. Ltd.
www.universal-robots.com
2017 年 8 月 30 日
Contains Confidential Information of UR, do not distribute without permission
Page 1 of 15
Doc No. :T20178
www.universal-robots.com
Rev. No.
Date Revised
Section Revised
Revision Description
SUMMARY OF DOCUMENT REVISIONS
2017.8.30
Draft
Issued by CSL
1
2
3
Contains Confidential Information of UR, do not distribute without permission
Page 2 of 15
Doc No. :T20178
www.universal-robots.com
目 录
1. 总述 .................................................................................................................................................................. 4
2. 测试环境搭建 .................................................................................................................................................. 4
3. URSDK-Communication 命名空间使用 ........................................................................................................... 5
3.1 Dashboard server(29999) .......................................................................................................................... 6
3.2 Primary interface(30001) & Secondary interface(30002) .......................................................................... 6
3.3 Realtime interface(30003) ........................................................................................................................ 11
3.4 Realtime Data Exchange(RTDE, 30004) .................................................................................................... 12
4. URSDK-DataType 命名空间使用 .................................................................................................................... 13
5. URSDK-MathLib 命名空间使用 ...................................................................................................................... 14
Contains Confidential Information of UR, do not distribute without permission
Page 3 of 15
Doc No. :T20178
www.universal-robots.com
1. 总述
URSDK 是.Net 版的 UR 机器人驱动,实现了 UR 机器人的 29999-30004 端口,提供 UR 机器人的远程调用,
控制和监控功能。若需自行解析这些端口,可参考:29999(Dashboard server), 30001-30003(Primary,
secondary&Realtime), 30004(RTDE)。
URSDK (.Net 4.0) 快速指南主要介绍 URSDK 的大概功能,并提供一些调用示例,方便用户的快速学习和使
用。如有任何疑问或者反馈,请发送至 support.china@uinversal-robots.com 。
URSDK 包含 URSDK.dll, MathNet.Numerics.dll, RTDEConfig.xml。其中 URSDK.dll 为 SDK 的核心库,MathNet.
Numerics.dll 为数学库,RTDEConfig.xml 为 RTDE(30004)配置文件,如果使用 RTDE,必须指定指定 RTDEConfig.
xml 的路径。
URSDK 快速指南目标是让读者快速学会 URSDK 的使用,详细的说明和资料请参考 UR Support 以及
URSDK 的参考手册。
使用要求:
1、.Net framework 4.0 及之上;
2、PolyScope3.2 及之上。
针对的人群:
1、 开发 UR 机器人上位机软件的工程师;
2、 熟悉 UR 机器人脚本和操作的工程师;
2. 测试环境搭建
.Net 开发环境搭建并不是本文的范畴,可根据个人的需求安装。本文使用 C#开发语言,IDE 为 Visual
Studio 2015。UR 上位机软件的开发测试可以针对真实的机器人也可以是 URSim 仿真软件。真实机器人的测试
只需配置好网络环境,确保上位机能够连接上机器人即可。
URSim 仿真软件对于软件的开发,快速测试非常方便。URSim 是运行在 Linux 上的软件,因此如果开发
机器人是 Windows,那么可以安装虚拟机软件(Vmware workstation 12 或者 Virtual box,本文采用 Vmware
workstation),然后下载 Ursim for non-linux。为了完成 Windows 软件与虚拟机软件中 URSim 的通讯,还需配
置网络。
Vmware 虚拟机软件安装完成后会在网络连接中增加两块网卡即 VMnet1 和 VMnet8,将 VMnet1 网卡设
置为固定 IP,虚拟机网卡设置为仅主机模式如图 1。
Contains Confidential Information of UR, do not distribute without permission
Page 4 of 15
Doc No. :T20178
www.universal-robots.com
图 1 虚拟网卡(VMnet1)和虚拟机设置
与真机不同的是,URSim 的网络设置不能通过 PolyScope 设置,而要通过修改 linux 系统的 ip 地址实现,
修改方法为将 /etc/network/interfaces 文件中的网卡配置修改为静态 IP,图 2 为一个典型的静态 IP 设置方式。
注意 IP 地址与 Windows 虚拟网卡处于同一网段。
图 2 Linux 静态 IP 设置
3. URSDK-Communication 命名空间使用
URSDK 包含三个命名空间,分别是 Communication,Datatype,MathLib。Communication 是 29999-30004
端口的驱动类,Datatype 则是一些数据类型,MathLib 包含数学运算类。本文将侧重如何利用 URSDK 实现与
UR 机器人或者 URSim 的通讯,因此主要涵盖 Communication 中的驱动类。
Contains Confidential Information of UR, do not distribute without permission
Page 5 of 15
Doc No. :T20178
www.universal-robots.com
3.1 Dashboard server(29999)
Dashboard 是由机器人人机界面进程(示教器显示)负责维护和执行的一个端口。该端口主要负责接收
上位机指令,执行机器人初始化、加载程序、开始和暂停程序运行以及设置用户角色等操作,上位机可以远
程操作机器人就如同操作示教器一样。该接口主要应用在自动初始化机器人,无示教器应用(无示教器情况
下如何设置 UR 机器人请参考无示教器设置)等场合。Dashboard 接口接收上位机发送的 Dashboard 命令字符
串,机器人接收后,返回执行结果字符串。详细请参考 Dashboard 使用。
对应的,URSDK 中 DashBoard 类实现了 Dashboard 中所有指令,其调用方式为:
using URSDK.RobController.Communication; //引用communication 命名空间
DashBoard aDashBoard=new DashBoard("192.168.1.40"); //IP 为机器人的地址
String returnString;
//加载test1.urp 程序,该程序需在机器人programs 文件夹下
returnString = aDashBoard.loadProgram("test1.urp");
returnString = aDashBoard.play(); //运行当前程序
//其他操作
returnString = aDashBoard.stop(); //停止程序运行
returnString = aDashBoard.quit(); //退出DashBoard 连接
3.2 Primary interface(30001) & Secondary interface(30002)
Primary interface 以 10Hz 的频率向外发送机器人的状态,并以消息的形式对外发送机器人的一些运行错
误,全局变量信息,TP 按钮消息等等;同时能通过 Primary interface 向机器人发送脚本指令(脚本指令下载)
或者脚本程序段以实现对机器人的控制。详细请参考 Remote Control via TCP/IP 中的 client_interface 文档。由
于 Secondary interface 可以理解为 Primary interface 的子集(除了不会以消息形式对外发送机器人的各种消息
外,其余功能跟 Primary interface 一致),因此本小节中除了消息事件外,都适用于 Secondary interface。
PrimaryInterface 类是 Primary interface 端口的驱动, 其包含的数据成员有:
configurationData
配置信息,包含每个关节极限位置设置,DH 参数等数据
kinematicsInfo
safetyData
status
version
机器人运动学信息,内部使用
安全数据,内部使用
Sync 同步状态,PrimaryInterface.Status.Stopped/Started/Syncing
控制器版本信息
Contains Confidential Information of UR, do not distribute without permission
Page 6 of 15
Doc No. :T20178
www.universal-robots.com
PrimaryInterface 类成员方法:
public PrimaryInterface(string IPAddress, int port = 30001)
PriamryInterface 类构造方法,IPAddress 字符串是被连接机器人的 IP 地址,例如“127.0.0.1”,port 默认
是 30001,即 Primary interface,如果选择 port 不等于 30001,那么 port 将被设置为 30002, Secondary
interface。
public void startPrimary()
该方法用于启动 PrimaryInterface 的后台同步,只有启动了后台同步,才可以读取机器人的状态
(getRobotState),订阅的事件才会生效,才能够发送脚本给机器人控制器。
public robotState getRobotState()
此方法用于用于获取机器人的状态(数据每 100ms 更新一次),返回 robotState 类型数据。robotState 包含数
据包括:robotModeData, jointData, cartesianInfo, masterboardData, toolData, kinematicsInfo,
configurationData, forceModeData, additionalInfo 和 calibrationData,详情请见 client_interface(底部) 。
机器人每次发回的数据并不一定包含上面所有的数据,因此在读取之前一定要检查是否为空(null)。
public bool sendScript(string scripts)
脚本发送方法,脚本发送格式请参考《UR 机器人与 PC 通讯》。发送成功返回 True,否则返回 False。
public void stopPrimary()
停止 PrimaryInterface 的后台同步,订阅的事件不会再被触发(仍需取消订阅),脚本不能被发送。
PrimaryInterface 类使用方法:
1、 添加对 communication 和 Datatype(含 Vector6)命名空间;
using URSDK.RobController.Communication;
using URSDK.RobController.Datatype;
2、 新建 PrimaryInterface 对象,如果端口号是 30002,那么连接的是 Secondary interface;
PrimaryInterface primaryInt = new PrimaryInterface(“192.168.1.30”,30001);
3、 启动后台同步;
primaryInt.startPrimary();
4、 读取 robotState 数据;
robotState state=primaryInt.getRobotState();
5、 使用 robotState 中的数据;
if(state.cartesianInfo!=null){
Vector6 tcp=state.cartesianInfo.tcp;
}
6、 给机器人发送脚本,返回发送成功与否结果;
Contains Confidential Information of UR, do not distribute without permission
Page 7 of 15
Doc No. :T20178
www.universal-robots.com
bool sendSucc=primaryInt.sendScript(“set_standard_digital_out(0,True)”);
7、 使用完成之后,停止后台同步,释放资源;
primaryInt.stopPrimary();
事件订阅:
Primary interface(30001)还提供一些机器人事件消息(Secondary interface 无),可以根据需求来订阅,
事件需要在后台同步开始后才能触发。
Primary interface 事件:
1. globalVariablesSetupMessageEvent, 全局变量设置事件(程序开始运行时触发)
2. globalVariablesUpdateMessageEvent, 全局变量更新事件(程序运行中触发)
3. keyMessageEvent, 按钮事件(如程序启动或停止)
4. labelMessageEvent, 标签事件(脚本中$标志行)
5. requestValueMessageEvent, 请求数据事件(例如 TP 中的 popup message)
6. robotCommMessageEvent, 机器人通讯事件(如 log 中的部分信息)
7. runtimeExceptionMessageEvent, 程序运行时错误事件(如程序中的报错)
8. safetyModeMessageEvent, 安全模式事件(如 log 中的部分消息)
9. textMessageEvent, 文本数据事件(如脚本中 textmsg 发送数据到 log)
10. varMessageEvent, 已废弃。
11. versionMessageEvent, 控制器版本消息(一般会在首次连接时发送)
事件的订阅和使用方法(这里以 keyMessage 为例,其余类似):
//Primary Interface 对象实例化
public PrimaryInterface demoInstance=new PrimaryInterface("192.168.1.30");
public keyMessage msg;
public void yourEventHandler(object sender, keyMessageEventArgs e){
msg=e.keyMessage; //事件处理函数实现
}
demoInstance.keyMessageEvent+=yourEventHandler; //事件注册
demoInstance.startPrimary(); //启动同步
... ... //其他处理
demoInstance.stopPrimary(); //停止同步
demoInstance.keyMessageEvent-=yourEventHandler; //事件取消注册
Contains Confidential Information of UR, do not distribute without permission
Page 8 of 15