给自己的机械臂添加一个夹爪

      我感觉大多数用moveit做机械臂控制的,在一开始,都是控制一个光杆机械臂,但是随着自己对ros和moveit学习的深入,会发现只控制一个光杆机械臂好像没什么意思嘛。最起码要给自己的机械臂加一个夹爪让他做一个抓取和放置的操作吧。好,有需求那么接下来就有问题了。我的这个夹爪的结构应该是什么样子?我有了夹爪结构我该怎么加到机原来械臂上去?原来的机械臂URDF模型我已经做了无数修改了,我该怎么在保留这些设置的基础上,把我的夹爪装上去。接下来就从这两个问题出发,分享一下我解决问题的过程。

1、我的夹爪结构应该是什么样子的?

这里如果熟悉SW等绘图软件的,大家可以根据自己要抓取物体的形状自己画一个夹爪,如果就是想演示一下,那么给大家推荐一个叫机械图纸狗的公众号,里面又非常多的优秀图纸,去挑挑选选,总有一款适合你。

 2、我有了夹爪结构我该怎么加到机原来械臂上去?

       这里有两种解决办法,一种是你可以直接在sw内做好装配体,然后用swurdf插件生成完整的机械臂+夹爪的URDF文件,这种方式只适合从零开始做机械臂控制的。已经做过一段时间的光杆机械臂控制的兄弟肯定会有这个顾虑,就是一路控制过来,对原来的机械臂URDF 模型已经不知道做了多少修改,重新生成,将会带来一大堆问题。为了个夹爪,付出这么大的工作量肯定不划算。所以,第二种方式更适合这种情况。那就是单独生成夹爪的URDF模型。

第一步在sw中生成夹爪的urdf模型,能用到这种方法的兄弟肯定这都不陌生了,就不在此赘述了

第二步拿到生成的URDF文件,这是我的j夹爪urdf模型,这里记得掐头去尾。把<robot
  name="finger">到</robot>之间的全部内容复制,然后找到自己原来的机械臂URDF文件,找到自己的模型的最后一个link,将刚才复制的内容全部复制他的后面。

<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com) 
     Commit Version: 1.5.1-0-g916b5db  Build Version: 1.5.7152.31018
     For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robot
  name="finger">
  <link
    name="finger_base">
    <inertial>
      <origin
        xyz="-6.35771586765532E-09 0.000115405302952606 -0.0246430464114306"
        rpy="0 0 0" />
      <mass
        value="0.0633572386878576" />
      <inertia
        ixx="2.16498106909931E-05"
        ixy="-4.42610892567155E-13"
        ixz="-2.16945723545907E-14"
        iyy="2.17602534542266E-05"
        iyz="3.14411702751438E-08"
        izz="4.20656899912343E-05" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"   rpy="0 0 0" />
      <geometry>
        <mesh          filename="package://finger/meshes/finger_base.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://finger/meshes/finger_base.STL" />
      </geometry>
    </collision>
  </link>
  <link
    name="finger_1">
    <inertial>
      <origin
        xyz="0.0051124 0.051489 -0.0084464"
        rpy="0 0 0" />
      <mass
        value="0.0084416" />
      <inertia
        ixx="1.5817E-06"
        ixy="-2.3593E-07"
        ixz="-5.438E-13"
        iyy="3.5578E-07"
        iyz="-6.4675E-11"
        izz="1.474E-06" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://finger/meshes/finger_1.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://finger/meshes/finger_1.STL" />
      </geometry>
    </collision>
  </link>
  <joint
    name="finger_joint_1"
    type="revolute">
    <origin
      xyz="-0.0084 -0.027341 -0.051905"
      rpy="-1.5708 0 1.5708" />
    <parent
      link="finger_base" />
    <child
      link="finger_1" />
    <axis
      xyz="0 0 -1" />
    <limit
      lower="-3.14"
      upper="3.14"
      effort="0"
      velocity="0" />
  </joint>
  <link
    name="finger_2">
    <inertial>
      <origin
        xyz="-0.013757 0.04988 -0.0084464"
        rpy="0 0 0" />
      <mass
        value="0.0084416" />
      <inertia
        ixx="1.5814E-06"
        ixy="2.3673E-07"
        ixz="2.2795E-11"
        iyy="3.5609E-07"
        iyz="-6.0454E-11"
        izz="1.474E-06" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://finger/meshes/finger_2.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://finger/meshes/finger_2.STL" />
      </geometry>
    </collision>
  </link>
  <joint
    name="finger_joint_2"
    type="revolute">
    <origin
      xyz="0.027885 0.0063046 -0.051905"
      rpy="-1.5708 0 -2.618" />
    <parent
      link="finger_base" />
    <child
      link="finger_2" />
    <axis
      xyz="0 0 -1" />
    <limit
      lower="-3.14"
      upper="3.14"
      effort="0"
      velocity="0" />
  </joint>
  <link
    name="finger_3">
    <inertial>
      <origin
        xyz="-0.0061103 0.051381 -0.0084136"
        rpy="0 0 0" />
      <mass
        value="0.0084416" />
      <inertia
        ixx="1.5721E-06"
        ixy="2.5953E-07"
        ixz="-1.7953E-12"
        iyy="3.654E-07"
        iyz="6.4629E-11"
        izz="1.474E-06" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://finger/meshes/finger_3.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://finger/meshes/finger_3.STL" />
      </geometry>
    </collision>
  </link>
  <joint
    name="finger_joint_3"
    type="revolute">
    <origin
      xyz="-0.027885 0.0063046 -0.051905"
      rpy="-1.5708 0 2.618" />
    <parent
      link="finger_base" />
    <child
      link="finger_3" />
    <axis
      xyz="0 0 1" />
    <limit
      lower="-3.14"
      upper="3.14"
      effort="0"
      velocity="0" />
  </joint>
