1.前言

本教程是以仿真ABB1600机器人为机器人主体来实现ROS的连接和使用的。

仿真实验条件
1.一台路由器或交换机
2.一台电脑windows系统
3.一台电脑Ubuntu系统

2. 使用Robostudio创建虚拟机器人(实体机器人请忽略)

2.1创建机器人

step1: 打开Robostudio,文件->新建->空工作站解决方案,如下图,完成设置以后点击创建。

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System

step2: 基本->机器人模型库,选择机器人1600

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_机器人_02


step3: 点击确定

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_git_03

step4: 将机器人成功导入

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_04

2.2虚拟控制柜

step1: 基本->机器人系统->新建系统

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_机器人_05


step2: 如下图所示,选择RoboWare版本号和机器人的型号,并勾选自定义选项,然后点击确定。

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_IP_06


step3: 系统会跳转到这个界面。

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_07


step4: 这里我们要选择两个选项的开通,点击Communication 616-1 PC Interface 和 Engineering Tools 623-1 Multitasking

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_git_08


UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_机器人_09


step5: 下面就是我们默认开通的选项:语言可以在第一项改成中文的

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_机器人_10


step6: 完成以上设置以后点击确定即可,等待roboStudio完成控制柜的创建。

创建完成以后就可以看见控制器里面有了一些数据参数。

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_11


step7: 在Home文件夹创建一个ROS文件夹

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_12

**step8:**这里需要在windows端的防火墙中开启robostudio的权限。

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_13

2.3 复制文件到机器人虚拟控制柜

**step1:**从github上下载的机器人文件,找到abb_driver/rapid文件夹,将rapid目录中的文件夹复制到机器人控制器中。蓝奏云下载

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_IP_14

需要复制的文件如下,及其功能为:

ROS_common.sys             所有文件共享的全局变量和数据类型
ROS_socket.sys             套接字处理和simple_message实现
ROS_messages.sys           特定消息类型的实现
ROS_stateServer.mod        广播关节位置和状态数据
ROS_motionServer.mod       接收机器人运动命令
ROS_motion.mod             向机器人发出运动指令

将这6个文件复制到上文建立的ROS文件夹中去。

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_git_15


**step2:**打开ROS_socket.sys并更改以下行:

IF (SocketGetStatus(server_socket) = SOCKET_CREATED) SocketBind server_socket, GetSysInfo(\LanIp), port;

将GetSysInfo(\LanIp)替换成你的电脑IP地址,我电脑在路由器中的IP地址是192.168.1.101,IP地址要用英文的双引号。即替换成
查看电脑的IP地址

IF (SocketGetStatus(server_socket) = SOCKET_CREATED) SocketBind server_socket, “192.168.1.101”, port;

2.4创建任务

打开RoboStudio创建的虚拟机器人

打开配置->Controller->Task,创建新的Task,创建的明细如图,不分先后顺序。

Name

Type

Trust Level

Entry

Motion Task

ROS_StateServer

SEMISTATIC

NoSafety

main

NO

ROS_MotionServer

SEMISTATIC

SysStop

main

NO

T_ROB1

NORMAL

main

YES

如下图所示:

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_机器人_16

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_17

注意:
1.T_ROB1运动任务可能已经存在于您的控制器上。
2.如果T_ROB1有现有的运动控制模块,您可能需要将 ROS_Motion.mod 中的main()例程重命名为ROS_main ()。在这种情况下,将T_ROB1任务的入口点设置为ROS_main()。
3.对于多机器人控制器,为每个任务指定所需的机器人(例如rob1 )
4.SEMISTATIC任务将在控制器启动时自动启动。它们是可见的,但不容易看到以进行故障排除。出于调试或开发目的,可能需要将两个ROS_*Server任务都设置为Type=NORMAL。

2.5创建信号输入输出

打开控制器配置I/O SystemSignal,然后右键单击新建 Signal

Name

Type of Signal

signalExecutionError

Digital Output

signalMotionPossible

Digital Output

signalMotorOn

Digital Output

signalRobotActive

Digital Output

signalRobotEStop

Digital Output

signalRobotNotMoving

Digital Output

signalRosMotionTaskExecuting

Digital Output

创建完成后,如图所示:

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_IP_18

2.6将信号连接到系统输出

打开控制器配置I/O SystemSystem Output,然后右键单击 新建System Output

Signal Name

Status

Arg 1

Arg 2

Arg 3

Arg 4

signalExecutionError

Execution Error

N/A

T_ROB1

N/A

N/A

signalMotionPossible

Runchain OK

N/A

N/A

N/A

N/A

signalMotorOn

Motors On State

N/A

N/A

N/A

N/A

signalRobotActive

Mechanical Unit Active

ROB_1

N/A

N/A

N/A

signalRobotEStop

Emergency Stop

N/A

N/A

N/A

N/A

signalRobotNotMoving

Mechanical Unit Not Moving

ROB_1

N/A

N/A

N/A

signalRosMotionTaskExecuting

Task Executing

N/A

T_ROB1

N/A

N/A

创建后的如图所示:

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_19

2.7 把模块配置到任务

打开控制器配置ControllerAutomatic Loading of Modules,然后右键单击新建 Automatic Loading of Modules

File

Task

Installed

All Tasks

Hidden

HOME:/ROS/ROS_common.sys

NO

YES

NO

HOME:/ROS/ROS_socket.sys

NO

YES

NO

HOME:/ROS/ROS_messages.sys

NO

YES

NO

HOME:/ROS/ROS_stateServer.mod

ROS_StateServer

NO

NO

NO

HOME:/ROS/ROS_motionServer.mod

ROS_MotionServer

NO

NO

NO

HOME:/ROS/ROS_motion.mod

T_ROB1

NO

NO

NO

更改后如图所示:

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_20

2.8一些其他的细节配置

step1 在RAPID中把运行模式改成连续,这样程序模块可以连续循环执行。

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_git_21

step2 机器人手动和自动的选择,配置完成以后选择自动还是手动启动。

手动配置

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_22


自动配置:

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_23

step3 选择完成以后,重新启动控制器并应用更改。

使用P-Start重新启动控制器

ABB →重新启动→高级→ P-Start →确定

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_24

2.9ABB内部启动ROS连接程序

step1: 启动完成以后,打开示教器,可以看到是这样的:

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_机器人_25

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_IP_26


下面的操作时把T_ROB1启动起来。step2: 点击示教器->程序编辑器

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_IP_27


step3: 调试->PP移至Main->启动程序按键

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_机器人_28


step4: 启动成功以后三个任务都启动了,就可以等待ROS连接ABB仿真机器人了。

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_git_29


这里可以查看输出消息的日志。

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_30


step5: 这里建议修改一下机器人的关节速度。

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_git_31

UiPath Orchestrator 机器人 链接 robotstudio与机器人连接_System_32

到这里就已经可以等待ROS系统的连接了。