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,创建的明细如图,不分先后顺序。

NameTypeTrust LevelEntryMotion Task
ROS_StateServerSEMISTATICNoSafetymainNO
ROS_MotionServerSEMISTATICSysStopmainNO
T_ROB1NORMALmainYES

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

在这里插入图片描述

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

NameType of Signal
signalExecutionErrorDigital Output
signalMotionPossibleDigital Output
signalMotorOnDigital Output
signalRobotActiveDigital Output
signalRobotEStopDigital Output
signalRobotNotMovingDigital Output
signalRosMotionTaskExecutingDigital Output

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

2.6将信号连接到系统输出

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

Signal NameStatusArg 1Arg 2Arg 3Arg 4
signalExecutionErrorExecution ErrorN/AT_ROB1N/AN/A
signalMotionPossibleRunchain OKN/AN/AN/AN/A
signalMotorOnMotors On StateN/AN/AN/AN/A
signalRobotActiveMechanical Unit ActiveROB_1N/AN/AN/A
signalRobotEStopEmergency StopN/AN/AN/AN/A
signalRobotNotMovingMechanical Unit Not MovingROB_1N/AN/AN/A
signalRosMotionTaskExecutingTask ExecutingN/AT_ROB1N/AN/A

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

2.7 把模块配置到任务

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

FileTaskInstalledAll TasksHidden
HOME:/ROS/ROS_common.sysNOYESNO
HOME:/ROS/ROS_socket.sysNOYESNO
HOME:/ROS/ROS_messages.sysNOYESNO
HOME:/ROS/ROS_stateServer.modROS_StateServerNONONO
HOME:/ROS/ROS_motionServer.modROS_MotionServerNONONO
HOME:/ROS/ROS_motion.modT_ROB1NONONO

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

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系统的连接了。

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值