6d位姿估计---制作自己的LINEMOD数据集过程记录(ObjectDatasetTools)

这篇具有很好参考价值的文章主要介绍了6d位姿估计---制作自己的LINEMOD数据集过程记录(ObjectDatasetTools)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先说结论,ObjectDatasetTools不好用,开发了一个有效的方法,最后效果连接如下:

有效的方法

对6D位姿估计感兴趣的小伙伴可以加我,拉到位姿估计交流群,群里会不定期组织文献、代码和技术的视频交流分享

传送门

--------------分割线---------------
在经历了好几天的煎熬后,发现配置labelfusion太难了,换
ObjectDatasetTools试试吧。
在复现这个代码的时候,深度参考了这位大哥的笔记,以及我自己对官方readme的翻译。
配置相机的部分不再赘述,本文只关注位姿、label以及mask生成的部分。

1.环境配置

(1)使用conda新建一个Python2.7的虚拟环境。

conda create -n ObjectDatasetTools python=2.7

之后按照官方教程走就行。

(2)升级pre-install包

sudo apt-get update
sudo apt-get upgrade

(3)安装依赖

sudo apt-get install build-essential cmake git pkg-config libssl-dev libgl1-mesa-glx

(4)在虚拟环境中安装Python依赖包

sudo pip install numpy Cython==0.19 pypng scipy scikit-learn open3d==0.9.0 scikit-image tqdm pykdtree opencv-python==3.3.0.10 opencv-contrib-python==3.3.0.10  trimesh==2.38.24

数据处理

(1)准备

在arucomarkers文件夹中使用适当大小的aruco标记(ID 1-13)对pdf进行彩色打印。在感兴趣的对象周围贴上标记,如图所示,确保没有带有重复IDS的标记。
图中的ArUco标记可以从这里获得
6d位姿估计---制作自己的LINEMOD数据集过程记录(ObjectDatasetTools)在这里插入图片描述

(2)用深度相机记录数据

对旧模型(这里的旧模型我不确定是不是指的librealsense SDK 1.0的玩家,自己尝试吧。)使用record.py,对librealsense SDK 2.0使用recordf2.py:

python record.py LINEMOD/OBJECTNAME

如:通过如下代码实现记录一个sugar box。

python record.py LINEMOD/sugar

默认情况下,脚本在倒计时5后录制40秒,录制时间长度可以在record.py中的第20行进行修改。可以通过按“q”更改录制间隔或退出录制。然后稳定移动相机以获得物体不同视图,同时随时保持2-3个标记在相机的视野内。

注意项目假设所有序列都保存在名为“LINEMOD”的文件夹下,使用其他文件夹名称会报错。

如果使用record.py创建序列,彩色图像、深度图以及相机参数会自动保存在序列目录下。

需要注意的是如果已有彩色图像或者深度图像,则应将彩色图像(.jpg)放在名为“JPEGImages”的文件夹中,并将对其的深度图像放在“depth”文件夹中。注意:该算法嘉定深度图与彩图对齐。将彩图按顺序从0.jpg、1.jpg、…、600.jpg和相应的深度图命名为:0.png,…,600.png,同时应在序列目录下创建一个名为“intrinsics.json”的文件,并按照如下形式手动输入相机参数,如:

{"fx": 614.4744262695312, "fy": 614.4745483398438, "height": 480, "width": 640, "ppy": 233.29214477539062, "ppx": 308.8282470703125, "ID": "620201000292"}

如果不知道相机内参,可以输入一个粗略的估计。所需要的参数为fx,fy,cx,xy。其中,通常,fx=fy等于图像 的宽度,cx=cy是图像的中心。例如:对于640*480分辨率的图像,fx,fy=640,cx=320、cy=240

(3)获取帧变换

以指定的间隔(可以在 config/registrationParameters 中更改间隔)对第一帧计算帧的变换,将变换(4*4 同构变换)保存为 numpy 数组 (.npy)。

