物体6D位姿的含义

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

在一些有关物体6D位姿估计或者机器人抓取的论文中,我们常会听到一个词:物体6D位姿估计 (6D object pose estimation),那什么是物体的6D位姿呢?它和SLAM中的相机6D位姿一样吗?

6D是指6个自由度,代表了3个自由度的位移 (也叫平移 (Translation)),以及3个自由度的空间旋转 (Rotation),合起来就叫位姿 (Pose)。位姿是一个相对的概念,指的是两个坐标系之间的位移和旋转变换。物体6D位姿和相机6D位姿是相似的,区别在于从哪个坐标系变换到相机坐标系。

相机6D位姿是指拍摄当前图像时刻,相机坐标系相对于世界坐标系发生的平移和旋转变换。世界坐标系可以定义在任意位置,也可以和当前相机坐标系重合。相机6D位姿通常用世界系到相机系的RT变换来表示,也即: T c = R c w ∗ T w + t c w T_c = R_{cw} * T_w + t_{cw} Tc=RcwTw+tcw,其中 R c w R_{cw} Rcw代表由世界系到相机系的旋转, t c w t_{cw} tcw 代表由世界系到相机系的平移, T c T_c Tc代表相机系下的3D点, T w T_w Tw代表世界系下的3D点。

而物体6D位姿是指拍摄当前图像时刻,相机坐标系相对于原始物体所在的世界系,发生的平移和旋转变换。原始物体可以放在世界系的任何位置,而且通常将物体本身的重心和朝向与世界系对齐。物体6D位姿通常用原始物体所在世界系到相机系的RT变换来表示,也即: T c = R c m ∗ T m + t c m T_c = R_{cm} * T_m + t_{cm} Tc=RcmTm+tcm,其中 R c m R_{cm} Rcm代表由原始物体 (model) 所在的世界系到相机系的旋转, t c m t_{cm} tcm代表由物体所在的世界系到相机系的平移, T c T_c Tc代表相机系下物体的3D点, T m T_m Tm代表物体所在世界系下物体的3D点。因此,当世界系和物体本身对齐时,相机的6D位姿等价于物体的6D位姿。

具体我们看一个物体6D位姿的例子,数据来自preprocessed LineMod dataset数据集,原始物体3D模型本身的重心和朝向与世界系是对齐的,其坐标值为 T m T_m Tm

在这里插入图片描述
使用相机拍摄带有目标物体的场景后,恢复相机坐标系下的点云如下,此时目标物体的3D坐标为 T c T_c Tc
在这里插入图片描述
基于给定的Ground Truth的物体6D位姿,camRm2c代表物体所在世界系到相机系的旋转矩阵R,camtm2c代表物体所在世界系到相机系的平移矩阵t:

cam_R_m2c: [0.09630630, 0.99404401, 0.05100790, 0.57332098, -0.01350810, -0.81922001, -0.81365103, 0.10814000, -0.57120699],
cam_t_m2c: [-105.35775150, -117.52119142, 1014.87701320],

使用 T c = R c m ∗ T m + t c m T_c = R_{cm} * T_m + t_{cm} Tc=RcmTm+tcm,将物体变换到相机系下如下图:

在这里插入图片描述
此时可以看到,根据物体的6D位姿 R c m R_{cm} Rcm t c m t_{cm} tcm 将物体由本身的世界系变换到了相机系下,将物体3D点与场景3D点叠加在一起的效果如下:
在这里插入图片描述
此时,也可以结合相机的内参K,

cam_K: [572.4114, 0.0, 325.2611, 0.0, 573.57043, 242.04899, 0.0, 0.0, 1.0]

将物体投影到2d,如下图,可以看到也是正确的。

在这里插入图片描述

因此,物体的6D位姿是和物体3D模型本身的世界坐标系相关的,同一个相机系下,不同物体的6D位姿是不一样的;如果保持物体和相机的相对位置不变,则物体的位姿是不变的;如果物体不动,相机系发生了移动,则新的物体位姿需要在原来的基础上再叠加相机系的相对移动位姿 △ R △R R △ t △t t,这也是使用 LabelFusion 构建6D真值数据集的原理。

p.s. 上文中使用的是preprocessed的LineMOD数据集,物体的3D模型中心在 ( 0 , 0 , 0 ) (0,0,0) (0,0,0)位置,这里把原始的LineMOD数据集也测试一下。同样是ape类别,其3D模型如下图。

在这里插入图片描述
可以看到其与上文的3D模型差别了绕y轴旋转180°,并且旋转后的重心需要向坐标原点平移。首先计算旋转矩阵 R m m o R_{mm_o} Rmmo,再计算 t m m o t_{mm_o} tmmo

