ROS noetic与UR3真实机械臂通信

Ubuntu版本:20.04
ROS版本:noetic

机械臂:优傲机器人ur3,控制器cb3,软件版本3.14

任务描述:机器人操作系统ros通过网线连接ur3,实现二者通信,使用ros下的moveit控制ur3运动

1 ROS端设置

1.1下载安装功能包

首先建立ros工作空间,并安装编译UR机器人功能包,具体步骤可以参考下面的博主教程:
ubuntu20.04安装ros-noetic,moveit,ur机器人驱动…指南!.
那个“float32 payload“ 需要改为“float32 mass“, 否则出现错误:

Universal_Robots_ROS_Driver/ur_robot_driver/src/hardware_interface.cpp:396:39: error: ‘ur_msgs::SetPayload::Request’ {aka ‘struct ur_msgs::SetPayloadRequest_<std::allocator<void> >} has no member named ‘mass’ 396 | << " set_payload(" << req.mass << ", [" << req.center_of_gravity.x << ", " << req.center_of_gravity.y | ^~~~ 

ur的驱动有ur_driver、ur_modern_driver、ur_robot_driver,但是现在官方建议采用ur_robot_driver,该驱动在git上的地址为:https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git.

ur_robot_driver的下载及安装过程如下:

# enter catkin workspace
cd catkin_ws/src
 
# clone the driver
git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver
 
# install dependencies
rosdep install --from-paths src --ignore-src -y
 
# build the workspace. 
catkin_make
 
# activate the workspace (ie: source it)
source devel/setup.bash

1.2 修改控制器参数

ur_robot_driver安装完成后,ur3_moveit_config的默认的控制器名字需与ur3_bringup.launch的controllers标签中的scaled_pos_traj_controller参数对应,默认为空,所以需要进行修改,参照下图修改控制器名字为:scaled_pos_traj_controller
此处可参考以下博主的说明:etson AGX Xavier避坑指南(四)
在这里插入图片描述

1.3 设置IP

设置ros所在的设备端IP,参照下图:

在这里插入图片描述

2 UR3机器人端设置

2.1 UR3示教器安装urcap

要在ros上使用ur_robot_driver控制真实的ur5运动,需要在ur5机器人上安装externalcontrol-1.0.urcap,它类似一个插件,接受ros端的消息再控制ur5运动。该urcap位于Universal_Robots_ROS_Driver/ur_robot_driver的resources文件夹内。要安装此URCap,要求PolyScope的版本不得低于3.7(本机3.14版本也能成功安装)。

1、externalcontrol-1.0.urcap拷贝到U盘中;

2、U盘插入示教器中;

3、在ployscope的设置机器人中,点开URCap,找到externalcontrol-1.0.urcap,选中,然后点击重启。

在这里插入图片描述

2.2 网络设置

UR3机器人的IP设置:需要与ROS设备端处于同一局域网。
在这里插入图片描述

2.3 其他配置

示教器主菜单–>为机器人编程–>安装设置中,确保EtherNet/IP和PROFINET设置为Disable。
接着设置External Control的参数,host’s ip是ros设备端设备的IP,端口号:50002(即和ur3_bringup.launch的script_sender_port标签中的参数一致,如下图所示)。
在这里插入图片描述

2.4 外部控制程序编写

新建一个空程序,点击“结构”,点击ExternalControl;点击右上角“文件”,点击“保存。当需要与ros连接时,需要运行该程序点击“加载程序”,选择刚才保存的程序。

3 调试

3.1 启动UR5

使用网线连接ur5和ros端设备,运行上述编写的ur程序。

3.2 启动ros端功能包

3.2.1 单关节控制

首先需要安装rqt_joint_trajectory_controller和industrial_robot_status_interface

sudo apt-get install ros-noetic-ros-control ros-noetic-ros-controllers
sudo apt-get install ros-melodic-industrial-robot-status-interface

测试是否安装成功:

rosrun rqt_joint_trajectory_controller rqt_joint_trajectory_controller

若出现No module named ‘pyqt5‘,解决办法如下:

pip install PyQt5 PyQt5-tools

3.2.2 Moveit!控制

  1. 进行机器人标定,并写入路径yaml文件。要注意标定文件路径是否正确,IP是否正确;此处IP为示教器上的IP
roslaunch ur_calibration calibration_correction.launch robot_ip:=192.168.1.60 target_filename:="$(rospack find ur_robot_driver)/calibration/my_robot_calibration.yaml"
  1. 启动机器人驱动程序,ip需要根据机器人ip调整–即示教器IP
roslaunch ur_robot_driver ur3_bringup.launch robot_ip:=192.168.1.60 [reverse_port:=REVERSE_PORT] kinematics_config:=$(rospack find ur_robot_driver)/calibration/my_robot_calibration.yaml
  1. 启动MoveIt!允许运动规划运行的节点
roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch limited:=true
  1. 启动RViz
 roslaunch ur3_moveit_config moveit_rviz.launch config:=true

在rviz中给ur5一个目标位姿,先plan看一下能否规划成功、是否碰撞,然后execute执行,观察真实ur5的运动。这个过程一定要注意安全,手放在急停上,时刻准备按下急停。

附上代码(UR10e):

roslaunch ur_calibration calibration_correction.launch robot_ip:=192.168.1.60 target_filename:="$(rospack find ur_robot_driver)/calibration/my_robot_calibration.yaml"
roslaunch ur_robot_driver ur10e_bringup.launch robot_ip:=192.168.1.60 [reverse_port:=REVERSE_PORT] kinematics_config:=$(rospack find ur_robot_driver)/calibration/my_robot_calibration.yaml
roslaunch ur10e_moveit_config moveit_planning_execution.launch limited:=true
roslaunch ur10e_moveit_config moveit_rviz.launch config:=true
  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值