在UR5机械臂末端添加robotiq 2f 85夹爪并在rviz中显示

需求

在UR5机械臂末端添加robotiq 2f 85夹爪

环境

ubuntu20.04 + ROS1 noetic

准备工作

  1. 创建工作空间
    mkdir -p catkin_UR5/src
    
  2. 进入catkin_UR5/src目录,分别下载机械臂和夹爪对应的功能包
    cd ~/catkin_UR5/src
    git clone https://github.com/ros-industrial/universal_robot.git
    git clone https://github.com/jr-robotics/robotiq.git
    
  3. 进入catkin_UR5工作空间目录,检查依赖关系并编译
    cd ~/catkin_UR5
    sudo rosdepc init
    rosdepc update --rosdistro=noetic
    rosdepc install --rosdistro noetic --ignore-src --from-paths src
    catkin_make
    

机械臂末端添加夹爪

修改夹爪功能包

  1. 打开robotiq_arg2f_85_macro.xacro,其路径如下

    catkin_UR5/src/robotiq/robotiq_2f_85_gripper_visualization/urdf/robotiq_arg2f_85_macro.xacro
    
  2. 注释或删除掉第196-200行的代码

    这主要是因为功能包中默认夹爪的父级是base_link,而要将夹爪安装在机械臂末端,它的父级应该是机械臂末端的tool0。当然,如果要单独仿真夹爪,则需要取消这个注释。

    195 <!-- base link -->
    196 <!-- <link name="${prefix}base_link"/>
    197 <joint name="${prefix}base_link-${prefix}robotiq_arg2f_base_link" type="fixed">
    198     <parent link="${prefix}base_link" />
    199     <child link="${prefix}robotiq_arg2f_base_link" />
    200 </joint> -->
    

添加夹爪

  1. 打开ur.xacro,其路径如下

    catkin_UR5/src/universal_robot/ur_description/urdf/ur.xacro
    
  2. 在文件末尾添加如下代码

    <!--继承robotiq_arg2f_85宏-->
    <xacro:include filename="$(find robotiq_2f_85_gripper_visualization)/urdf/robotiq_arg2f_85_macro.xacro"/>
    
    <!--定义fixed关节,将robotiq_arg2f_base_link连接到机械臂末端的tool0-->
    <joint name="ur_robotiq_joint" type="fixed">
        <parent link="tool0"/>
        <child link="robotiq_arg2f_base_link"/>
        <origin xyz="0 0 0" rpy="0 0 0"/>
    </joint>
    
    <!--调用robotiq_arg2f_85,加入夹爪的link和joint-->
    <xacro:robotiq_arg2f_85
        prefix=""
        transmission_hw_interface="$(arg transmission_hw_interface)"
    />
    

    最终,ur.xacro文件中的完整代码如下

    <?xml version="1.0"?>
    <robot xmlns:xacro="http://wiki.ros.org/xacro" name="$(arg robot_model)_robot">
    
    <!-- import main macro -->
    <xacro:include filename="$(find ur_description)/urdf/inc/ur_macro.xacro"/>
    
    <!-- parameters -->
    <xacro:arg name="joint_limit_params" default=""/>
    <xacro:arg name="kinematics_params" default=""/>
    <xacro:arg name="physical_params" default=""/>
    <xacro:arg name="visual_params" default=""/>
    <!-- legal values:
            - hardware_interface/PositionJointInterface
            - hardware_interface/VelocityJointInterface
            - hardware_interface/EffortJointInterface
    -->
    <xacro:arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface"/>
    <xacro:arg name="safety_limits" default="false"/>
    <xacro:arg name="safety_pos_margin" default="0.15"/>
    <xacro:arg name="safety_k_position" default="20"/>
    
    <!-- arm -->
    <xacro:ur_robot
        prefix=""
        joint_limits_parameters_file="$(arg joint_limit_params)"
        kinematics_parameters_file="$(arg kinematics_params)"
        physical_parameters_file="$(arg physical_params)"
        visual_parameters_file="$(arg visual_params)"
        transmission_hw_interface="$(arg transmission_hw_interface)"
        safety_limits="$(arg safety_limits)"
        safety_pos_margin="$(arg safety_pos_margin)"
        safety_k_position="$(arg safety_k_position)"/>
    
    <!--继承robotiq_arg2f_85宏-->
    <xacro:include filename="$(find robotiq_2f_85_gripper_visualization)/urdf/robotiq_arg2f_85_macro.xacro"/>
    
    <!--定义fixed关节,将robotiq_arg2f_base_link连接到机械臂末端的tool0-->
    <joint name="ur_robotiq_joint" type="fixed">
        <parent link="tool0"/>
        <child link="robotiq_arg2f_base_link"/>
        <origin xyz="0 0 0" rpy="0 0 0"/>
    </joint>
    
    <!--调用robotiq_arg2f_85,加入夹爪的link和joint-->
    <xacro:robotiq_arg2f_85
        prefix=""
        transmission_hw_interface="$(arg transmission_hw_interface)"
    />
    </robot>
    
  3. 在rivz中可视化带有夹爪的机械臂

    在catkin_UR5工作空间目录下,激活工作空间,并启动相应的launch文件

    cd ~/catkin_UR5
    source ./devel/setup.bash
    roslaunch ur_description view_ur5.launch
    

    rviz启动后,可以看到机械臂成功添加夹爪,拖动gui的滚动条可以实现对机械臂关节和夹爪的控制。
    在这里插入图片描述

