建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接

下一篇:用Socket套接字通过TCP/IP以太网实现虚拟机Ubuntu中ROS与Windows10中ABB RobotStudio的协同工作

序言

ABB Robot Studio可以非常轻松地建立ABB机械臂仿真环境,并且Rapid代码可以直接( 只是理论上的)导入到ABB机械臂控制器,控制实际的机械臂 。而ROS系统则有着丰富的智能控制接口,可以让机械臂的程序设计变得异常简单(难度集中在建立连接还有通信部分了)。为了让ABB Robot Studio能够调用ROS机器人操作系统中的功能,让两者优势互补,就需要实现两者间的通信(敲黑板)。
实际应用中,只需要一台运行着Ubuntu系统的计算机通过网线接在ABB IRC5 机器人控制器的以太网接口上就行了。本文由于实验条件有限(没钱买ABB机械臂或者第二台电脑),因此所有仿真工作全部在同一台电脑上完成。
接下来让我们按步骤实现ROS与ABB Robot Studio的连接和通信。

运行环境及软件版本

由于运行环境同时涉及了两个操作系统和多个软件,保不准其他运行环境会出现什么奇异现象,因此这里先声明一下我实验成功的配置:

计算机配置
操作系统Windows10 家庭中文版
内存(RAM)16GB
处理器Intel i7-8750H CPU2.20Hz
软件版本系统
VMware® Workstation 15 Pro15.0.4 build-12990004Windows10
ABB Robot Studio6.08Windows10
ROSMelodicUbuntu18.04
VMware® Workstation 15 Pro15.0.4下载
ABB Robot Studio 6.08下载
ROS Melodic官方安装步骤

设置静态IP地址

Windows10静态IP地址设置

设置Windows10的静态IP地址是为了确定仿真机器人的IP地址。当使用实际机械臂时,直接通过控制器查看机械臂IP地址即可,该步骤跳过。

打开命令提示符输入

ipconfig

在这里插入图片描述
打开 控制面板\网络和 Internet\网络连接在这里插入图片描述
由于我连的是WiFi,所以找到WLAN,右击打开WLAN属性,找到Internet协议版本4(TCP/IPv4)一项,选中后点击属性。如果你用的是网线,就找以太网,其他步骤一样。
在这里插入图片描述
选择“使用下面的IP地址”,因为我的计算机所属网段是192.168.3,所以IP地址框内输入一个没有被其他设备使用过的IP,如192.168.3.87;子网掩码会自动填充255.255.255.0;默认网关即路由器管理地址。DNS服务器填入8.8.8.8。在这里插入图片描述
设置完后在进入命令提示符输入

ipconfig

确认静态IP地址是否设置成功。

虚拟机 Ubuntu静态IP地址设置

虚拟机设置

分别在编辑虚拟机设置和Workstation-编辑-虚拟网络编辑器中完成配置在这里插入图片描述
在这里插入图片描述

Ubuntu静态IP地址设置

进入Ubuntu,打开终端
输入命令,查看自己网卡编号(如图中是ens33)

ip a

在这里插入图片描述
接下来输入命令,用VIM编辑interfaces文件。要是不会VIM,从文件夹用记事本打开是一样的。

sudo vi /etc/network/interfaces

将内容改为:

auto ens33
#把 lo改为ens33
iface ens33 inet static
#改为static
address 192.168.3.88 
#IPv4地址,网段要与电脑一致(192.168.3)
#最后一位自己分配一个没被使用过的数字(这里设了88)
gateway 192.168.3.1
 #网关地址(路由器地址),要与电脑一致
netmask 255.255.255.0

在这里插入图片描述
编辑完成后按esc,再依次按下:wq就可以保存退出了。用记事本编辑的直接保存即可。
在终端输入命令重启网络。

sudo /etc/init.d/networking restart

然后ping一下局域网内的ip试试能不能ping的通,ping通了就说明内网没问题了。

ping 192.168.3.1

在这里插入图片描述
要连通外网,还需要编辑一下resolved.conf文件

sudo vi /etc/systemd/resolved.conf

删掉DNS前面的#,在后面输入电脑的DNS服务器地址8.8.8.8
在这里插入图片描述
重启虚拟机完成配置。

安装ROS的ABB支持包

打开Ubuntu的终端,输入以下命令行:

  • 创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source devel / setup.bash
  • 下载安装abb支持包
# 切换到工作空间下的路径
cd $HOME/catkin_ws

# 如果需要最新版本的程序,可以用kinetic替换kinetic-devel
git clone -b kinetic-devel https://github.com/ros-industrial/abb.git src/abb
git clone -b kinetic-devel https://github.com/ros-industrial/abb_experimental.git src/abb_experimental

#确认安装包及其依赖包是否到位,若不到位则会自动更新
rosdep update

#如果ROS系统不是melodic,需要按情况替换
rosdep install --from-paths src/ --ignore-src --rosdistro melodic

# 用catkin_tools编译程序包
catkin build

#激活abb支持包
#如遇找不到package而roslaunch报错,也请尝试运行下面这个命令
source $HOME/catkin_ws/devel/setup.bash

配置ABB Robot Studio

建立一个支持ROS的ABB Robot Studio工程

