< >
Home » ROS探索总结 » ROS探索总结-48.ROS机器人实例 (Universal Robots)

ROS探索总结-48.ROS机器人实例 (Universal Robots)

ROS探索总结-48.ROS机器人实例 (Universal Robots)

Universal Robots 介绍

  • Universal Robots(优傲机器人)公司是一家引领协作机器人全新细分市场的先驱企业,该公司成立于2005年,关注机器人的用户可操作性和灵活度,总部位于丹麦的欧登塞市,主要的机器人产品有:UR3、UR5和UR10,分别针对不同的负载级别。

image

  • Universal Robots早在2009年便推出了第一款协作机器人——UR5,自重18公斤,负载高达5公斤,工作半径85cm,不仅颠覆了人们对于传统工业机器人的认识,还自此定义了“协作机器人”的真正意义。除了安全度高、无需安全围栏等特点外,协作机器人还应该具备编程简单和灵活度高等特点,才能实现真正的人机和谐共事。

  • 2015年3月推出的UR3是现今市场上最灵活轻便、并且可与工人一起肩并肩工作的台式机器人。它自重仅为11公斤,但是有效负载却高达3公斤,所有腕关节均可360度旋转,而末端关节可作无限旋转。UR 10的有效负载为10公斤,工作半径130cm。三款机器人均以编程的简易性、高度灵活性以及与人一起工作的安全可靠性而享誉业内。

在ros环境下使用

  • ROS中同样集成了Universal Robots机器人的功能包,使用如下命令即可安装,其中包含UR3、UR5、UR10三款机器人的相关功能:
$ sudo apt-get install ros-kinetic-universal-robot
  • 在使用之前,先来了解一下Universal Robots的相关功能包。

请输入图片描述

  • 接下来我们以UR5为例,学习Universal Robots功能包的使用方法。

gazebo中的UR机器人

  • 使用以下命令启动UR5机器人的gazebo仿真环境:
$ roslaunch ur_gazebo ur5.launch
  • 启动成功后可以看到仿真环境中的UR5。

请输入图片描述

  • 查看当前系统中的话题列表。

请输入图片描述

  • follow_joint_trajectory是MoveIt!最终规划发布的action消息,由机器人控制器端接收该消息后控制机器人完成运动。从上边的话题列表中,可以找到follow_joint_trajectory,由仿真机器人的控制器插件订阅。

  • 打开启动的ur5.launch文件,可以看到以下代码段:

   <rosparam file="$(find ur_gazebo)/controller/arm_controller_ur5.yaml" command="load"/>   

   <node name="arm_controller_spawner" pkg="controller_manager" type="controller_manager" args="spawn arm_controller" respawn="false" output="screen"/>
  • 控制器管理节点controller_manager启动了一个arm_controller插件,该插件的配置可以查看arm_controller_ur5.yaml文件:
arm_controller:

 type:position_controllers/JointTrajectoryController

 joints:

    -shoulder_pan_joint

    -shoulder_lift_joint

    -elbow_joint

    -wrist_1_joint

    -wrist_2_joint

    - wrist_3_joint

constraints:

    goal_time: 0.6

    stopped_velocity_tolerance: 0.05

    shoulder_pan_joint: {trajectory: 0.1, goal: 0.1}

    shoulder_lift_joint: {trajectory: 0.1, goal: 0.1}

    elbow_joint: {trajectory: 0.1, goal: 0.1}

    wrist_1_joint: {trajectory: 0.1, goal: 0.1}

    wrist_2_joint: {trajectory: 0.1, goal: 0.1}

    wrist_3_joint: {trajectory: 0.1, goal: 0.1}

stop_trajectory_duration: 0.5

state_publish_rate:  25

action_monitor_rate: 10
  • 从上边的配置信息中可以看到,arm_controller是一个JointTrajectory类型的控制器,接收follow_joint_trajectory中的轨迹信息后,完成机器人的运动控制。

使用MoveIt!控制UR机器人

  • ROS中类似于UR5这样的机械臂控制当然离不开MoveIt!,接下来我们就使用MoveIt!实现对gazebo中UR5的控制。

  • UR5的控制需要通过follow_joint_trajectory这个action接口实现,这就需要在MoveIt!端配置一个控制器插件,实现该接口的功能。该插件的配置在ur5_moveit_config中已经实现,可以查看ur5_moveit_config功能包中的controllers.yaml文件:

controller_list:

 - name:""

  action_ns: follow_joint_trajectory

   type:FollowJointTrajectory

   joints:

     -shoulder_pan_joint

     -shoulder_lift_joint

     -elbow_joint

     -wrist_1_joint

     -wrist_2_joint

     -wrist_3_joint
  • 所以我们并不需要进行任何修改,使用如下命令启动MoveIt!和rviz,启动过程会包含所需要的控制器插件:
$ roslaunch ur5_moveit_config ur5_moveit_planning_execution.launchsim:=true

$ roslaunch ur5_moveit_config moveit_rviz.launch config:=true
  • 启动成功后可以看到如下界面。

请输入图片描述

  • 目前,rviz和gazebo中的UR5应该保持同样的姿态。在rviz中使用MoveIt!插件选择一个运动目标姿态,然后点击“Plan”。如果可以实现运动规划,就会看到如下规划轨迹。

请输入图片描述

  • 再点击“Execute”按钮,gazebo中的UR5会按照规划的轨迹开始运动,rviz中的UR5模型保持同样的运动姿态,如下图所示:

请输入图片描述

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros探索总结