如何使用ROS控制真实UR5机器人
PC端系统:Ubuntu 18.04
ros版本:melodic
polyscope版本:3.14
机器人:UR5/CB3
- 以下步骤亲测可用
1、Ubuntu18.04 安装ros-melodic
最好按照官网步骤来,以防秘钥有变
官网地址:http://wiki.ros.org/Installation
(1)配置Ubuntu软件库
保证 “restricted,” “universe,” and “multiverse” 被选中,以及【下载自】选项选择一个国内镜像源。
(2)设置sources.list
官网默认提供的是国外源,点击【Mirrors】进入国内源的配置,下面使用的是中科大的源。
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
(3)设置秘钥
操作不成功的话,可以将hkp://keyserver.ubuntu.com:80 换成 hkp://pgp.mit.edu:80 或者hkp://keyserver.ubuntu.com:80
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
(4)安装
sudo apt updatesudo apt install ros-melodic-desktop-full
(5)设置环境变量
当使用ros的时候,必须每启动一个终端执行一次:
source /opt/ros/noetic/setup.bash
因此可以将其写入~/.bashrc
中,就不用每次手动source
了
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc # 使修改起作用
(5)安装依赖包
sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential# 初始化rosdep
sudo apt install python-rosdep
sudo rosdep init
# rosdep update 这个命令一直没执行成功,按照网上说的修改/etc/hosts和用热点连接都没用,后来就没管它继续往下操作了
rosdep update
ROS安装的部分到这基本就结束了,接下来就是安装UR5机器人的驱动了。
2、安装Universal_Robots_ROS_driver
驱动包的github地址:https://github.com/UniversalRobots/Universal_Robots_ROS_Driver
按照README里的步骤安装即可。
PS:如果github下载失败,可以在github.com
后面加上cnpmjs.org
,即:github.com.cnpmjs.org
# source global ros
$ source /opt/ros/melodic/setup.bash# create a catkin workspace
$ mkdir -p catkin_ws/src && cd catkin_ws# clone the driver
$ git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver# clone fork of the description. This is currently necessary, until the changes are merged upstream.
$ git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot# install dependencies
$ sudo apt update -qq
$ rosdep update # 同样未成功
$ rosdep install --from-paths src --ignore-src -y# build the workspace. We need an isolated build because of the non-catkin library package.
$ catkin_make# activate the workspace (ie: source it)
$ source devel/setup.bash
- 网上有的教程说要下载
universal_robot
(地址:https://github.com/ros-industrial/universal_robot),但经过实际测验发现并不需要,因为按照上述步骤已经下载了fmauch_universal_robot
,如果再下载一个universal_robot
的话,就重复了,catkin_make
会编译出错。 - 但也不要觉得
universal_robot
和fmauch_universal_robot
都是UR机器人描述包,就可以用universal_robot
代替fmauch_universal_robot
了,这样做的话universal_robot
编译不会出错,但是Universal_Robots_ROS_Driver
编译就会出错了。
驱动的部分到此就结束了。PS:
fmauch_universal_robot
里有moveit配置包,可以直接启动在rviz中进行运动规划。
3、在实体UR机器人端安装 externalcontrol-1.0.4.urcap
这个同样有官方教程,按照教程来即可:https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/blob/master/ur_robot_driver/doc/install_urcap_cb3.md
PS:要安装externalcontrol,polyscope版本需 >= 3.7
(1)首先,从Universal_Robots_ROS_Driver/ur_robot_driver/resources
下载externalcontrol-1.0.4.urcap
,然后用自己的U盘拷贝到UR机器人。
- 控制器里面的U盘不能用
- U盘插到控制器上后,示教器上找不到文件的话,可以尝试格式化U盘,然后在【类型】中选择【所有系统和设备共用(FAT)(S)】,如下图:
当然,如果你的U盘插上去能找到文件,就不用格式化了。
接下来的操作都是在示教器上进行的。
(2)欢迎屏幕上,选择【Setup Robot】,然后选择【URCaps】进入URCaps安装屏幕
(3)单击底部的【+】以打开文件选择器,点击后可以看到存储在机器人程序文件夹或插入的USB驱动器中的所有urcap文件。 选择externalcontrol-1.0.4urcap文件,然后单击打开,最后【Restart】。
(4)重启后,选择【Program Robot】,在【Installation】选项卡中找到【External Control】,然后设置你PC电脑的IP地址,该地址应该和UR机器人在同一个局域网中,端口为50002,不用动。
(5)接下来,创建一个空程序,并将External Control程序节点插入到程序树中,然后点击命令选项卡。
(6)检查信息无误后,保存文件(软件会自动给创建的文件加上一个后缀名.urp)
(7)配置UR机器人的网络
- 前面通过.urcap文件在示教器上设置了要通信的PC端的IP地址和通信端口,现在需要配置好机器人自身的IP地址。
- 机器人需与PC端处于同一局域网内。
- 在示教器上点击【设置机器人】,进入机器人设置界面后点击【网络】,默认为禁用网络。可以先通过DHCP给机器人分配一个IP地址后,再将这个IP地址设置为静态。
- 可以在PC主机上通过
ping IP_OF_ROBOT
来测试PC主机与机器人之间的网络连接。
在机器人端进行安装和网络设置的部分就结束了。在这一部分创建的.urp文件建议不要删除,因为之后使用ROS与机器人进行通信时需要用到。
4、使用ROS驱动UR5机器人
这一部分同样可以按照GitHub上的README来:https://github.com/UniversalRobots/Universal_Robots_ROS_Driver
(1)提取标定信息
roslaunch ur_calibration calibration_correction.launch robot_ip:=IP_OF_ROBOT target_filename:="${HOME}/catkin_ws/src/fmauch_universal_robot/ur_description/config/ur5_calibration.yaml"
- 将上述的IP_OF_ROBOT替换成你自己机器人的IP地址。
(2)开启一个终端,执行roscore
(3)再开启一个新终端,启动机器人驱动程序:
roslaunch ur_robot_driver ur5_bringup.launch limited:=true robot_ip:=IP_OF_ROBOT
(3)在机器人示教器上,点击【运行程序】,选择【加载文件】,然后选择上一步中保存的.urp文件,打开并运行。之后可以看到运行驱动的终端显示:
[ INFO] [1615715907.527568874]: Robot requested program
[ INFO] [1615715907.527840385]: Sent program to robot
[ INFO] [1615715907.564855461]: Robot ready to receive control commands.
(4)开启一个新终端,启动 moveit :
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch limited:=true
(5)开启一个新终端,启动 rviz:
roslaunch ur5_moveit_config moveit_rviz.launch config:=true
(6)接下来就可以在 rviz 中进行运动规划,并控制真实机器人按照规划的路径运动了。
5、踩过的坑
错误描述
- 在rviz中进行运动规划时,规划成功后,机器人保持静止,一动不动
- 开启rviz的端口显示:
[ INFO] [1615715355.318064333]: ABORTED: Solution found but controller failed during execution
- 开启moveit的端口显示:
[ERROR] [1615715355.301931123]: Unable to identify any set of controllers that can actuate the specified joints: [ elbow_joint shoulder_lift_joint shoulder_pan_joint wrist_1_joint wrist_2_joint wrist_3_joint ]
[ERROR] [1615715355.302004812]: Known controllers and their joints:
解决方法
- 将
$(HOME)/catkin_ws/src/fmauch_universal_robot/ur5_moveit_config/config/controllers.yaml
文件中的action_ns
字段的值修改为/scaled_pos_joint_traj_controller/follow_joint_trajectory
,问题解决。 - 修改后的文件内容为:
controller_list:- name: ""action_ns: /scaled_pos_joint_traj_controller/follow_joint_trajectorytype: FollowJointTrajectoryjoints:- shoulder_pan_joint- shoulder_lift_joint- elbow_joint- wrist_1_joint- wrist_2_joint- wrist_3_joint
- 以上的解决方法是在
Universal_Robots_ROS_Driver
的issue里找到的,链接:https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/issues/55
如何使用ROS控制真实UR5机器人相关推荐
- 使用ROS melodic下 控制真实UR5机器人 手把手教程
背景如题 参考:https://blog.csdn.net/weixin_37806591/article/details/119387696 https://blog.csdn.net/Dawn_y ...
- ROS控制多台机器人实现多机协同
ROS控制多台机器人的思路与实现 1. 实现思路 1.1 两台机器人跟随 1.2 多台机器人编队 2 TF工具的使用 2.1 什么是TF 2.2 TF的构成 2.3 向TF工具广播发送自己位置 2.4 ...
- 通过ROS控制真实机械臂(15) --- 视觉抓取之手眼标定
通过视觉传感器赋予机械臂"眼睛"的功能,配合ATI力和力矩传感器,就可以完成机械臂"手眼"结合的能力,完成视觉抓取过程.目前测试的视觉传感器为 ZED mini ...
- 通过ROS控制真实机械臂(7)---三次样条插补
在之前的move_group界面中,当点击plan and execute之后,move_group就会帮我们规划出一条通往指定位姿的轨迹,发布在follow_joint_trajectory上,通过 ...
- 通过ROS控制真实机械臂(2)----单轴运动,手柄控制
创建ROS包,包名redwall_arm ,通过自定义的消息,将手柄的数据发布 msg/ joycontrol.msg,内容如下,分别对应罗技手柄的按钮和遥杆轴. int32 button1 int3 ...
- 通过ROS控制真实机械臂(9)---上、下位机和PRU程序
上位机的程序redwall_arm_server.cpp 功能是作为ROS的move_group客户端接收ROS规划的机械臂路点信息,进行三次样条插补获得各个关节或自由度的运动PVAT数据,然后通过T ...
- 通过ROS控制真实机械臂(8)---延时时间精确控制
根据之前的配置,我们已经可以通过move_group发送出机械臂各关节运动的轨迹,并且通过三次样条插补的方法,赋予各个关节在特定角度时的速度和加速度,通过启动程序节点可以看到,本次运动规划使用了LBK ...
- Ubuntu18.04+ROS melodic 控制UR5机器人(持续更新)
目录 0 前言 1 前置准备工作 1.1 环境配置 1.1.1 使用虚拟机安装Ubuntu系统 1.1.2 ROS melodic安装 1.2 工作空间配置 1.2.1 创建工作空间 1.2.2 导入 ...
- 遨博协作机器人ROS开发 - Gazebo仿真与控制真实机器人
目录 一.简介 二.环境版本 三.Gazebo仿真 1.gazebo使用 2. 仿真遨博机械臂 四.ROS控制真实机器人 1. 网络配置 2. 真实机器人控制 3. 真实机器人运动速度调节 五.小结 ...
最新文章
- Android进程间通信的方式
- python --那些你应该知道的知识点
- 我用过的一些web.xml配置
- 如果没有网上购物,商铺价格会不会更高?
- 清华放大招!竟然连初三学生都招,一条龙培养到博士,还不准转专业......
- 23种设计模式之装饰模式
- boost学习之BOOST_PP_REPEAT
- vs 2005 多語言
- 阶段3 2.Spring_08.面向切面编程 AOP_4 spring基于XML的AOP-配置步骤
- Hadoop2.4.1(QJM HA)+HBASE0.98 双MASTER问题分析
- CCNA 中文教材 (pdf)
- vivado安装教程
- Eclipse的环境变量如何配置和为什么要配置环境变量?
- Spring Data JPA进阶(三):Specification查询
- 如何使用快应用内置地图查看、导航位置
- 【案例】这些日赚上万美金Youtube油管从业者 技术人的福音
- JAVA基础七 类和对象
- 量子计算基础——矩阵语言
- Unity FPS帧数设置
- php获取当前日期所在自然周周一周末以及前后自然周始末