The Gazebo grasp fix plugin
时间:2022-09-13 22:00:00
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的规范集合(可能有几个标签):
update_rate只是处理它们的速度,这需要一些计算时间,因此应该低于gazebo世界的更新速度。
案例
<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!!!