3-机器人视觉-机器人抓取与操作

news2024/12/17 20:14:22

文章目录

  • 3机器人视觉
    • 目录
  • 1. 传感器和标定
    • 摄像头模型
      • Intrinsic Matrix
      • Extrinsic Matrix
    • 标定
      • 内参标定
      • 手眼标定和外参标定
    • 力传感器&其它传感器
      • 其它传感器
  • 2. 神经网络和图像处理
    • 2D特征处理
      • 常见架构
    • 训练流程
    • 推理流程
    • 部署流程
    • 2D 图像任务
    • 3D Point Cloud Feature
      • PointNet Application
  • 3. 3D位姿估计
    • 分类
    • 位姿估计数据集
      • BOP: Benchmark for 6D Object Pose Estimation
      • YCB数据集
    • 位姿估计指标
    • 传统方法
    • PoseCNN
    • DenseFusion
    • YOLO6D
  • Category-level
    • Unseen Object Pose Estimation
    • Foundation Model
    • Foundation Pose
  • Pose Estimation for Grasping
  • REF

3机器人视觉

目录

  • 1. 传感器和标定
    • 摄像头模型
    • 标定
      • 手眼标定和机器人内参标定

1. 传感器和标定

摄像头模型

Pinhole Camera Model
3 coordinates
• World coordinate
• Camera coordinate
• Image coordinate (2D pixel)

在这里插入图片描述

Task:
• Given: pixel(u, v), and depth z;
• Compute: world coordinate ( x _ w , y _ w , z _ w x\_w,y\_w,z\_w x_w,y_w,z_w )

在这里插入图片描述

Intrinsic Matrix

T: 获取外界坐标到相机坐标

  • f x , f y , c x , c y f_x, f_y, c_x,c_y fx,fy,cx,cy
  • Distortion: S

c_x,c_y是像素分辨率的一半
• 假设相机传感器的宽度为36,高度为24,图像分辨率为6000*4000像素。如果相机的等效 35mm 焦距为50,则
在这里插入图片描述

Extrinsic Matrix

T:
• Model the transformation between camera coordinate to world coordinate
• Deal with “variable” frame (i.e. camera frame is moving)
在这里插入图片描述

标定

内参标定

• 内参矩阵K
• 畸变系数 k 1 , k 2 , p 1 , p 2 , k 3 k_1,k_2,p_1,p_2,k_3 k1,k2,p1,p2,k3

工具:
• ROS,OpenCV(内置工具进行标定)

对棋盘格不同角度拍照测量
• 张氏标定法

在这里插入图片描述

手眼标定和外参标定

手眼标定
• 工具:ROS,OpenCV
• 流程(eye-in-hand):
• 机械臂移动到不同位姿对标定板拍照
• 记录机械臂法兰位姿和对应的图片

眼在手上,求夹爪在相机坐标系下位姿
眼在手外:base_link在camera_link但坐标系下单位姿
在这里插入图片描述
在这里插入图片描述

机器人内参标定:

• 机器人内参误差一般小于摄像头外参带来的误差
• 相关产品需要验证机器人的内参误差(需要工程化验证)
• 标定方法
• 测量:一般为激光跟踪仪或者拖动到特定位置
• 算法:POE或者DH参数后,构建参数迭代

可参考:https://www.universal-robots.com/articles/ur/robot-care-maintenance/kinematic-robot-calibration/

手眼的实践问题(基于RGB-D的测量)
• 用于经典的pipeline
• 误差源较多(机器人内参,摄像头内外参,机器人工具到法兰,摄像头深度和RGB测量等),较难分离;
• 标定和验证流程较长,长期使用中出现精度下降问题比较难定位
• 用于数据生产,训练的模型可能会有硬件依赖问题

在这里插入图片描述

在这里插入图片描述

Depth摄像头:
• 结构光(Structured Light):干扰,室外
• 飞行时间(Time of Flight, ToF) :干扰
• 双目视觉(Stereo Vision):低纹理
Depth 信息:
• Pointcloud and depth image
• 有缺失值

