Gazebo中Robotiq使用和是否抓取物体判断

文章目录

  • Gazebo中Robotiq使用和是否抓取物体判断
    • 1、gazebo中的仿真使用
    • 2、 仿真中如何判断抓取
    • 3、例子
    • 4、完结撒花

由于课题需要使用robotiq夹爪,但是在仿真环境中Robotiq如何抓取物体,怎么判断是否抓住了是需要解决的一个问题。并且大多现有的例子都是抓固定大小方块,抓不定宽度的物体就没有方法或教程出现,为解决这个问题,下面梳理一下我查找并实现的例子。

1、gazebo中的仿真使用

  • 在rviz中仿真和实际使用,直接用github里的直接可以用。官方链接

  • 官方缺少gazebo的描述文件和使用,在下面这个链接有使用gazebo仿真

  • 上面这个也有问题,虽然在gazebo中能看到模型,但是不能控制其动作,因此用到了gazebo插件,链接如下gazebo插件

  • 在配置好gazebo模型和控制插件后,进一步判断gazebo中是如何抓取的。

2、 仿真中如何判断抓取

  • 在gazebo中,插件是将当夹爪接触物体产生一定的碰撞力后达到阈值时,将其附在夹爪上成为一体,以实现抓取,几个主要的参数如下:
<forces_angle_tolerance>100</forces_angle_tolerance>
<update_rate>100</update_rate>
<grip_count_threshold>2</grip_count_threshold>
<max_grip_count>8</max_grip_count>
<release_tolerance>0.01</release_tolerance> <!-- 0.01977<0.0198<0.01999 -->
<disable_collisions_on_attach>false</disable_collisions_on_attach>
<contact_topic>__default_topic__</contact_topic>
  • 由于其是在gazebo中实现抓取的,存在一个信号,物体是否被抓取。插件在GazeboGraspFix.cpp实现,但其信号是gazebo信号,而我们经常使用的是ROS信号,因此需要一个gazebo 信号转ROS 的话题,在文件grasp_event_republisher.cpp实现了,完整代码如下:
#include <gazebo/transport/transport.hh>
#include <gazebo_grasp_plugin/msgs/grasp_event.pb.h>
#include <gazebo_grasp_plugin_ros/GazeboGraspEvent.h>
#include <ros/ros.h>
using GraspEventPtr = boost::shared_ptr<const gazebo::msgs::GraspEvent>;
ros::Publisher gGraspEventPublisher;void ReceiveGraspMsg(const GraspEventPtr& gzMsg)
{ROS_INFO_STREAM("Re-publishing grasp event: " << gzMsg->DebugString());gazebo_grasp_plugin_ros::GazeboGraspEvent rosMsg;rosMsg.arm      = gzMsg->arm();rosMsg.object   = gzMsg->object();rosMsg.attached = gzMsg->attached();gGraspEventPublisher.publish(rosMsg);
}
int main(int argc, char** argv)
{// Initialize ROS and Gazebo transportros::init(argc, argv, "gazebo_grasp_plugin_event_republisher");if (!gazebo::transport::init()){ROS_ERROR("Unable to initialize gazebo transport - is gazebo running?");return 1;}gazebo::transport::run();// Subscribe to Gazebo grasp event messagegazebo::transport::NodePtr gzNode(new gazebo::transport::Node());gzNode->Init();gazebo::transport::SubscriberPtr subscriber;try{subscriber = gzNode->Subscribe("~/grasp_events", &ReceiveGraspMsg);}catch (std::exception e){ROS_ERROR_STREAM("Error subscribing to topic: " << e.what());return 1;}// Initialize ROS publisherros::NodeHandle   rosNode("~");const std::string pubTopic = "grasp_events";gGraspEventPublisher =rosNode.advertise<gazebo_grasp_plugin_ros::GazeboGraspEvent>(pubTopic, 1);ros::spin();gazebo::transport::fini();return 0;
}

使用: rosrun gazebo_grasp_plugin_ros grasp_event_republisher

  • 简单写一个接收话题如下,通过该话题我们就可以判断物体是否被抓取到了
#! /usr/bin/env python
# -*- coding: UTF-8 -*-import rospy
from gazebo_grasp_plugin_ros.msg import GazeboGraspEvent
def doMsg(p):print(p.attached)if(p.attached):rospy.loginfo("Attached grasp target!")
if __name__ == "__main__":#1.初始化节点rospy.init_node("GazeboGraspMsgRead")#2.创建订阅者对象sub = rospy.Subscriber("/gazebo_grasp_plugin_event_republisher/grasp_events", GazeboGraspEvent, doMsg, queue_size=1)rospy.spin() #4.循环

3、例子

下面是通过gazebo下控制robotiq实现抓取一个位置宽度的胶带。

在启动程序中出现绿色字体日志,显示抓取吸附了,下面个两个终端是我们分别用gazebo信号转ROS话题并发布和订阅显示已经抓取成功

4、完结撒花

