本书以ABB工业机器人为例,从工业机器人与视觉应用,工业机器人与上位机联合开发(c#),工业机器人与工厂级平台联合开发(WebService)等方面,将工业机器人的二次开发方法与过程深入浅出地呈现给读者,也满足工厂对于工业机器人更好接入工厂智能系统的需求。其中主要内容有机器人与PLC数据传输,包括机器人与PLC传输浮点数,机器人实时发送位置、扭矩、速度、错误号等信息,以及Modbus/TCP通信;基于Socket通信的视觉引导抓取,包括相机先拍机器人后抓和机器人先抓相机后拍不同模式。最后以康耐视In-Sight为例进行实例讲解;基于PC SDK的二次开发,包括上位机对于机器人数据和I/O信号的读写与订阅,对于机器人的启动、停止、备份和重启等控制,上位机与机器人系统文件的传输与加载等。还举例讲解了ABB工业机器人最新支持的OPC UA等功能;基于RobotStudio SDK的二次开发,包括利用SDK在C#开发Smart组件,以及在RobotStudio中添加自定义功能等;基于Robot Web Services技术的二次开发,利用ABB工业机器人的Web Service接口对机器人数据进行读写,以及手动模式下的远程Jog机器人;Externally Guide Motion。外部传感器可以最快以250Hz的频率(每4ms)获取机器人的位置数据及实时控制机器人的运动。
陈瞭,浙江大学控制理论与控制工程(或智能机器人)硕士研究生,现在就职于ABB工业机器人,具有多年的工业机器人现场项目经验和工业机器人培训经验。
目 录
第1章 机器人与PLC传输数据 1
1.1 通过总线发送实数 6
1.2 机器人控制器变身交换机 11
1.3 实时发送机器人的位置 16
1.4 实时发送机器人速度 21
1.4.1 速度输出 21
1.4.2 在RobotStudio中监控速度 22
1.5 PLC读取机器人的各轴扭矩 25
1.6 发送机器人错误号 26
1.7 ModBus/TCP 31
1.7.1 读取数据 32
1.7.2 写入数据 34
第2章 基于Socket通信的视觉引导抓取 37
2.1 Socket通信 37
2.1.1 Socket通信简介 37
2.1.2 网络设置 37
2.2 创建TCP/IP通信 40
2.2.1 创建Client端的实例 41
2.2.2 创建Server端的实例 43
2.3 传输400个Float型数据 44
2.3.1 接收400个Float型数据 44
2.3.2 发送400个num型数据 46
2.4 字符串的解析 47
2.5 四元数与欧拉角 49
2.5.1 空间位姿的表示 50
2.5.2 四元数与欧拉角的转换 52
2.6 先拍照后抓取 55
2.6.1 修正单个点位位置 55
2.6.2 修正工件坐标系 62
2.7 先抓取后拍照 67
2.8 飞拍 70
2.9 康耐视视觉产品介绍 73
2.10 In-Sight软件介绍与安装 73
2.11 相机的校准与配置 76
2.12 机器人与康耐视通信 82
2.13 UDP通信 85
第3章 基于PC SDK的二次开发 88
3.1 PC SDK简介 88
3.2 机器人权限问题 90
3.3 连接机器人控制器 91
3.4 读写数据 94
3.4.1 读取RAPID数据 94
3.4.2 写入RAPID数据 98
3.5 读写数组 101
3.5.1 读取数组 101
3.5.2 写入数组 102
3.6 读写I/O 104
3.6.1 读取I/O 104
3.6.2 写入I/O 106
3.7 获取机器人当前位置 108
3.8 调节机器人运行速度 111
3.8.1 获取与设置机器人运行速度的百分比 111
3.8.2 获取与设置机器人运行速度的绝对值 112
3.9 启动与停止 116
3.9.1 上电与下电 116
3.9.2 指针复位 119
3.9.3 启动与停止 120
3.9.4 设置程序指针 121
3.10 订阅 123
3.10.1 机器人控制器状态 123
3.10.2 I/O 126
3.10.3 数据 128
3.10.4 UImessage 128
3.11 显示任务内所有数据 132
3.12 事件日志 134
3.13 传输文件与加载 137
3.13.1 从机器人控制器传输文件到PC 138
3.13.2 从PC传输文件到机器人控制器 138
3.13.3 程序模块的加载 139
3.13.4 程序模块的保存 140
3.13.5 完整程序的加载 140
3.14 备份与重启 141
3.15 获取机器人选项信息 143
3.16 获取机器人运行信息 143
3.17 OPC DA Server的配置 145
3.17.1 IRC5 OPC DA Server配置 145
3.17.2 IRC5 OPC UA Server配置 149
第4章 基于RobotStudio SDK的二次开发 157
4.1 RobotStudio SDK简介 157
4.1.1 RobotStudio SDK概述 157
4.1.2 RobotStudio SDK安装 157
4.2 第一个RobotStudio Add-In 159
4.2.1 Logger输出“Hello World” 159
4.2.2 创建Button输出Logger信息 163
4.3 我的机器人查看器Add-In 165
4.3.1 创建新视图函数 166
4.3.2 获取机械装置函数 172
4.4 自定义Smart组件 173
4.4.1 信号与Logger输出 173
4.4.2 修改Properties制作一个加法器 177
第5章 基于Robot Web Services的二次开发 181
5.1 Robot Web Services简介 181
5.2 读取机器人系统的信息 185
5.2.1 API接口查找 185
5.2.2 URL读取 185
5.2.3 网页交互式读取 187
5.2.4 基于C#的客户端读取 191
5.3 读取机器人关节数据 195
5.3.1 API接口查找 195
5.3.2 网页交互式读取 196
5.4 读取机器人状态信息 198
5.4.1 API接口查找 198
5.4.2 网页交互式读取 200
5.5 设置机器人输出信号 201
5.5.1 API接口查找 201
5.5.2 通过网页的按钮设置 202
5.6 控制机器人电机开启或关闭 204
5.6.1 API接口查找 204
5.6.2 通过网页的按钮控制 205
5.7 实现对机器人的Jog控制 206
5.7.1 API接口查找 206
5.7.2 在WinForm窗体软件中实现控制 209
第6章 Externally Guided Motion 216
6.1 EGM简介 216
6.2 EGM相关指令介绍 217
6.2.1 EGM的状态 217
6.2.2 位置流实时输出 218
6.2.3 Position Guidance实时闭环控制 219
6.2.4 基于已有轨迹的矫正 223
6.3 基于EGM Stream的实时数据流输出 223
6.3.1 创建机器人RAPID代码 223
6.3.2 创建C#可用的ProtoBuffer文件 225
6.3.3 机器人对C#端的实时数据输出 229
6.4 C#端WinForm实时移动机器人(4毫秒周期) 232
6.4.1 创建机器人RAPID代码 232
6.4.2 创建WinForm程序 233
6.4.3 完整上位机实时移动测试 235
6.5 基于LeapMotion的手势操控机器人运动 237
6.5.1 LeapMotion简介 237
6.5.2 LeapMotion数据的读取 238
6.5.3 基于LeapMotion的上位机程序 241