资讯详情

The Gazebo grasp fix plugin

The Gazebo grasp fix plugin

官方信息链接:https://github.com/JenniferBuehler/gazebo-pkgs/wiki/The-Gazebo-grasp-fix-plugin

尤其是老的Gazebo版本中(<2)机器人在捕获物体时可能会表现出奇怪的行为:它可能会摆动、爆炸或飞向太空。这是因为物理引擎没有优化捕获。gazebo_grasp_plugin包中提供的插件有助于克服这些问题。

在较新的Gazebo版本(>2)机器人在抓取时不会表现出奇怪的行为,但被抓取的物体仍可能从机器人手中滑落。机器人可以通过调整物体和夹具的材料特性,静止地抓取物体。在物体上施加机器人的力也起作用。然而,这可能需要机器人URDF微调相当多的对象属性。如果这不是项目的直接优先级,请使用本包中提供的项目Gazebo grasp插件可能更容易。

它是如何工作的

来自插件的灵感gazebo::physics::Gripper。它可以固定机器人手中的物体,避免物理引擎问题,并帮助物体留在机器人手中而不滑动。

只要两个相反的力被抓取器连接到一个物体上,就可以检测到一个物体被抓取。然后将物体固定在手掌或手镯上。一旦该标准不再适用(例如,打开夹具),对象将再次分离。

这个插件不依赖ROS。它可以在后台运行,并自动附加由夹具链接抓取的所有对象(“opposing可在源代码中设置标准公差,但计划将其作为参数)。

实现是一个模型插件,所以你必须从机器人开始URDF加载模型插件:

<gazebo>    <plugin name="gazebo_grasp_fix" filename="libgazebo_grasp_fix.so">         <arm>            <arm_name>name-of-arm</arm_name>            <palm_link> hand_link_name  </palm_link>            <gripper_link> finger_index_link_1 </gripper_link>            <gripper_link> finger_index_link_2 </gripper_link>            <gripper_link> ... </gripper_link>         </arm>        <forces_angle_tolerance>100</forces_angle_tolerance>        <update_rate>4</update_rate>        <grip_count_threshold>4</grip_count_threshold>        <max_grip_count>8</max_grip_count>        <release_tolerance>0.005</release_tolerance>        <disable_collisions_on_attach>false</disable_collisions_on_attach>        <contact_topic>__default_topic__</contact_topic>     </plugin> </gazebo> 

参数描述:

包括每个可以抓取一个对象的对象ar的规范集合(可能有几个标签): <arm_name> 是这个arm的名称。必须是独一无二的。 <palm_link> 必须是连接到手指关节的链接。 <gripper_link> 标签必须包含用于主动抓取对象的抓手/手的所有链接名称(这些链接根据上述标准确定是否存在“抓取”)。

<update_rate> 是所有接触点根据“夹持标准”进行检查的速率。注意,在这些更新之间,现有的联络点可能会以更高的速度被收集(Gazebo世界的更新速度)。 update_rate只是处理它们的速度,这需要一些计算时间,

<forces_angle_tolerance> 是两个被认为是“反作用力”的力向量之间的公差角度(以度为单位)。如果角比这个小,它们就不是对角。

<grip_count_threshold> 是在更新循环中(以update_rate运行)必须检测到一个对象被“捕获”的次数,以便附加该对象。根据更新速率进行调整。

<max_grip_count> 是计数器的最大数目:在每次更新迭代中(以update_rate运行),如果满足一个对象的“抓取条件”,则增加该对象的计数器。Max_grip_count是一个对象记录的最大数量。一旦计数器超过这个数字,计数器就会停止。一旦“抓住标准”不再有效,数量将再次开始减少(每次在更新迭代中检测到对象“未抓住”时减少1)。所以这个计数器就像一个“缓冲区”,当它被填满时,保持状态,当它为空时,再次释放对象。

<release_tolerance> 是在抓取过程中,在不脱离物体的情况下,即使当前物体没有实际接触,也允许夹持器链接离开物体的距离。如果手指“摆动”或稍微远离物体,这种情况就会发生,因此“抓取标准”在随后的几次更新迭代中失败。这个设置是为了使行为更稳定。设置这个数字太高也会导致对象不被分离,即使抓手已经打开释放它,所以使用这个小心。

<disable_collisions_on_attach> 可用于以下情况:当一个对象被附加时,与它的碰撞可能被禁用,以防机器人仍然保持抖动。

<contact_topic> 是相关联的gazebo话题。通常默认是__default_topic__。

案例

    <gazebo>
        <plugin name="gazebo_grasp_fix" filename="libgazebo_grasp_fix.so">
            <arm>
            	<!-- 机械臂名称,注意确保唯一性 -->
                <arm_name>ur3_arm</arm_name>
                
                <!--与夹持器末端 link 相连的 link 、,可以配置多个-->
                <palm_link>Link1</palm_link>
                
                <!--直接与抓取物体接触的 link ,与 palm_link 之间不能存在其他的 link-->
                <gripper_link>Link11</gripper_link>
                <palm_link>Link2</palm_link>
                <gripper_link>Link22</gripper_link>
            </arm>
            
			<!--是否是相反力的夹⻆判断阈值 -->
            <forces_angle_tolerance>100</forces_angle_tolerance>
            
            <!--检查频率,需要小于 gazebo 的刷新频率-->
            <update_rate>20</update_rate>
            
            <!-- 检测阈值:在一个 update_rate 内,物体与夹爪之间的碰触次数-->
            <grip_count_threshold>1</grip_count_threshold>

		   <!-- 最大记数数目,一般为grip_count_threshold的两倍-->
            <max_grip_count>2</max_grip_count>
            
            <!--释放物体时夹爪与物体的距离-->
            <release_tolerance>0.0198</release_tolerance>
            
           <!-- 当一个对象被附加时,与它的碰撞可能被禁用,以防机器人仍然保持抖动-->
            <disable_collisions_on_attach>false</disable_collisions_on_attach>
            <contact_topic>__default_topic__</contact_topic>
        </plugin>
    </gazebo>

当物体被抓取住了,可以在控制台看到输出内容:

GazeboGraspFix: Attaching materiel_model::material_link::material_link_collision to gripper ur3_arm!!!

标签: 用于夹持一对连接器的夹具

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台