Gazebo中Robotiq使用和是否抓取物体判断相关推荐

  1. gazebo仿真 UR10 + robotiq140抓取物体失败:滑出或滑落

    gazebo仿真 UR10 + robotiq140抓取物体失败:滑出或滑落 机械臂(UR10+Roboiq140)抓取物体失败:爪子夹取物体,物体滑出,或机械臂网上提升时候,物体滑出,没有跟随机械臂 ...

  2. 利用pandas库中的read_html方法快速抓取网页中常见的表格型数据

    利用pandas库中的read_html方法快速抓取网页中常见的表格型数据 本文转载自:https://www.makcyun.top/web_scraping_withpython2.html 需要 ...

  3. 针对杂乱环境下抓取物体的机器人学习

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:脱贫钉子户 https://zhuanlan.zhihu.com/p/98990794 本文仅做 ...

  4. 受婴儿抓阄启发,谷歌让机器臂自学抓取物体,不用标注数据

    晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 谷歌大脑让AI更像儿童了,至少在对象识别和感知方面是这样.最近,他们和加州大学伯克利分校的学生研究了一种算法Grasp2Vec,通过观察和 ...

  5. 杜国光博士,基于视觉的机器人抓取--物体定位,位姿估计到抓取估计课堂笔记

    基于视觉的机器人抓取--物体定位,位姿估计到抓取估计课堂笔记 杜国光博士在智东西公开课上讲了<基于视觉的机器人抓取--物体定位,位姿估计到抓取估计>的精彩课程 满满的干货,记下来,后面慢慢 ...

  6. Pico Neo3手柄抓取物体

    功能:手柄抓取物体 设备:pico neo3 unity : 2020 1.可抓取的物体添加 XR Grab Interactable 脚本 2.LeftHand Controller  /Right ...

  7. Unity之OpenXR+XR Interaction Toolkit实现 抓取物体

    前言 我们今天来说一下如何使用XR Interaction Toolkit来实现和3D物体的交互之:抓取,简单说就是通过VR手柄拿起来一个物体. 二.准备工作 我们需要准备好Unity工程和环境配置 ...

  8. html中隐藏内容蜘蛛会抓取吗,蜘蛛会抓取识别JS、CSS、JSON,对SEO有什么影响

    这是一个存在多年.经常出现但又从来没有标准解决办法的问题:搜索引擎爬虫(尤其是百度)抓取JS.CSS.JSON文件,robots屏蔽依然抓取的情况. 这就引出了几个问题: 1.爬虫抓取JS.CSS是干 ...

  9. 端口镜像 流量过滤_在 AWS 云环境中滥用 VPC 流量镜像抓取网络流量

    云环境下的网络检测问题 人们可能希望监视云环境中的网络流量有很多原因--出于攻击和防御的目的.被动的网络检查在云环境中可能很困难,而且在这之前需要对网络配置进行重大修改,以确保每台主机都被监控,并且不 ...

最新文章

  1. Ubuntu更新时遇到/boot空间不足
  2. python读取nii文件_python实现批量nii文件转换为png图像
  3. GIS人眼中的“云GIS”
  4. java请求超时异常捕获_我异常了,快来捕获我,Java异常简述
  5. 一个复杂的nf_conntrack实例全景解析
  6. SaaS-HRM(2)数据库设计与前端框架(企业管理前后台)
  7. vue提示音_VueJS 实现管理后台新订单的语音提醒
  8. Docker bridge 模式 容器如何访问外部世界?
  9. 渔业古谚语 好吃排“第五”——清蒸白姑鱼
  10. 什么是CDN,简单了解CDN
  11. rails相当于java中的什么_Rails中的ERB中的%,%=,%#和-%有什么区别?
  12. 基于秘密共享的MPC:GMW、BGW、Beaver triple
  13. 哪些机型适配了android11,coloros11适配机型_coloros11支持机型有哪些
  14. STM32 CAN总线故障检测功能的使用
  15. EBS - FA资产剩余寿命计算脚本
  16. 微信关注事件bug记录
  17. 微软MPP2.0 Microsoft Pen Protocol V2.0 officialEEAP.pdf
  18. 不能不懂的 Java 源代码编译过程分析
  19. 记录一次扇贝网前端实习面试
  20. python综合应用题、显示数据_Python综合应用题

热门文章

  1. java日志框架(一)JUL 学习 ,这个是什么,他在代码中如何使用,一篇文章讲清楚
  2. pydantic.error_wrappers. ValidationError
  3. 8 Oracle查询
  4. js进阶 12-3 如何实现元素跟随鼠标移动
  5. ArduCopter相关
  6. 曼哈顿距离与曼哈顿矩形-打印回字型矩阵
  7. 【博学谷学习记录】超强总结,用心分享|前端开发基础知识总结(js一)
  8. Alamofire入门笔记
  9. 三子棋(九宫棋)的C语言实现
  10. Matlab【特征提取】心音信号特征提取Matlab系统