绕y轴旋转180°,旋转矩阵 R m m o = [ − 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , − 1 ] R_{mm_o}=[-1,0,0,0,1,0,0,0,-1] Rmmo=[1,0,0,0,1,0,0,0,1];原始物体的中心为 c m o = ( 4.5445 , 4.6495 , − 44.5433 ) c_{m_o}=(4.5445,4.6495,-44.5433) cmo=(4.5445,4.6495,44.5433),由于 T m = R m m o ∗ T m o + t m m o T_m=R_{mm_o}*T_{m_o}+t_{mm_o} Tm=RmmoTmo+tmmo,其中 t m m o = c m − R m m o ∗ c m o t_{mm_o}=c_m-R_{mm_o}*c_{m_o} tmmo=cmRmmocmo,而 c m = ( 0 , 0 , 0 ) c_m=(0,0,0) cm=(0,0,0)为preprocessed后的物体的中心坐标,由此可得 t m m o = ( 4.5445 , − 4.6495 , − 44.5433 ) t_{mm_o}=(4.5445,-4.6495,-44.5433) tmmo=(4.5445,4.6495,44.5433)

按照原始LineMOD提供的真值,有 T c = R c m o ∗ T m o + t c m o T_c = R_{cm_o} * T_{m_o} + t_{cm_o} Tc=RcmoTmo+tcmo,其中 R c m o R_{cm_o} Rcmo代表了由原始物体向相机系物体的旋转, T m o T_{m_o} Tmo代表原始物体的坐标点, t c m o t_{cm_o} tcmo代表原始物体向相机系物体的平移。可以进行变换:

T c = [ R c m o t c m o ] ∗ T m o T_c = [R_{cm_o} t_{cm_o}] * T_{m_o} Tc=[Rcmotcmo]Tmo
= [ R c m o t c m o ] ∗ [ R m m o T − R m m o T t m m o ] ∗ [ R m m o t m m o ] ∗ T m o = [R_{cm_o}t_{cm_o}]*[R_{mm_o}^T -R_{mm_o}^Tt_{mm_o}]*[R_{mm_o} t_{mm_o}]*T_{m_o} =[Rcmotcmo][RmmoTRmmoTtmmo][Rmmotmmo]Tmo
= [ R c m o t c m o ] ∗ [ R m m o T − R m m o T t m m o ] ∗ T m =[R_{cm_o}t_{cm_o}]*[R_{mm_o}^T -R_{mm_o}^Tt_{mm_o}]*T_m =[Rcmotcmo][RmmoTRmmoTtmmo]Tm
= [ R c m t c m ] ∗ T m =[R_{cm} t_{cm}] * T_m =[Rcmtcm]Tm

其中第二行第二项是第三项的逆。根据原始LineMOD提供的真值:

R c m o R_{cm_o} Rcmo为:
-0.0963063 0.994044 -0.0510079
-0.573321 -0.0135081 0.81922
0.813651 0.10814 0.571207 r

t c m o t_{cm_o} tcmo为:
-111.814 -78.3622 1036.12

代入上式第三行,得到第四行最终的preprocessed后的物体的6D位姿 [ R c m t c m ] [R_{cm} t_{cm}] [Rcmtcm],和preprocessed LineMOD提供的真值是一致的。

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

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

相关文章

春秋云镜:CVE-2019-9042(Sitemagic CMS v4.4 任意文件上传漏洞)

一、题目 靶标介绍: Sitemagic CMS v4.4 index.php?SMExtSMFiles 存在任意文件上传漏洞,攻击者可上传恶意代码执行系统命令。 进入题目: admin/admin /index.php?SMExtSMFiles&SMTemplateTypeBasic&SMExecModeDedicated&SMFil…

midi键盘接电脑实现电子琴功能

将一台midi键盘接到电脑上,变成一台电子琴,似乎是一个很简单的事情。找一个音乐编辑类软件,可以接受midi键盘的输入就可以了。比如 freeepiano 就可以接midi键盘。但是这样实现的其实是电钢琴,而不是电子琴。 为什么?…

简述docker的网络模式

Docker 提供了多种网络模式,用于控制容器之间以及容器与主机之间的网络通信。以下是 Docker 的一些常见网络模式 briage模式: docker容器启动时默认就是该模式,在该模式下,docker容器会连接到一个名为docker0的虚拟以太网桥上,通…

PG Music Band-in-a-Box 2021 + RealBand WiN 智能伴奏软件安装升级包

Band-in-a-Box 2021 是一款屡获殊荣的自动伴奏软件,非常易于使用!只需使用标准和弦符号(例如 C、Fm7 或 C13b9)输入任何歌曲的和弦,选择您想要的风格,剩下的就交给 Band-in-a-Box 2021 。Band-in-a-Box 202…

Android 11 Display亮灭屏

系统休眠唤醒的时候会涉及到亮灭屏,下面分析下系统(高通8155平台)Display亮灭屏流程 1. 点亮屏幕 点亮屏幕入口在framework/base/下面LightsService.java,然后通过调用SurfaceControl.java ,最终调用到framework/native下面的Sur…

lgg7无需9008,最简单无脑root

LGg7 root方法(解bl锁后通用) 前提,已经解了bl锁(这个不难,LG的845机型解锁方法都一样。除了g7的t版,这个要换u硬解) 工具:已破解的LG up(LG官方的线刷工具)&#xff0c…

