机器人抓取中物体定位算法概述

本文探讨了机器人抓取中物体定位的关键技术,包括定位但不识别、目标检测和物体实例分割。介绍了2D RGB图像和3D点云方法,如形状基元拟合、显著性区域检测、2D/3D目标检测和实例分割算法。这些方法在不同的信息条件下,帮助机器人确定目标物体的位置和类别,为后续抓取操作提供支持。

本文同步于微信公众号:3D视觉前沿,欢迎大家关注。

1. 引言

机器人抓取的首要任务,是确定要抓什么,也就是需要定位目标物体在输入数据中的位置。这个过程可以分为三个层次,分别为物体定位但不识别、物体检测、物体实例分割。物体定位但不识别是指获得目标物体的2D/3D范围但是不知道物体的类别;目标检测是指得到目标物体的2D/3D包围盒,同时识别目标物体的类别;目标实例分割提供目标物体所占有的像素或者点级别的区域信息,同时识别目标物体的类别。本文来自论文https://arxiv.org/abs/1905.06658,涉及的论文也都可以在论文中找到,也包含于https://github.com/GeorgeDu/vision-based-robotic-grasping,本文就不引用了。

2. 定位但不识别

当不知道目标物体的类别时,仍然可以采用一些方法获得目标物体的2D/3D区域,进而支撑机器人抓取。当我们知道物体的外轮廓形状时,可以采用拟合形状基元的方法。当我们什么信息都没有时,可以采用显著性物体检测方法,获得潜在可能的待抓取物体区域。

2.1 基于2D RGB图像的方法

在这里插入图片描述
图1 基于2D图像的定位但不识别方法

a.拟合形状基元: 目标物体的形状可以是一个椭圆、一个多边形或者一个四边形,这些2D形状可以看作是形状基元,通过拟合方法,可以定位到目标物体。该方法的一般步骤为先提取出图像的所有封闭轮廓,其次再用拟合方法得到潜在的可能目标物体,如果存在多个候选,可以使用模板匹配去除干扰。在OpenCV中已经集成了例如拟合椭圆、拟合多边形这样的函数。

b.显著性区域检测: 和特定形状基元相比,显著性区域可以是任意形状。2D显著性区域检测的目的是定位和分割出给定图像中,最符合视觉显著性的区域,这更像一个分割任务。非深度学习的方法主要挖掘低层次的特征表示,或者依据一些经验例如颜色对比、形状先验来得到显著性区域。基于深度学习的方法主要包括基于多层感知机(MLP)的方法,基于全卷积网络(FCN)的方法和基于胶囊网络的方法。

在目前的机器人抓取任务中,该方法仍处在初级阶段。在工业领域,如果待抓取物体形状固定且轮廓清晰,可以采用拟合形状基元的方法。在另外一些机器人抓取任务中,如果背景的颜色信息和目标物体的颜色信息差别较大,也可以去除背景得到目标物体。在Dex-Net2.0中,目标物体放置在绿色背景的桌面上,通过背景颜色分离,可以得到目标物体。

2.2 基于3D点云的方法

在这里插入图片描述
图2 基于3D点云的定位但不识别方法

a.拟合3D形状基元: 目标物体的形状可以是一个球体、圆柱体或者长方体,这些3D形状可以看作是3D形状基元。存在很多

### 人形机器人抓取技术概述 #### 抓取的技术原理 为了成功执行抓握动作并维持稳定性,人形机器人需具备复杂的传感与控制系统。这类系统不仅依赖于机械结构设计来提供物理支持,还依靠先进的算法来进行实时调整和优化[^3]。 #### 实现方法 1. **力觉反馈机制** 力觉传感器安装在手指尖端和其他接触部位,用于检测外部施加的力量大小及其变化情况。通过这些信息,控制器能够判断物体表面特性以及当前作用力是否安全合理。 2. **视觉引导定位** 利用摄像头或其他光学装置获取目标物的空间位置参数,并将其转换成坐标系内的具体数值供后续操作参考。此过程通常涉及图像识别软件的支持以提高精度。 3. **自适应夹持策略** 基于预设模型库匹配最合适的抓握姿态;或者采用机器学习的方法让机器人自主探索最佳方案,在面对未知形状的对象时也能灵活应对。 4. **平衡控制逻辑** 当人形机器人需要抓握和搬运中等重量的物品时,它会面临如何保持自身平衡的挑战。此时,机器人内部的姿态估计模块将发挥作用,结合IMU惯性测量单元的数据计算出最优的动作路径,确保整个过程中不会因为外力影响而失去重心。 ```python def adaptive_grasp(object_shape, object_weight): """ 自适应抓取函数 参数: object_shape (str): 物体形状描述字符串 object_weight (float): 物体重力值 返回: tuple: 包含抓取角度(float), 执行力度(int) 的元组 """ # 根据输入对象特征选择合适的手指配置 finger_configuration = select_finger_config(object_shape) # 计算适合该质量级别的力量水平 force_level = calculate_force_for_weight(object_weight) return adjust_angle_and_strength(finger_configuration, force_level) ``` #### 应用场景 - **物流仓储领域**:自动分拣货物、码垛作业; - **医疗护理辅助**:帮助患者移动身体部分或协助日常生活活动; - **家庭服务型产品**:清洁打扫房间角落难以触及的地方; - **制造业生产线末端质检环节**:代替人工完成精细零件组装检验工作。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值