【代码笔记】准备Kitti raw中的Pose数据

KITTI原始数据包含了车辆的oxts测量数据,并可用作原始序列的姿态。原始开发工具包中包含了一个将oxts测量数据转换为姿态的Matlab/Octave脚本。在这个脚本中,我们提供了一些代码的修改以及一些个人使用的脚本,用于将这些姿态数据转换为Python可用的形式,并与我们正在使用的kitti_visualize仓库和其他仓库一起提供。

具体步骤

  • 在 “devkit_raw_data/devkit/matlab” 加入 “produce_poses_mat.m”,
function [pose,pose_mat]=produce_poses_mat (base_dir)
% KITTI RAW DATA DEVELOPMENT KIT
% 
% Plots OXTS poses of a sequence
%
% Input arguments:
% base_dir .... absolute path to sequence base directory (ends with _sync)

% clear and close everything
%clear all; close all; clc;
disp('======= KITTI DevKit Demo =======');

% sequence base directory
if nargin<1
  base_dir = '/data/kitti_raw/2011_09_26/2011_09_26_drive_0001_sync';
end
base_dir
% load oxts data
oxts = loadOxtsliteData(base_dir);

% transform to poses
pose = convertOxtsToPose(oxts);

pose_mat = zeros(length(pose), 4, 4);
for i=1:length(pose)
  pose_mat(i, :, :) = pose{i};
end
output_path = strcat(base_dir, '/oxts/pose.mat');
save(output_path, 'pose_mat', '-v6'); % magic paramters?
  • 在相同路径加入python3 代码"produce_poses_mat.py",代码为:
import os

base_dir = "/data/kitti_raw" ### CHANGE THIS TO YOUR KITTI_RAW PATH

date_list = os.listdir(base_dir)

for date in date_list:
    date_path = os.path.join(base_dir, date)
    if os.path.isdir(date_path): # some one may have different single_files in the base_dir, filter out them
        seq_list = os.listdir(date_path)
        for seq in seq_list:
            seq_path = os.path.join(date_path, seq)
            if os.path.isdir(seq_path):
                print("Processing: ", seq_path)
                os.system(f"octave produce_poses_mat.m {seq_path}")

然后,运行:python3 produce_poses_mat.py,然后在每一个sequence中生成pose.mat。
注意:在我的测试中,使用os.system()无法调用seq_path,需要改成如下代码:

os.system(f"octave --eval 'produce_poses_mat(\"{seq_path}\")'")

然后在python中,可以读取pose:

import scipy.io as sio

pose_dict = sio.loadmat(odometry_mat)
odom_array = pose_dict[[key for key in list(pose_dict.keys()) if not key.startswith('__')][0]]
# the only non "__" key, should be a N, 4, 4 numpy array where N equals to the number of images of the sequence.

原文:https://gist.github.com/Owen-Liuyuxuan/27f12e15788acba76053df84a28f2291

你可能感兴趣的:(笔记,数学建模,matlab)