logo资料库

URSDK (.Net 4.0) 快速指南.pdf

第1页 / 共15页
第2页 / 共15页
第3页 / 共15页
第4页 / 共15页
第5页 / 共15页
第6页 / 共15页
第7页 / 共15页
第8页 / 共15页
资料共15页,剩余部分请下载后查看
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
分享到:
收藏