利用Realsense D435和Mocap制作TUM数据集

  • 开门见山
    • 步骤

开门见山

步骤

  1. 如果有Mocap,根据mocap系统指示获取Groundtruth,我实验室的mocap为optitrack,使用vrpn_client_ros包获取groundtruth。具体参考这里。

  2. 同时录制话题/camera/color/image_raw/camera/aligned_depth_to_color/image_raw/vrpn_client_node/RigidBody1/pose,分别为RGB数据、对齐到RGB相机后的深度图和mocap输出的真实pose。

  3. 使用以下程序一键生成TUM数据格式,前提是已经安装好ROS,注意修改代码中bag包名字、话题名和输出路径

#!/bin/python
import roslib
import rosbag
import rospy
import cv2
import os
from sensor_msgs.msg import Image
from geometry_msgs.msg import Pose, Quaternion, Point
from cv_bridge import CvBridge
from cv_bridge import CvBridgeErrorros_bag = 'sence5.bag'  #bag包路径
save_path = 'sence5/'   #输出数据集的路径
rgb = save_path + 'rgb/'  #rgb path
depth = save_path + 'depth/'   #depth pathbridge = CvBridge()file_handle1 = open(save_path + 'rgb.txt', 'w')
file_handle2 = open(save_path + 'depth.txt', 'w')
file_handle3 = open(save_path + 'groundtruth.txt', 'w')with rosbag.Bag(ros_bag, 'r') as bag:for topic,msg,t in bag.read_messages():if topic == "/camera/color/image_raw":   #rgb topiccv_image = bridge.imgmsg_to_cv2(msg,"bgr8")timestr = "%.6f" %  msg.header.stamp.to_sec()   #rgb time stampimage_name = timestr+ ".png"path = "rgb/" + image_namefile_handle1.write(timestr + " " + path + '\n')cv2.imwrite(rgb + image_name, cv_image)if topic == "/camera/aligned_depth_to_color/image_raw":  #depth topiccv_image = bridge.imgmsg_to_cv2(msg)#cv_image = bridge.imgmsg_to_cv2(msg, '32FC1')#cv_image = cv_image * 255timestr = "%.6f" %  msg.header.stamp.to_sec()   #depth time stampimage_name = timestr+ ".png"path = "depth/" + image_namefile_handle2.write(timestr + " " + path + '\n')cv2.imwrite(depth + image_name, cv_image)if topic == '/vrpn_client_node/RigidBody_ZLT_UAV/pose': #groundtruth topicp = msg.pose.positionq = msg.pose.orientationtimestr = "%.6f" %  msg.header.stamp.to_sec()file_handle3.write(timestr + " " + str(round(p.x, 4)) + " " + str(round(p.y, 4)) + " " + str(round(p.z, 4)) + " ")file_handle3.write(str(round(q.x, 4)) + " " + str(round(q.y, 4)) + " " + str(round(q.z, 4)) + " " + str(round(q.w, 4)) + '\n')
file_handle1.close()
file_handle2.close()
file_handle3.close()
  1. 值得注意的是,获取的真值pose和SLAM输出的pose不在同一个坐标系下,如果要使用自己制作的数据集并进行精度评估,则需要使用evo评估工具。
  2. 使用时,由于真值pose帧率高(我这儿mocap输出是100Hz),而d435输出RGB和depth被设定为30Hz,所以两者时间戳会不同步。在使用evo工具时,则需要指定相关参数,否则评估将会出错,如下所示:
    evo_ape tum Groundtruth.txt OurCameraTrajectory.txt -p -va --save_results results/Our.zip --t_max_diff=0.05 --t_offset=0.05
    

    这儿的--t_max_diff=0.05 --t_offset=0.05-a分别表示允许的最大时间误差、时间偏移和对齐坐标系。