此部分也可以参考ROS官网教程
a. 通过单击在安装过程中放置在桌面上的图标来打开RobotStudio。
b. 在打开的对话框中,创建一个空工作站。
c. 选择ABB库,然后选择要建模的机器人类型。
d. 产生了机器人。您可以缩放(滚轮),移动(CTRL +拖动鼠标)和旋转(CTRL + SHIFT +拖动鼠标)。
e. 选择机器人系统,然后从布局中选择…
f. 给系统起个名字,其余选项保持不变,然后按Next>。
g. 应该只有一种机制,因此只需按Next>即可。
h. 单击选项…,然后选择616-1 PC接口和623-1多任务。
i. 点击完成。

在继续进入RobotStudio之前,您需要将ROS驱动程序的RAPID文件放在创建的手臂的控制器上。

  1. 转到 文档 \ RobotStudio \ Systems并选择与工作站名称相对应的文件夹。
  2. 打开HOME目录。
  3. 创建一个名为ROS的新目录。
  4. 复制abb_common / rapid(https://github.com/ros-industrial/abb/tree/hydro-devel/abb_common/rapid)(Hydro和更早版本)或abb_driver / rapid(https://github.com/ros-industrial/abb/tree/indigo-devel/abb_driver/rapid)(Indigo和更高版本)目录中的所有文件,并将它们放在新创建的ROS目录中。

现在打开刚才放在~ \ Home \ ROS 目录下的 ROS_socket.sys并更改以下行:

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

按先前配置的Windows10静态IP地址
在这里插入图片描述
把“GetSysInfo(\ LanIp)”变成Windows10的静态IP地址:

IF(SocketGetStatus(server_socket)= SOCKET_CREATED)SocketBind server_socket,“ 192.168.3.87”,端口;

在ABB Robot Studio工程中安装和配置ROS-Industrial ABB Driver

现在,可以在RobotStudio中安装ROS-Industrial驱动程序了:

选择选项卡控制器,然后选择示教器。

首先进入手动模式,方法是选择操纵杆左侧的按钮,然后将钥匙转到垂直位置。
在这里插入图片描述

  1. 创建任务
    在控制器选项卡->配置->Controller->Task->鼠标右击,新建Task
    在这里插入图片描述
    创建如下表所示三个Task
NameTypeTrust LevelEntryMotion Task
ROS_StateServerSEMISTATICNoSafetymainNO
ROS_MotionServerSEMISTATICSysStopmainNO
T_ROB1NORMALmainYES
在这里插入图片描述
  1. 创建信号
    在“控制器”选项卡->配置-> I / O system->signal下,右键单击“新信号”
    在这里插入图片描述
NameType of Signal
signalExecutionErrorDigital Output
signalMotionPossibleDigital Output
signalMotorOnDigital Output
signalRobotActiveDigital Output
signalRobotEStopDigital Output
signalRobotNotMovingDigital Output
signalRosMotionTaskExecutingDigital Output

在这里插入图片描述

  1. 将信号连接到系统输出
    在“控制器”选项卡->“配置”->“ I/O system”->“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
  1. 将模块加载到任务
    “控制器”选项卡->“配置”->“控制器”->“automatic loading of modules”,右键单击“新建automatic loading of modules”。
FileTaskInstalledAll Tasks Hidden
HOME:/ROS/ROS_common.sysNOYESNO
HOME:/ROS/ROS_socket.sysNOYESNO
HOME:/ROS/ROS_messages.sysNOYESNO
HOME:/ROS/ROS_stateServer.modROS_StateServerNONO
HOME:/ROS/ROS_motionServer.modROS_MotionServerNONO
HOME:/ROS/ROS_motion.mod T_ROB1NONONO
在这里插入图片描述
最后,千万记得在防火墙中开启abb仿真控制器权限,否则是无法通讯的,即使ping通了也不行
在这里插入图片描述

建立Robotstudio和ROS的通信

设置运行模式为 连续
在这里插入图片描述
打开Robotstudio示教器,点击PP 移至Main
在这里插入图片描述
点击程序启动按钮在这里插入图片描述
此时应该会自动弹出程序消息,waiting for connection
在这里插入图片描述
与此同时,程序指针应该指向
“WaitTime 0.05; ! Throttle loop while waiting for new command”
在这里插入图片描述
另一方面,打开虚拟机,启动Ubuntu.
打开新终端输入

roscore

再打开一个新终端,输入

$ source $HOME/catkin_ws/devel/setup.bash

然后输入,robot_ip就是设置的Windows10静态IP,如果连的是真实机械臂,那就是机械臂的IP地址

roslaunch abb_irb120_moveit_config moveit_planning_execution.launch sim:=false robot_ip:= 192.168.3.87

如果没有出现问题,示教器应该会弹出新的对话,显示connected
在这里插入图片描述

发送和接收消息

ABB Robot Studio与ROS的通信是用Socket套接字的方式通过以太网连接实现的。
如何在ABB Robot Studio的Rapid程序中实现socket套接字的打包、解包、消息收发,还有如何编写程序调用ROS的功能实现ABB Robot Studio与ROS协同工作?
在“用Socket套接字通过TCP/IP以太网实现虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的协同工作”一文中将继续分享。

  • 7
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值