前言:
经过两天的踩坑,终于将ROS与ABB连接成功,可以通过rviz的gui界面拖动机械臂来控制实体ABB机械臂进行运动,因为网络上的教程(几位博主和ROS WIKI等)个别步骤的不完整,所以走了很多弯路,浪费了很多时间,但是经过不断修改成功后,想记录一下完完整整的过程,也帮助大家后续进行连接时节省时间,顺利实验!
环境:
目前有四种不同的连接环境,可以大致分为:
1.电脑一台:此电脑安装了虚拟机,里面安装了Ubuntu系统,Windows环境下安装了robot studio,但需要电脑配置高一些,因为我不是这个方法,所以用此方法的同学可以参考一下这个博主(https://blog.csdn.net/u014697321/article/details/106434289)的虚拟机配置过程,其他过程与我的几乎一样。
2.电脑两台:Ubuntu18.04+ROS-melodic(ROSPC)和Windows10+RobotStudio6.07(ROBOTPC)。即:使用ROSPC控制ROBOTPC的仿真环境下的机器人进行控制,还没涉及到实体机器人。如这个博主教程(ROS连接ABB机械臂调试详细教程-ROS(indigo)和ABB RobotStudio 6.03.02-_zhangrelay的博客-CSDN博客_ros 连abb)。
3.电脑两台,实体机械臂一台:Ubuntu18.04+ROS-melodic(ROSPC)和Windows10+RobotStudio6.07(ROBOTPC),ABB实体机械臂。此方法目前没有详细教程,大致思路是先按照第二种环境的连接,成功后再将ROBOTPC与ABB实体机械臂进行连接,将控制器配置好,再将ROSPC连接实体机械臂。
4.电脑一台,实体机械臂一台:Windows10+RobotStudio6.07(ROBOTPC)&Ubuntu18.04+ROS-melodic(ROSPC)和ABB实体机械臂。此方法目前也没有教程,思路和环境3一样,只是电脑只有一台。
小结:我的环境属于后三种,我将从第二种环境开始实验,即:此教程环境是电脑两台:Ubuntu18.04+ROS-melodic(ROSPC)和Windows10+RobotStudio6.07(ROBOTPC)。后续会继续出后两种环境的教程,当然都是基于此教程,比较简单了。
正文:
一、Windows10+RobotStudio6.07(ROBOTPC)
1.打开robot studio,并建立新的空工作站。
(!!记住空工作站的路径,后续要用到!!)
2.从ABB模型库导入机械臂模型
(因为目前ROS支持的ABB机械臂种类不全,所以先看一下自己的机械臂型号支不支持,不支持的话啥教程也不行了~)
3.建立机器人系统
(这块的重点就是加入:616-1 PC接口和623-1多任务)
4. 将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目录中。
5.修改刚才放在~ \ Home \ ROS 目录下的 ROS_socket.sys
(就是将自己的IPv4地址换上)
5.1查找自己的IP地址:
(1)在Windows下搜索“运行”
(2)在运行里输入“cmd”打开终端
(3)在命令行输入“ipconfig”,然后点击键盘回车
!!!注意:千万记得在防火墙中开启abb仿真控制器权限,否则是无法通讯的,即使ping通了也不行
5.2打开刚才放在~ \ Home \ ROS 目录下的 ROS_socket.sys
将IF(SocketGetStatus(server_socket)= SOCKET_CREATED)SocketBind server_socket,GetSysInfo(\ LanIp),端口;
改为IF(SocketGetStatus(server_socket)= SOCKET_CREATED)SocketBind server_socket,“ 192.168.1.174”,端口;
(!!这里的地址是我的示例,大家要改成自己的地址!!)
6.打开示教器,调整为手动模式
7.创建任务(ROS WIKI的教程http://wiki.ros.org/action/show/abb_driver/Tutorials?action=show&redirect=abb%2FTutorials)
按照截图步骤依次创建三个任务
8.创建信号
按照截图步骤依次创建七个信号
9.将信号连接到系统输出
按照截图步骤依次连接七个信号到系统输出
10. 将模块加载到任务
按照截图步骤依次将模块加载到任务
11. 建立Robotstudio和ROS的通信(以下均是细节,我曾因为这些细节,失败了很多次,几乎大部分的细节网上的博主都没有提,所以我这里为大家避坑)
11.1设置运行模式为 “连续”
11.2重启控制器
11.3重启后首先将六个文件同步到工作站!!!(我之前的无数次就是因为没有这一步出现了好多红叉错误,一定不要忘了这一步!!!)
然后打开示教器,然后调节为手动模式,并且使能,再点击PP 移至Main,再点击运行按钮。
此时:会自动弹出程序消息,waiting for connection
与此同时,程序指针应该指向
“WaitTime 0.05; ! Throttle loop while waiting for new command”
到此ROBOTPC配置完成
二、Ubuntu18.04+ROS-melodic(ROSPC)
1.安装Ubuntu系统和ROS以及moveit(大家网上找一下教程,顺利的话两个小时可以成功)
2.查看ROSPC的IP地址
在命令端输入:ifconfig
(图片是示例,两台电脑必须在同一网段(可以都在同一WiFi下),也就是192.168.1.xxx中的192.168.1必须一样才可以通信)
3.创建一个ROS 的工作空间,将ABB的机器人功能包放在工作空间下的SRC下
# 切换到工作空间下的路径
cd $HOME/catkin_ws
# 如果需要最新版本的程序,可以用kinetic替换kinetic-devel
git clone -b kinetic-devel https://github.com/ros-industrial/industrial_core.git
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
#如果ROS系统不是melodic,需要按情况替换
rosdep install --from-paths src/ --ignore-src --rosdistro melodic
#这一步一定要安装,否则会出现红色的错误,我当时找遍整个百度和谷歌都没找到正确的解决办法,还是一个知乎博主的博文写到了(https://zhuanlan.zhihu.com/p/309598227)
sudo apt-get install ros-melodic-industrial-robot-simulator
# 用catkin_tools编译程序包
Catkin_make
#激活abb支持包
#如遇找不到package而roslaunch报错,也请尝试运行下面这个命令
source $HOME/catkin_ws/devel/setup.bash
三、连接两台电脑并运行!!!
1.将一根网线插入两台电脑的网口
2.在Ubuntu端,在ABB机器人的工作空间下打开终端输入:
roslaunch abb_irb120_moveit_config moveit_planning_execution.launch sim:=false robot_ip:= 192.168.x.xxx
其中IP那块就写ROBOTPC的IP地址!!
然后就大功告成了,大家请看我的视频:
(【Ubuntu系统下使用ROS(moveit )连接ABB实体机器人(irb120)】 https://www.bilibili.com/video/BV1AW4y1n7UL?share_source=copy_web&vd_source=66955823a6c8b76ecbf18611feb3d4c8)