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

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

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

  • 序言
  • 运行环境及软件版本
  • 设置静态IP地址
    • Windows10静态IP地址设置
    • 虚拟机 Ubuntu静态IP地址设置
      • 虚拟机设置
      • Ubuntu静态IP地址设置
  • 安装ROS的ABB支持包
  • 配置ABB Robot Studio
    • 建立一个支持ROS的ABB Robot Studio工程
    • 在ABB Robot Studio工程中安装和配置ROS-Industrial ABB Driver
  • 建立Robotstudio和ROS的通信
  • 发送和接收消息

序言

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 Pro 15.0.4 build-12990004 Windows10
ABB Robot Studio 6.08 Windows10
ROS Melodic Ubuntu18.04

VMware® Workstation 15 Pro15.0.4下载
ABB Robot Studio 6.08下载
ROS Melodic官方安装步骤

设置静态IP地址

Windows10静态IP地址设置

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

打开命令提示符输入

ipconfig

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

ipconfig

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

虚拟机 Ubuntu静态IP地址设置

虚拟机设置

分别在编辑虚拟机设置和Workstation-编辑-虚拟网络编辑器中完成配置建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第5张图片
建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第6张图片

Ubuntu静态IP地址设置

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

ip a

建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第7张图片
接下来输入命令,用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

建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第8张图片
编辑完成后按esc,再依次按下:,w,q,!就可以保存退出了。用记事本编辑的直接保存即可。
在终端输入命令重启网络。

sudo /etc/init.d/networking restart

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

ping 192.168.3.1

建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第9张图片
要连通外网,还需要编辑一下resolved.conf文件

sudo vi /etc/systemd/resolved.conf

删掉DNS前面的#,在后面输入电脑的DNS服务器地址8.8.8.8
建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第10张图片
重启虚拟机完成配置。

安装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地址
建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第11张图片
把“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驱动程序了:

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

首先进入手动模式,方法是选择操纵杆左侧的按钮,然后将钥匙转到垂直位置。
建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第12张图片

  1. 创建任务
    在控制器选项卡->配置->Controller->Task->鼠标右击,新建Task
    建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第13张图片
    创建如下表所示三个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

建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第14张图片

  1. 创建信号
    在“控制器”选项卡->配置-> I / O system->signal下,右键单击“新信号”
    建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第15张图片
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

建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第16张图片

  1. 将信号连接到系统输出
    在“控制器”选项卡->“配置”->“ I/O system”->“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
  1. 将模块加载到任务
    “控制器”选项卡->“配置”->“控制器”->“automatic 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
HOME:/ROS/ROS_motionServer.mod ROS_MotionServer NO NO
HOME:/ROS/ROS_motion.mod T_ROB1 NO NO NO

建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第17张图片
最后,千万记得在防火墙中开启abb仿真控制器权限,否则是无法通讯的,即使ping通了也不行
建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第18张图片

建立Robotstudio和ROS的通信

设置运行模式为 连续
在这里插入图片描述
打开Robotstudio示教器,点击PP 移至Main
建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第19张图片
点击程序启动按钮在这里插入图片描述
此时应该会自动弹出程序消息,waiting for connection
建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第20张图片
与此同时,程序指针应该指向
“WaitTime 0.05; ! Throttle loop while waiting for new command”
建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第21张图片
另一方面,打开虚拟机,启动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
建立虚拟机Ubuntu中ROS与Windows10中ABB Robot Studio的通信连接_第22张图片

发送和接收消息

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

你可能感兴趣的:(ABB,Robot,Studio,ROS,虚拟机,ubuntu,socket,windows,仿真器)