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

发布时间:2023-09-15 13:00

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

ipconfig

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

虚拟机 Ubuntu静态IP地址设置

虚拟机设置

分别在编辑虚拟机设置和Workstation-编辑-虚拟网络编辑器中完成配置\"建立虚拟机Ubuntu中ROS与Windows10中ABB
\"建立虚拟机Ubuntu中ROS与Windows10中ABB

Ubuntu静态IP地址设置

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

ip a

\"建立虚拟机Ubuntu中ROS与Windows10中ABB
接下来输入命令,用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
编辑完成后按esc,再依次按下:,w,q,!就可以保存退出了。用记事本编辑的直接保存即可。
在终端输入命令重启网络。

sudo /etc/init.d/networking restart

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

ping 192.168.3.1

\"建立虚拟机Ubuntu中ROS与Windows10中ABB
要连通外网,还需要编辑一下resolved.conf文件

sudo vi /etc/systemd/resolved.conf

删掉DNS前面的#,在后面输入电脑的DNS服务器地址8.8.8.8
\"建立虚拟机Ubuntu中ROS与Windows10中ABB
重启虚拟机完成配置。

安装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
把“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

  1. 创建任务
    在控制器选项卡->配置->Controller->Task->鼠标右击,新建Task
    \"建立虚拟机Ubuntu中ROS与Windows10中ABB
    创建如下表所示三个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

  1. 创建信号
    在“控制器”选项卡->配置-> I / O system->signal下,右键单击“新信号”
    \"建立虚拟机Ubuntu中ROS与Windows10中ABB
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

  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
最后,千万记得在防火墙中开启abb仿真控制器权限,否则是无法通讯的,即使ping通了也不行
\"建立虚拟机Ubuntu中ROS与Windows10中ABB

建立Robotstudio和ROS的通信

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

发送和接收消息

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

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号