附录A 查看并修改文件的一些技巧

  1. 如何知道应该修改哪些文件

    首先应该对Universal Robots的相关功能包有一定了解,打开UR功能包的github链接

    https://github.com/ros-industrial/universal_robot
    

    可以看到如下的文件结构
    在这里插入图片描述
    从中可以找到用于显示ur5的launch文件,即:

    universal_robot/ur_description/launch/view_ur5.launch
    

    查看该文件,可以发现它包含了load_ur5.launch:

    <include file="$(find ur_description)/launch/load_ur5.launch"/>
    

    因此,继续查看load_ur5.launch文件,可以发现它包含了load_ur.launch:

    <include file="$(find ur_description)/launch/load_ur.launch" pass_all_args="true"/>
    

    进一步查看load_ur.launch文件,发现其加载的模型为ur_description功能包下的urdf/ur.xacro:

    <param name="robot_description" command="$(find xacro)/xacro '$(find ur_description)/urdf/ur.xacro'
    robot_model:=$(arg robot_model)
    joint_limit_params:=$(arg joint_limit_params)
    kinematics_params:=$(arg kinematics_params)
    physical_params:=$(arg physical_params)
    visual_params:=$(arg visual_params)
    transmission_hw_interface:=$(arg transmission_hw_interface)
    safety_limits:=$(arg safety_limits)
    safety_pos_margin:=$(arg safety_pos_margin)
    safety_k_position:=$(arg safety_k_position)"
    />
    

    查看ur.xacro文件,发现创建机械臂的代码就在此文件中:

    <!-- arm -->
    <xacro:ur_robot
        prefix=""
        joint_limits_parameters_file="$(arg joint_limit_params)"
        kinematics_parameters_file="$(arg kinematics_params)"
        physical_parameters_file="$(arg physical_params)"
        visual_parameters_file="$(arg visual_params)"
        transmission_hw_interface="$(arg transmission_hw_interface)"
        safety_limits="$(arg safety_limits)"
        safety_pos_margin="$(arg safety_pos_margin)"
        safety_k_position="$(arg safety_k_position)"/>
    

    此时初步确定,可以在此文件中创建机械臂的代码后面添加夹爪相关代码。

    接下来就是夹爪应该添加在机械臂的哪个link上,所以我们需要了解机械臂的结构。机械臂的创建使用了宏函数,而该宏函数来自于ur_description功能包下的/urdf/inc/ur_macro.xacro,通过阅读该宏函数,我们可以发现,夹爪应该添加在名为tool0的link上。此外,还可以在添加夹爪前,通过rviz显示机械臂:

    cd ~/catkin_UR5
    source ./devel/setup.bash
    roslaunch ur_description view_ur5.launch
    

    在rviz中可以查看机械臂的层级关系

    下图是安装夹爪后的层级关系,可以看到机械臂的末端为tool0

    在这里插入图片描述
    查看夹爪的结构同理。
    带有夹爪的机械臂结构如下
    在这里插入图片描述

    它们分别对应的link和joint名称为

       底座 ----------------> base_link    
       肩连杆与底座的关节 ---> shoulder_pan_link    
       肩连杆 --------------> shoulder_link    
       肩关节 --------------> shoulder_lift_joint    
       上臂 ----------------> upper_arm_link    
       肘关节 --------------> elbow_joint       
       前臂 ----------------> forearm_link    
       腕关节1 -------------> wrist_1_joint    
       腕连杆1 -------------> wrist_1_link    
       腕关节2 -------------> wrist_2_joint    
       腕连杆2 -------------> wrist_2_link    
       腕关节3 -------------> wrist_3_joint    
       腕连杆3 -------------> wrist_3_link    
       末端:法兰盘和空工具 --> flange和tool0(连接夹爪)    
    

附录B 踩过的坑

一开始看很多教程修改ur_description功能包下的urdf/ur5.xacro、urdf/inc/ur5_macro.xacro文件,结果并没有效果。其实如果修改上述两个文件,可能需要自己写launch文件。

官方例程显示机械臂统一采用的是在ur_description功能包下的launch/load_ur.launch中加载urdf/ur.xacro文件,只是展示不同的机械臂时,需要在launch/load_ur<3/3e/5/5e/…>.launch文件中加载不同的参数。

参考

  1. 本文之后,世上再无rosdep更新失败问题!如果有…小鱼就…
  2. rosdepc update常见错误及解决方案
  3. ROS-noetic+UR5上安装robotiq_85_gripper夹爪
  4. UR5机械臂仿真实例(三)1 末端添加robotiq夹爪 [ubuntu20.04+ROSnoetic+gazebo11]
  5. 【ROS机械臂入门教程】第3讲-机器人URDF建模
  6. 【Autolabor初级教程】ROS机器人入门
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值