在这里插入图片描述
Depth-RGB位置关系和标定
• 结构光,标定IR和RGB位置
其它:
• Pointcloud信息可以直接用于识别分割等任务
• RGB的识别任务,需要做2D到3D的投影

深度摄像头问题
实践中-深度缺失&不准问题
• 材料,光照,边缘
• 人体头发深度
• 玻璃深度
p 实际量产场景
• 入厂测试,
• 功能&参数测试
• 系统测试
• 供应商问题

力传感器&其它传感器

末端力传感器
• 末端力控

单轴,6轴或者3轴
• 安装和使用
在这里插入图片描述

关节扭矩传感器
• 电流估计,电磁式,应变片式
• 可以用于关节力控
• 可以用于末端六维力估计和末端力控(可靠性和性能相对不如直接测量)
在这里插入图片描述

实践中力传感器问题
• 零飘,异常数据等

其它传感器

• 编码器
在这里插入图片描述
电机侧编码器:18位一一2^18=262144
输出端多圈绝对值编码器:19位一一2^19=524288
关节减速比:1:101
问关节转90°,输出端编码器数值及电机转了多少度?

输出端编码器数值 = ( 90 / 360 ) ∗ 2 1 9 输出端编码器数值=(90/360)*2^19 输出端编码器数值=(90/360)219
电机转了 101*90=9090度

关节位置信息
• 触觉传感器
在这里插入图片描述

2. 神经网络和图像处理

在这里插入图片描述

优化视角
• 寻找最优网络参数组合,使得训练数据中的loss最小化;
主要元素
• 网络结构

特征处理和任务头
• 数据集和dataloader
• Loss function and optimizer
• Training and inference
在这里插入图片描述

2D特征处理

p Conv2d
在这里插入图片描述
这个关于维度的变换图经常在图像卷积中用到
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

p MLP(Linear)
p Other layers
• Pooling
• Activation
Max pooling
• normalization

在这里插入图片描述

在这里插入图片描述
一幅搞笑图片
在这里插入图片描述

Normalization

可以参考一文弄懂Batch Norm / Layer Norm / Instance Norm / Group Norm 归一化方法
在这里插入图片描述

常见架构

CNN
• Residual bock
• U-net
在这里插入图片描述
在这里插入图片描述

Transformer:
• ViT

训练流程

• 1 准备数据集
• 2 准备模型
• 3 准备Loss函数和优化器
• 4 训练循环(模型评估)
• 4.1 optimizer.zero_grad()
• 4.2 outputs = model(images)
• 4.3 loss = criterion(outputs, labels)
• 4.4 loss.backward()
• 4.5 optimizer.step()

在这里插入图片描述

推理流程

• 1 读取图像
• 2 加载模型参数
• 3 模型forward推理

训练流程

在这里插入图片描述

部署流程

在这里插入图片描述

2D 图像任务

p 常见任务
• 分类
• 检测
• 分割
• 其它:生成,人脸,OCR,抠图,降噪,检索等
p 机器人相关:
• 位姿估计和追踪
在这里插入图片描述
在这里插入图片描述

3D Point Cloud Feature

在这里插入图片描述
注意这里会用一个T-Net生成转换矩阵,这是考虑到点云在空间的坐标变换。

PointNet 示例
在这里插入图片描述
在这里插入图片描述

pointNet++
推荐阅读:https://zhuanlan.zhihu.com/p/266324173
关注局部范围的point
在这里插入图片描述
Autonomous Driving Prediction and ML Planning:
• PointNet for subgraph feature extraction
在这里插入图片描述

PointNet Application

Autonomous Driving Prediction and ML Planning:
• PointNet for subgraph feature extraction
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3. 3D位姿估计

分类

 问题分类:
• Instance-level (特定的物体)
• Categories-level (一类物体)
• Unseen Object
 方法分类(Instance-level) :
• Correspondence-based method
• Template-based method
• Voting-based & Regression-Based Method
 输入:
• RGB图像
• RGB+Depth
• 3D模型

Vision-based robotic grasping from object localization, object pose estimation to grasp estimation for parallel grippers: a review