利用Realsense D435和Mocap制作TUM数据集相关推荐

  1. ROS下利用realsense采集RGBD图像合成点云

    摘要:在ROS kinetic下,利用realsense D435深度相机采集校准的RGBD图片,合成点云,在rviz中查看点云,最后保存成pcd文件. 一. 各种bug 代码编译成功后,打开rviz ...

  2. realsense D435获取RGB-D数据集-制作.klg文件

    记录个人工作日志.恳求大佬指点简单的方法!! 1.  <利用ros记录话题,获得bag文件> 首先launch相机节点: roslaunch realsense2_camera rs_ca ...

  3. python制作训练集_利用Tensorflow简单实现VGGNet,从数据集制作到训练完成测试

    VGGNet_TF 利用Tensorflow简单实现VGGNet,从数据集制作到训练完成测试 参考:<Tensorflow实战><Tensorflow 实战Google深度学习框架& ...

  4. 利用Arcgis制作图像分割数据集

    利用Arcgis制作图像分割数据集,以制作农村道路标签数据进行二分类为例 一,进行矢量化获取矢量数据 二,制作掩膜 三,mask图像导出 四,原始遥感影像裁剪 五,mask图片和遥感图像裁剪及训练集. ...

  5. TUM数据集制作BundleFusion数据集

    BundleFusion的数据集中,在生成.sens文件之前,包括彩色图,深度图和一个位姿文件,并且这个pose文件中的位姿态是有变化的,所以我怀疑,推测,在这个pose文件中可以写入groundtr ...

  6. Realsense D435保存图像

    你可以走慢一点,但脚步不能停下来. Realsense是我使用的第3款深度传感器,前两款分别是Orbbec和Kinect v2,奥比中光的深度传感器只需要USB接口,但深度图的效果并不好,Kinect ...

  7. python制作图片数据集_Pytorch自己加载单通道图片用作数据集训练的实例

    pytorch 在torchvision包里面有很多的的打包好的数据集,例如minist,Imagenet-12,CIFAR10 和CIFAR100.在torchvision的dataset包里面,用 ...

  8. 使用evo工具评估ORB_SLAM2在TUM数据集上的运行轨迹

    目录 一.安装evo工具 二.运行RGB-D基准数据集 1.下载TUM数据集 2.关联rgb图像和depth图像 3.运行rgb-d数据集 三.使用evo评估 1.常用指令 2.绝对轨迹误差 3.相对 ...

  9. UR3机械臂+Realsense D435+ROS手眼标定记录

    UR3机械臂+Realsense D435+ROS手眼标定记录 前面一段时间,由于实验室工作安排,上手了UR3机械臂和Realsense D435深度相机,在手眼标定这一段真的是让人心累,断断续续折腾 ...

最新文章

  1. 全国大学生智能汽车竞赛 --智慧物流创意组
  2. laravel--基础知识
  3. (五)Cisco dhcp snooping实例3-多交换机环境(DHCP服务器和DHCP客户端位于同VLAN)...
  4. HTML+CSS+JS实现 ❤️照相机快门图片动画特效❤️
  5. 有关UIView、subview的几个基础知识点-IOS开发 (实例)
  6. 电商APP商品详情页设计套路(分层PSD模板)!透析UI/UE必须懂的营销设计思维!
  7. 2021计算机一级新增知识点,2021年计算机一级知识点.doc
  8. 如何通过JS获取元素宽高
  9. 【bzoj4386】[POI2015]Wycieczki 矩阵乘法
  10. 麻辣鲜妻(80后爆笑爱情日志)
  11. echarts Map(地图) 不同颜色区块显示
  12. 在Linux中smbfs文件系统的挂载
  13. 【手写数字识别】基于matlab CNN网络手写数字识别分类【含Matlab源码 1286期】
  14. foremost windows_windows上安装foremost - kalibb
  15. 如何找python 包的位置
  16. 485集线器在安防监控系统的应用
  17. 微软技术大会-无人机为中国电信巡航基站
  18. 利用matplotlib绘制多个实时刷新的动态图表
  19. 【疑难杂症】Oculus Quest2 手机配对时找不到5-digit-code
  20. linux防火墙过滤规则

热门文章

  1. Python爬虫实战之爬取豆瓣详情以及影评
  2. android 主界面 round,一秒将安卓变WebOS!RoundR圆角界面体验
  3. SIMPLE ONLINE AND REALTIME TRACKING (SORT)论文阅读笔记
  4. html滑动开关按钮实现
  5. mongodb配置文件常用配置项
  6. 怎么定义vue-router的动态路由?怎么获取传过来的动态参数?
  7. 另类!这项目没有一行代码,30k star 和 近40w的内容收录,登顶GitHub热榜
  8. 【渝粤题库】陕西师范大学163101 旅游学概论 作业 (高起专)
  9. 树莓派4代开发板Raspberry Pi 4B 8G ARM主板电脑 树莓派4-8G现货 主板
  10. navicat for mysql 绿色版