SAP ABAP实现类似于ME23N/MIGO的折叠屏幕开发

本文用于说明折叠屏幕的开发实现方式,类似于标准前台ME23N或者MIGO类似的效果,最终demo程序实现效果如下。 实际上屏幕折叠并不是真正的控件,而是根据想要的折叠或者展开效果,来选择不同的子屏幕进行展现。 比如下图点击折叠抬头…

小新pad TB-J606按键无法进入刷机模式,9008端口无法识别,可尝试如下主板短接操作,操作步骤

小新pad TB-J606按键无法进入刷机模式,9008端口无法识别,可尝试如下主板短接操作,操作步骤 1、断开电池连接线 2、镊子短接图中两点 3、安装电池 4、连接数据线,等待9008端口识别 5、移除镊子,进行刷机 具体操作步骤…

s6 android 6.0,三星Android 6.0更新升级详细名单:只有国行S6 Edge(G9250)

此前,外媒曾泄露了一份三星机型的Android 6.0首批升级清单,去年的旗舰机Galaxy S5竟不在其中,使得消费者对手机第一大厂很失望。其中,三星目前的旗舰智能手机Galaxy S6, Galaxy S6 edge, Galaxy Note5和Galaxy S6 edge将升级到And…

新能源汽车技术的最新进展和未来趋势

文章目录 电池技术的进步智能驾驶与自动驾驶技术充电基础设施建设新能源汽车共享和智能交通未来趋势展望结论 🎉欢迎来到AIGC人工智能专栏~探索新能源汽车技术的最新进展和未来趋势 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客…

正则表达式一小时学完

闯关式学习Regex 正则表达式,我感觉挺不错的,记录一下。 遇到不会的题,可以评论交流。 真的很不错 链接 Regex Learn - Step by step, from zero to advanced.

如何基于亚马逊云科技打造高性能的 SQL 向量数据库 MyScale

MyScale 是一款完全托管于亚马逊云科技、支持 SQL 的高效向量数据库。MyScale 的优势在于,它在提供与专用向量数据库相匹敌甚至优于的性能的同时,还支持完整的 SQL 语法。在这篇文章中,我们将阐述 MyScale 是如何借助亚马逊云科技的基础设施&…

Supervisor配置和使用

Supervisor配置和使用 一、使用背景二、工具简介三、安装四、配置文件1. 位置2. 步骤 五、服务启动六、supervisorctl客户端管理七、常用操作指令八、示例九、配置项说明supervisored.conf配置项说明进程任务配置项说明 十、web页面监控 一、使用背景 目前在公司搭建了一套基于…

Mac最佳屏幕录像机:FoneLab Screen Recorder

FoneLab Screen Recorder是一款功能强大的屏幕录像机软件,它允许您在 Mac 上捕获视频、音频、在线教程等,您可以轻松自定义大小、编辑视频或音频等。如果您想录制会议、电影、电话、教程、电视节目、歌曲、快照或其他内容,FoneLab Screen Rec…

MRMC推机器人摄像机Polycam,可自动跟拍运动员

这款名为Polycam的电动相机机器人支持使用图像识别和人工智能技术来追踪运动员的动作,完全不需要人工摄像师的操作。 近日,据外媒报道,MRMC推出一款名为Polycam的电动相机机器人,其支持使用图像识别和人工智能技术来追踪运动员的…

使用Workerman做一个简单的录像直播功能

1、准备好项目 之前做过一个简单的聊天室,我是根据之前弄的聊天室改过来的。 参考:https://blog.csdn.net/qq_38231822/article/details/1128004572、大致思路 这些小东西都是自己没事捅咕玩的,随便写一写。概括来说的话就是将录像定时的转成…

livekit 简单上手教程

什么是livekit? livekit是一个开源的webrtc项目,基于pion实现了SFU架构的go程序。 它主要有以下几个特性: 可以水平扩展的sfu架构。有完整的sdk程序接口供开发人员使用。基于JWT进行身份验证,可与大部分系统进行权限集成。内置Tur…

【Supervisor】Supervisor使用教程

在项目中,经常有脚本需要常驻运行的需求。以PHP脚本为例,最简单的方式是: Copy $ nohup php cli.php & 这样能保证当前终端被关闭或者按CRTLC后,脚本仍在后台运行。但是没法保证脚本异常后自动重启等。 Supervisor 是用Py…

learnOpenGL_07_摄像机

1、 摄像机/观察空间 以摄像机的视角作为场景原点时场景中所有的顶点坐标:观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机,需要它在世界空间中的位置、观察的方向、一个指向它右侧的向量以及一个指向它上方的向量。…

AWS助理架构师认证培训实操练习 | How to SSH using Windows

视频来源:B站《AWS 认证解决方案架构师 助理级 SAA-C03》 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:AWS助理架构师认证培训实操练习 | 汇总_热爱编程的通信…