位姿估计数据集

在这里插入图片描述

在这里插入图片描述

BOP: Benchmark for 6D Object Pose Estimation

 BOP Tookit
 BOP Dataset:
https://bop.felk.cvut.cz/datasets/
可以直接使用huggingface cli和toolkit来准备相关数据集
部分数据集略有改动
Data: depth, rgb, model, camera_info, mask
 BOP Format:
• https://github.com/thodan/bop_toolkit/blob/master/docs/bop_datasets_format.md
 Leaderboard
在这里插入图片描述

YCB数据集

 21 YCB objects captured in 92 videos.
 常见物品, 在超市能够买到
 扩展数据集:
• DexYCB,YCB Affordance
• YCB-Sight: A visuo-tactile dataset (视觉和触觉两种模态数据集)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

位姿估计指标

ADD和ADD-S较为常用.
 Visible Surface Discrepancy (VSD)
 Maximum Symmetry-Aware Surface Distance (MSSD)
 Maximum Symmetry-Aware Projection Distance (MSPD)
average point distance (ADD): ref
average closest point distance (ADD-S)
 其它:
• Intersection-over-Union (IoU) 3D
在这里插入图片描述

 BOP评估方式
• 对VSD,MSSD,MSPD增加threshold
• 然后对相关数据集计算AR,然后取平均
在这里插入图片描述

传统方法

SFM(Structure From Motion )
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 2D Image
针对点匹配错误的问题
• PnP (Perspective-n-Point (PnP) )
• PnP+RANSAC(Random sample consensus): ref

OpenCV solvePnPRansac()
在这里插入图片描述
在这里插入图片描述

3D PointCloud
• ICP
• pcl::IterativeClosestPoint

ICP Algorithm: Theory, Practice And Its SLAM-oriented Taxonomy
在这里插入图片描述

Instance-level Pose Estimation

 Correspondence based method
 Template-Based Methods
 Voting-based & Regression-Based Method
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PoseCNN

Pose estimation with RGB Input
[]Model
Feature Extraction
Segmentation
Center point prediction
Rotation and translation regression
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Task and Loss:
• Segmentation
• Center point prediction
* regress to the center direction for each pixel
* Hough voting
• Transformation prediction:
- PLoss: pose loss
- SLoss: shape match loss
计算两种loss,位姿和形状匹配
在这里插入图片描述

Model

  • Feature Extraction
  • Segmentation
  • Center point prediction
  • Rotation and translation regression
    在这里插入图片描述

center point ,预测 x,y的方向, Td
在这里插入图片描述
在这里插入图片描述

DenseFusion

Pose Estimation with RGB and Depth Image
在这里插入图片描述

Feature:
• 在分割的物体上,通过CNN和PointNet的编码器分别提取图像和点云特征
• 在像素坐标下做特征融合(concat)
• 提取全局特征
• 全局特征和局部特征融合(concat)
在这里插入图片描述
在这里插入图片描述

 Head
• Translation, rotation, confidence
 Loss
 Pose Refinement
• Pose residual estimator

在这里插入图片描述

在这里插入图片描述

YOLO6D

 Simple and Fast
 feature extraction
• CNN
 Detection architecture
• Prediction 8 bbox points + 1 center point; and Class
• PnP for 3D estimation uses 9 control point correspondences
在这里插入图片描述
\

Category-level


Example application of category level perception:

  • Object detection in autonomous driving:
    • Hierarchical categories:
    • Car – Truck, SUV, Sedan, etc;
       Category-level pose estimation
      • 针对同类物体估计位姿(例如,杯子)
      generalizing to objects within established categories
      在这里插入图片描述

Category-level pose estimation
• 针对同类物体估计位姿(例如,杯子)
• generalizing to objects within established categories


NOCS:
https://github.com/hughw19/NOCS_CVPR2019
• Represent a category of objects
• Normalized Object Coordinate Space
•Predict NOCS map (x, y, z)
在这里插入图片描述
在这里插入图片描述

