ur_robot_driver适用于polyscope >= 3.7 版本的ur机械臂和CB>=5的ur-e机械臂。笔者机器版本为3.12。 目前ur臂的驱动有三个:ur_driver, ur_modern_driver, ur_robot_driver。   ur_driver和ur_modern_driver已经被官方弃用,ur_driver适用于CB1和CB2(不是很清楚),ur_modern_driver适用于CB2、CB3(具体到哪个子版本不是很清楚,我在CB3.12上是不适用的,国外网友反应CB3.9.1还是适用的,但是3.10不适用,可能就是CB3.10一下吧)。 来看一下ur_modern_driver和ur_robot_driver的对比:   微信图片_20210101162045   具体的驱动的详细介绍请参考: universal_robot_ros_wiki ur_robot_driver ur_robot_driver_doc   下面我们将会使用ROS和ur_robot_driver来驱动真机UR臂。  

一、下载ros package

 
source /opt/ros/$ROS_DISTRO/setup.bash
mkdir -p ur_ws/src && cd ur_ws
git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver
git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot
sudo apt update -qq
rosdep update
rosdep install --from-paths src --ignore-src -y
catkin_make
source devel/setup.bash
  如果执行rosdep init 和 rosdep install失败,请参考ROS -sudo rosdep init 失败解决方法 为了工作空间之间不相互干扰,推荐每次手动source setup.bash,如果只有一个工作空间,也可以直接写在bashrc里面。  

二、配置示教器

  将Universal_Robots_ROS_Driver/ur_robot_driver/resources路径下的externalcontrol.urcap文件拷贝到U盘安装到示教器上。   安装完成后,按以下步骤操作:   微信图片_20210101162137   微信图片_20210101162141   微信图片_20210101162143   设置完成后返回   微信图片_20210101162308   微信图片_20210101162311   微信图片_20210101162313   微信图片_20210101162317   静止在这个页面不要动.  

三、配置Ubuntu网络

  使用externalcontrol,要求使用静态IP,并且指定了IP段,而且因为笔者电脑有两个有线网卡,所以我们选择网线直线,印象中通过路由器分配静态IP不是那么直接。 使用网线直线电脑和UR的控制柜。 第二步已经将示教器配置好,下面来配置Ubuntu。  

1. 查看显卡名称

 
ifconfig
  微信图片_20210101162533   可以看到enp2s0正是连接控制柜的网卡。在没配置之前,这个没有inet addr属性,所以一看便知。  

2.设置静态IP

 
sudo vi /etc/network/interfaces
  微信图片_20210101162757   添加如图所示的代码。因为示教器上的externalcontrol显示要设置成这个指定的IP。网关和子网掩码可按上图设置。网管必须和IP在同一网段,即最后一位的数字可以不一样,且范围为[0,255]。指定静态IP时必须指定dns server,否则连接互联网的网卡有可能无法解析DNS。 这里虽然设置的是8.8.8.8,但是实际的dns server地址并不是8.8.8.8,而是由ubuntu内置的networkmanager程序dnsmasq程序接管,由它来分配dns server。   执行  
sudo vi /etc/resolv.conf
  可以看到分配的nameserver为   微信图片_20210101162933   这个是本地dns的回环地址,由dnsmasq来分配,具体参考nameserver 127.0.1.1 & 如何设置nameserver。  

3.重启

 

4.现在看看右上角网络连接有没有显示对应于控制柜的网络显示已经连接。

  如果没有,执行  
sudo vi /etc/NetworkManager/NetworkManager.conf 
  将managed改为true   微信图片_20210101163220   保存退出后,执行  
sudo /etc/init.d/networking restart
  如果还是没有显示连接,重启。  

四、运行程序测试

 

1.获取标定信息

 
roslaunch ur_calibration calibration_correction.launch   robot_ip:=192.168.56.2 target_filename:="${HOME}/my_robot_calibration.yaml"
 

2. 运行externalcontrol

  微信图片_20210101163404  

3.运行启动文件

 
 roslaunch ur_robot_driver ur3_bringup.launch robot_ip:=192.168.56.2 kinematics_config:=${HOME}/my_robot_calibration.yaml
  上条指令ur3换成自己的机械臂类型。 当终端显示Robot ready to receive control commands.时,  
rosrun rqt_joint_trajectory_controller rqt_joint_trajectory_controller
  这时候就可以在rqt中拖动滑块来控制机械臂每个关节的转角。 具体参考ur_robot_driver