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

先看效果图

在这里插入图片描述

0.环境

需要有安装pcl(c版本即可)

1.生成点云文件

修改“png2pcd”文件夹中“pcl_test.cpp"中的内参,如下图:
在这里插入图片描述其中,相机内参可从“intrinsics.json”文件中获得,camera_cx为ppx,camera_cy为ppy。
进入build文件夹,打开终端,输入:

cmake ..
make

将第0帧的rgb图和深度图复制到build文件夹下,并命名为“rgb.jpg",“depth.png”.
在这里插入图片描述在终端中输入:

./pcl_test
输出:
point cloud size=303181
Point cloud saved.

生成pointcloud.pcd文件。
在这里插入图片描述输入

pcl_viewer pointcloud.pcd

查看点云
在这里插入图片描述输入:

pcl_pcd2ply pointcloud.pcd duck.ply

将pointcloud.pcd文件转为duck.ply文件。pointcloud.pcd为输入的pcd文件,duck.ply为想要输出的ply文件的命名。
在这里插入图片描述将duck.ply文件拖入meshlab中手动进行裁剪,裁剪完毕并保存。
在这里插入图片描述点击Draw XYZ axes in world coordinates,显示出相机坐标系,点击Filters—>Normals,Curvatures and Orientation—>Transform:Translate,center,set origin,将裁剪后的点云移动到相机坐标系原点附近,将调整的平移矩阵输入到,get_pose.py中的current_transformation 矩阵里。注意,千万点击apply按钮,也不要进行保存。
在这里插入图片描述
此时可以使用任意编译器重新打开duck.ply文件,包含了有关点云的一些信息,如下图:
在这里插入图片描述紧接着在meshlab中点击Filters—>Normals,Curvatures and Orientation—>Transform:Scale,Normalize,将x、y、z分别缩小1000倍。
在这里插入图片描述
将get_pose.py放在ObjectDatasetTools文件夹下,并运行,进行ICP,生成pose_gt.npy文件。

python get_pose.py
#期间需要不断修正get_pose.py中,current_transformation 里的数值,直到匹配完美。

运行如下代码生成mask和yaml文件

python generate_yaml.py

结果如下
在这里插入图片描述

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值