Data generation:

  • Mixed Reality data generation
    • Real background with sim object
    • Rendering with different lighting

在这里插入图片描述

Unseen Object Pose Estimation

 Input: CAD model, reference image
• No training on novel object
• Non-like category-level which requires training on category,
and alignment if using NOCS
 Traditional:
• template-based, or feature-based method
 Foundation Model
在这里插入图片描述
在这里插入图片描述

Foundation Model

 Foundation Pose
 SAM-6D
 FreeZe
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Foundation Pose

https://github.com/NVlabs/FoundationPose/tree/main/learning/models

 Input:
• model-based, where a textured 3D CAD model of the object is
provided;
• model-free, where a set of reference images of the object is provided
 Good Performance in these tasks
• model-based, model-free;
• Pose estimation, pose tracking
在这里插入图片描述

 Pose generation data pipeline
• Hierarchical LLM from data generation

  1. LLM Prompt for object description
  2. LLM description for texture generation
    • Physics engine for rendering
    在这里插入图片描述

Pose Estimation for Grasping

 6D object pose estimation
 Grasping pose generation
 Pre-grasping pose
 Path planning and trajectory generation

REF

https://www.shenlanxueyuan.com/course/727/task/29418/show

 Deep Learning-Based Object Pose Estimation: A Comprehensive Survey; “https://github.com/CNJianLiu/Awesome-Object-Pose-Estimation”
 Vision-based Robotic Grasping From Object Localization, Object Pose Estimation to Grasp Estimation for Parallel Grippers: A Review
 Challenges for Monocular6D Object Pose Estimation in Robotics
 BOP: Benchmark for 6D Object Pose Estimation
 FoundationPose: Unified 6D Pose Estimation and Tracking of Novel Objects
 DenseFusion: 6D Object Pose Estimation by Iterative Dense Fusion
 Normalized Object Coordinate Space for Category-Level 6D Object Pose and Size Estimation
 PoseCNN: A Convolutional Neural Network for 6D Object Pose Estimation in Cluttered Scenes
 Real-Time Seamless Single Shot 6D Object Pose Prediction
 Computer Vision: A Modern Approach
 https://deeprob.org/w24/projects/project3/, Project 3 PoseCNN

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2261234.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java String详解(二)

上一篇博客:Java String详解(一) 写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blo…

Qt之点击鼠标右键创建菜单栏使用(六)

