2.ROS与ABB1600机器人联合调试(Robostudio仿真篇)

1.前言

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

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

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

2.1创建机器人

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

step2: 基本->机器人模型库,选择机器人1600
在这里插入图片描述
step3: 点击确定
在这里插入图片描述

step4: 将机器人成功导入

在这里插入图片描述

2.2虚拟控制柜

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


step2: 如下图所示,选择RoboWare版本号和机器人的型号,并勾选自定义选项,然后点击确定。
在这里插入图片描述
step3: 系统会跳转到这个界面。
在这里插入图片描述
step4: 这里我们要选择两个选项的开通,点击Communication 616-1 PC Interface 和 Engineering Tools 623-1 Multitasking
在这里插入图片描述
在这里插入图片描述
step5: 下面就是我们默认开通的选项:语言可以在第一项改成中文的
在这里插入图片描述
step6: 完成以上设置以后点击确定即可,等待roboStudio完成控制柜的创建。
创建完成以后就可以看见控制器里面有了一些数据参数。
在这里插入图片描述
step7: 在Home文件夹创建一个ROS文件夹

在这里插入图片描述

**step8:**这里需要在windows端的防火墙中开启robostudio的权限。
在这里插入图片描述

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

**step1:**从github上下载的机器人文件,找到abb_driver/rapid文件夹,将rapid目录中的文件夹复制到机器人控制器中。蓝奏云下载
在这里插入图片描述

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

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

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

**在这里插入图片描述**
**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

如下图所示:
在这里插入图片描述

在这里插入图片描述

注意:
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

创建完成后,如图所示:
在这里插入图片描述

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

创建后的如图所示:
在这里插入图片描述

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

更改后如图所示:
在这里插入图片描述

2.8一些其他的细节配置

step1 在RAPID中把运行模式改成连续,这样程序模块可以连续循环执行。
在这里插入图片描述

step2 机器人手动和自动的选择,配置完成以后选择自动还是手动启动。
手动配置
在这里插入图片描述
自动配置:
在这里插入图片描述

step3 选择完成以后,重新启动控制器并应用更改。
使用P-Start重新启动控制器
ABB →重新启动→高级→ P-Start →确定
在这里插入图片描述

2.9ABB内部启动ROS连接程序

step1: 启动完成以后,打开示教器,可以看到是这样的:
在这里插入图片描述

在这里插入图片描述
下面的操作时把T_ROB1启动起来。

step2: 点击示教器->程序编辑器
在这里插入图片描述
step3: 调试->PP移至Main->启动程序按键
在这里插入图片描述
step4: 启动成功以后三个任务都启动了,就可以等待ROS连接ABB仿真机器人了。
在这里插入图片描述
这里可以查看输出消息的日志。
在这里插入图片描述
step5: 这里建议修改一下机器人的关节速度。
在这里插入图片描述

在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/lqsdddd/article/details/127936647