python compute_gt_poses.py LINEMOD/duck2

(4)目标物体三维重构

python register_scene.py LINEMOD/duck2

原始的registeredScene.ply 将保存在指定目录下(例如,LINEMOD/sugar)。 registerScene.ply 是场景的注册点云,包括桌面、标记和扫描过程中暴露的任何其他对象,并具有一定程度的噪声消除。 生成的网格看起来如下图,需要在步骤 5 中手动处理:
6d位姿估计---制作自己的LINEMOD数据集过程记录(ObjectDatasetTools)
或者,可以尝试通过尝试 register_segmented 而不是 register_scene 来跳过所有手动工作。

python register_segmented.py LINEMOD/duck2

默认情况下,register_segmented尝试删除所有不需要的背景并执行表面重建,将注册的点云转换为三角形网格。如果MESHING设置为false,脚本将仅尝试移除背景并使用平坦表面自动完成看不见的底部(如果FILLBOTTOM设置为 true),您将需要执行步骤5。

但是,register_segmented可能会失败,因为它使用一些特殊的方法来分割背景,因此您可能需要调整一些参数以使其与您的对象一起使用。要调整的最重要的旋钮是“MAX_RADIUS”,它会切断任何深度读数,其到观察到的aruco标记中心的欧几里得距离大于指定值。此值当前设置为0.2m,如果您有更大的对象,您可能需要增加此值以不切断对象的一部分。运行register_segmented的结果如下所示:
6d位姿估计---制作自己的LINEMOD数据集过程记录(ObjectDatasetTools)

(5)手动处理点云数据

如果对运行register_segmented的结果满意,可以跳过步骤5.
注册的点云需要处理为:

  1. 删除不感兴趣的背景;
  2. 执行表面重建并完成缺失的一侧,反之亦然;
  3. 处理重建的网络(可能需要切掉部分并重新完成缺失的一侧);
  4. 确保处理后的网格没有任何孤立噪音。

最终生成三角形网格,而不是算法生成的register点云。作者推荐使用meshlab进行处理。

(6)生成图像掩码和标签文件

当为自定义对象完成步骤1-4后,运行如下代码:

python create_label_files.py all

或者(推荐)

python create_label_files.py LINEMOD/duck2

此步骤创建一个名为foldername.ply(例如:sugar.ply)的新网格,其AABB以原点为圆心,并且与OBB的尺寸相同。同时还生成图像掩码(保存在mask文件下),关于新网格的4*4同质变换(保存在transforms里),标签文件保存在labels文件。
通过运行以下命令直观地检查创建的 3D 边界框和掩码的正确性:

python inspectMasks.py LINEMOD/duck2

(7)最后生成的文件如下图所示

6d位姿估计---制作自己的LINEMOD数据集过程记录(ObjectDatasetTools)文章来源地址https://www.toymoban.com/news/detail-423026.html