</robot>

然后再自己夹爪的第一个link后,添加一个夹爪和机械臂最后一个link的关节,夹爪肯定是固定再最后一个link上的,所以添加的内容为:

    <joint name="fixed_1" type="fixed">
        <origin xyz="0 0.0115 0" rpy="1.5708 0 0" />
        <parent link="link_5" />
        <child link="finger_base" />
    </joint>

如果夹爪位置不对,就微调origin后面的参数,一点一点试一下。到这里,urdf文件的拼接就算完成了,但是有个细节 ,记得把夹爪meshe文件内的stl文件复制到机械臂urdf模型内的meshes文件内,并对上述文件中的路径进行修改。否则夹爪的模型加载的时候会出错。

3、根据新的模型文件用moveit_setupassistant进行配置

这里和之前得区别就是增加一个规划组添加控制器 添加end effectors,我设置的是增加一个新的finger规划组。

 添加end effectors,这里end effectors name 可以自定义,end effectors group选择自己刚才设定的规划组。end effectors parent选择机械臂的最后一个link及安装夹爪的link,parent group不用选。 

 最后添加控制器,就按照下面这种方式添加即可。

 最后再gazbeo和rviz中验证自己的添加的夹爪是否能正常工作。如果moveit控制gazbeo中的夹爪出现问题,请参照我上一篇博文解决。我终于实现Moveit+gazbeo对机械臂的联合仿真控制了

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 下面是一个yaml文件的样例: ```yaml name: my_gripper type: my_gripper_pkg/MyGripper default: true controller: joint_trajectory_controller joint_names: - gripper_joint hardware_interface: hardware_interface/EffortJointInterface ``` 这个样例文件定义了一个名为 `my_gripper` 的,使用了 `my_gripper_pkg/MyGripper` 类型。它的控制器是 `joint_trajectory_controller`,关节名称为 `gripper_joint`,使用了 `hardware_interface/EffortJointInterface` 硬件接口。`default` 属性设置为 `true`,表示这是默认的。 ### 回答2: 持装置)是一种机械手臂上常用的装置,用于住和固定物体。yaml文件是一种文本文件,用于描述的属性和参数。 以下是一个yaml文件样例: ``` name: 双指持器 model: 1234 manufacturer: 科技有限公司 description: 这是一款用于机械手臂的双指持装置,可以住各种形状的物体。 parameters: - name: 持力 value: 10 N unit: 牛顿 - name: 持速度 value: 5 cm/s unit: 厘米/秒 - name: 长度 value: 15 cm unit: 厘米 - name: 宽度 value: 5 cm unit: 厘米 - name: 重量 value: 0.5 kg unit: 千克 - name: 可操作物体尺寸 value: 5-20 cm unit: 厘米 ``` 在这个样例中,的名称为“双指持器”,型号是“1234”,制造商是“科技有限公司”。描述中提到了这个持装置的特点,能够住各种形状的物体。 参数部分列出了的一些属性和参数: 1. 持力:能够施加的最大力为10牛顿。 2. 持速度:持速度为5厘米/秒。 3. 长度:的长度为15厘米。 4. 宽度:的宽度为5厘米。 5. 重量:自身的重量为0.5千克。 6. 可操作物体尺寸:能够住的物体尺寸范围是5-20厘米。 这个yaml文件通过简洁明了的方式描述了的属性和参数,便于机械手臂控制程序读取和配置。 ### 回答3: 下面是一个的yaml文件样例: ``` # 配置文件 - name: 左 type: 机械 length: 10cm width: 5cm height: 3cm weight: 100g color: 黑色 material: 铝合金 grip_strength: 5kg - name: 右 type: 电动 length: 12cm width: 6cm height: 4cm weight: 120g color: 红色 material: 塑料 grip_strength: 8kg ``` 这个yaml文件定义了两个,分别是左和右。每个的属性包括名称(name)、类型(type)、长度(length)、宽度(width)、高度(height)、重量(weight)、颜色(color)、材质(material)和持力(grip_strength)等。 左的类型为机械,它的长度为10cm,宽度为5cm,高度为3cm,重量为100g,颜色为黑色,材质为铝合金,持力为5kg。 右的类型为电动,它的长度为12cm,宽度为6cm,高度为4cm,重量为120g,颜色为红色,材质为塑料,持力为8kg。 这个样例yaml文件可以用于描述的基本信息,包括它们的外形尺寸、重量、颜色、材质以及持力等,供其他程序或系统进行参考和使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值