Qt开发 系列文章 - menu(六) 目录 前言 一、示例演示 二、菜单栏 1.MenuBar 2.Menu 总结 前言 QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menubar)、多个工具栏(toolbars)、一个状态栏(status…

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(一)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(一) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Lin…

IntelliJ IDEA(2024版) 的安装、配置与使用教程:常用配置、创建工程等操作(很详细,你想要的都在这里)

IDEA的安装、配置与使用: Ⅰ、IDEA 的安装:1、IDEA 的下载地址(官网):2、IDEA 分为两个版本:旗舰版 (Ultimate) 和 社区版 (Community)其一、两个不同版本的安装文件:其二、两个不同版本的详细对比: 3、IDE…

MybatisPlus-配置加密

配置加密 目前配置文件中的很多参数都是明文,如果开发人员发生流动,很容易导致敏感信息的泄露。所以MybatisPlus支持配置文件的加密和解密功能。 我们以数据库的用户名和密码为例。 生成秘钥 首先,我们利用AES工具生成一个随机秘钥&#…

深度学习基础--将yolov5的backbone模块用于目标识别会出现怎么效果呢??

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 yolov5网络结构比较复杂,上次我们简要介绍了yolov5网络模块,并且复现了C3模块,深度学习基础–yolov5网络结构简介&a…

数据结构---图(Graph)

图(Graph)是一种非常灵活且强大的数据结构,用于表示实体之间的复杂关系。在图结构中,数据由一组节点(或称为顶点)和连接这些节点的边组成。图可以用于表示社交网络、交通网络、网络路由等场景。 1. 基本概…

人工智能技术的深度解析与推广【人工智能的应用场景】

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…

软件开发中 Bug 为什么不能彻底消除

在软件开发中,Bug无法彻底消除的原因主要包括:软件复杂度高、人员认知与沟通受限、需求和环境不断变化、工具与测试覆盖不足、经济与时间成本制约。其中“需求和环境不断变化”尤为关键,因为在实际开发中,业务逻辑随着市场与用户反…

【嵌入式软件】跑开发板的前置服务配置

在嵌入式开发中,通常需要在 开发板和主机之间共享、传输和挂载文件。 这篇文章是关于如何在 Ubuntu 中配置 Samba、TFTP 和 NFS 协议的详细步骤。这些协议分别用于远程文件共享、文件传输和内核挂载文件系统。 如何安装协议: 参考:ubuntu18配置:详细的内容我手写了一份文档。…

CTF 攻防世界 Web: FlatScience write-up

题目名称-FlatScience 网址 index 目录中没有发现提示信息,链接会跳转到论文。 目前没有发现有用信息,尝试目录扫描。 目录扫描 注意到存在 robots.txt 和 login.php。 访问 robots.txt 这里表明还存在 admin.php admin.php 分析 在这里尝试一些 sql…

从YOLOv5到训练实战:易用性和扩展性的加强

文章目录 前言一、模型介绍二、YOLOv5网络结构1.Input(输入端):智能预处理与优化策略2.Backbone(骨干网络):高效特征提取3.NECK(颈部):特征增强与多尺度融合4.Prediction…

Ilya Sutskever发表了对AI未来发展的颠覆性看法

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Crawl4AI:一个为大型语言模型(LLM)和AI应用设计的网页爬虫和数据提取工具实战

这里写目录标题 一、crawl4AI功能及简介1、简介2、特性 二、项目地址三、环境安装四、大模型申请五、代码示例1.生成markdown2.结构化数据 一、crawl4AI功能及简介 1、简介 Crawl4AI 是一个开源的网页爬虫和数据抓取工具,一个python项目,主要为大型语言…

HuLa——一款基于 Tauri+Vue3 构建的桌面即时通讯应用

文章目录 一、HuLa简介二、技术栈介绍三、安装运行四、界面体验五、开源地址 一、HuLa简介 HuLa 是一个基于 Tauri、Vite 5、Vue 3 和 TypeScript 构建的即时通讯系统。它利用了 Tauri 的跨平台能力和 Vue 3 的响应式设计,结合了 TypeScript 的类型安全特性和 Vite…

websocket_asyncio

WebSocket 和 asyncio 指南 简介 本指南涵盖了使用 Python 中的 websockets 库进行 WebSocket 编程的基础知识,以及 asyncio 在异步非阻塞 I/O 中的作用。它提供了构建高效 WebSocket 服务端和客户端的知识,以及 asyncio 的特性和优势。 1. 什么是 WebS…

《Java核心技术I》Swing用户界面组件

Swing和模型-视图-控制器设计模式 用户界面组件各个组成部分,如按钮,复选框,文本框或复杂的树控件,每个组件都有三个特征: 内容,如按钮的状态,文本域中的文本。外观,颜色&#xff0c…

如何通过递延型指标预测项目的长期成果?

递延型指标(Deferred Metrics)是指那些并不立即反映或直接影响当前操作、决策或行为的指标,而是随着时间的推移,才逐渐显现出影响效果的指标。这类指标通常会在一段时间后反映出来,或者需要一定的周期才能展现其成果或…

uni-app开发AI康复锻炼小程序,帮助肢体受伤患者康复!

**提要:**近段时间我们收到多个康复机构用户,咨询AI运动识别插件是否可以应用于肢力运动受限患者的康复锻炼中来,插件是可以应用到AI康复锻炼中的,今天小编就为您介绍一下AI运动识别插件在康腹锻炼中的应用场景。 一、康复机构的应…

C++(十八)

前言: 本文依据上一篇,继续对C中的函数进行学习。 一,内联函数。 再执行函数代码时,比不使用函数花费了更多时间,因为总结步骤,传递参数和返回值都很花费时间。 因此,在调试小型函数时&…