到了这里,关于6d位姿估计---制作自己的LINEMOD数据集过程记录(ObjectDatasetTools)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码

    本文接着分享空间目标位姿跟踪和滤波算法中用到的一些常用内容,希望为后来者减少一些基础性内容的工作时间。以往分享总结见文章:位姿跟踪 | 相关内容目录和链接总结(不断更新中~~~) 本文介绍如何 利用特征点求解目标体坐标系相对于相机坐标系的位姿 。 PnP(Pe

    2024年02月10日
    浏览(40)
  • 纸箱拆垛位姿估计流程

    针对工业场景下的纸箱拆垛,一般需要借助深度学习进行纸箱2D Mask提取,本文由于缺少深度学习方面的知识,主要通过传统的3D方法进行估计。 本文中主要的流程包括以下内容: 相机标定(内外参)和手眼标定:标定相机内参,以及标定相机与机器人的关系(EyeToHandEyeInH

    2024年02月04日
    浏览(31)
  • 利用ArUco码实现相机位姿估计(Python)

    环境:python3.7 opencv-contrib-python 4.5.1.48 相机标定就是求相机的内参矩阵mtx和畸变系数dist 首先需要利用相机(你需要标定的)拍摄标定板照片,20张左右。拍摄照片的时候各个角度都拍一些,可以变换标定板的位置,但不要大幅度变换相机(不要翻转镜头,上下颠倒相机等等)

    2024年04月28日
    浏览(41)
  • 通过Apriltag码估计物体在相机坐标系下的位姿

    下面的python脚本实现了通过Apriltag码(tag16h5)估计物体在相机坐标系下的位姿的功能。 世界坐标系原点为id=10的tag中心,物体坐标系各坐标轴朝向和世界坐标系相同,仅存在一个平移变换obj2world_T。 参考:Apriltag使用之二:方位估计(定位)

    2024年02月14日
    浏览(52)
  • 目标检测YOLO实战应用案例100讲-面向固体废物分拣的目标位姿估计(续)

    目录 3 轻量化目标检测方法研究  3.1 轻量化模块  3.1.1 MobileNet v1  3.1.2 MobileNet v2  3.1.3 MobileNet v3 

    2024年01月25日
    浏览(45)
  • ROS EKF 机器人位姿估计功能包:robot_pose_ekf 详解

    没有launch文件夹,有两个launch文件都在外面 没有config文件夹,参数设置在launch文件中进行 src文件夹—存放cpp文件 include文件夹—存放头文件 srv—存放服务器参数文件 CMakeLists.txt — 编译文件 package.xml — 功能包信息文件 robot_pose_ekf的功能包参数配置都在launch文件中进行,没有

    2024年02月09日
    浏览(37)
  • 记录自己安装文件系统性能测试工具——IOZone过程

    测试环境: 安装IOZone环境 源码编译安装 ​ 下载源码: ​ 解压编译: 添加环境变量(可选) 执行如下命令,查看IOZone版本 ​ 返回内容如下所示,表示安装已经完成: 运行 ​ 参数说明: 1)自动测试示例 ​ 返回结果: ​ 其中IOZone输出的第一组包含标题信息,其中显示有

    2024年01月19日
    浏览(47)
  • ROS EKF 机器人位姿估计功能包:robot_pose_ekf | 仿真环境实践

    仿真环境为 一个无人机,具备3D POSE里程计数据,和imu数据。 将 robot_pose_ekf.launch 文件进行如下更改 即关掉2D轮速里程计 打开imu和vo里程计 并将话题重映射 vo重映射为/firefly/odometry_sensor1/odometry imu_data重映射为/firefly/imu 启动 robot_pose_ekf 节点 出现如下报错 [ERROR] [1686016442.63011

    2024年02月09日
    浏览(38)
  • 文献学习-37-动态场景中任意形状针的单目 3D 位姿估计:一种高效的视觉学习和几何建模方法

    Authors: Bin Li,† , Student Member, IEEE, Bo Lu,† , Member, IEEE, Hongbin Lin, Yaxiang Wang, Fangxun Zhong, Member, IEEE, Qi Dou, Member, IEEE and Yun-Hui Liu, Fellow, IEEE Source: IEEE TRANSACTIONS ON MEDICAL ROBOTICS AND BIONICS Keywords: Surgical Robotics, Pose Estimation, Geometry Modeling, Vision-based Manipulation Abstract: 导向图像的针具姿

    2024年04月17日
    浏览(39)
  • 记录自己从零开始创建个人小程序到发布的大致过程

    首先不管是要创建个人小程序还是公众号等,都要打开微信公众平台。本文以微信小程序为例,创建一个手工花名片。本文只用于自己学习记录。参考微信社区 1、打开微信公众,点击注册 链接:https://mp.weixin.qq.com/ 2、点击注册后,跳转页面,点击小程序 3、填写注册小程序

    2024年02月12日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包