Python绘制3D轨迹图并对比分析:基于KITTI数据集的实践

白榆
白榆
发布时间:2026-10-13| 7人浏览过
原创

本文介绍如何使用Python和Matplotlib库绘制3D轨迹图,以KITTI数据集为例,解析T={R,t}格式数据并提取x,y,z坐标。通过对比真值与IMU数据,展示轨迹可视化方法,提供完整代码及效果说明,适用于SLAM及轨迹评估场景。

数据格式说明

数据格式说明

数据准备与KITTI示例

进行3D绘图前,需准备x、y、z三轴坐标数据。以实验所用的KITTI 00.txt数据集为例,具体数据结构如下。

数据解析逻辑


1.000000e+00 9.043680e-12 2.326809e-11 5.551115e-17 9.043683e-12 1.000000e+00 2.392370e-10 3.330669e-16 2.326810e-11 2.392370e-10 9.999999e-01 -4.440892e-16

数据集中每组包含12个数值,对应变换矩阵T={R,t},其中R为3×3旋转矩阵,t为3×1平移向量。绘图主要关注t部分的数据。

部分groundtruth数据格式包含8个数值,首个为时间戳,随后三个为x、y、z坐标,最后四个数值代表四元数信息。

代码实现

具体实现代码如下。

核心代码解析


# import necessary module
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np

# load data from file
# you can replace this using with open
data1 = np.loadtxt("./dataset/poses/00.txt")

first_2000 = data1[:, 3]
second_2000 = data1[:, 7]
third_2000 = data1[:, 11]
data2 = np.loadtxt("../temp/kittiseq00_imu.txt")
first_1000 = data2[:, 1]
second_1000 = data2[:, 2]
third_1000 = data2[:, 3]
# print to check data
#print first_2000
#print second_2000
#print third_2000

# new a figure and set it into 3d
fig = plt.figure()
ax = fig.gca(projection='3d')

# set figure information
ax.set_title("3D_Curve")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("z")

# draw the figure, the color is r = read
figure1 = ax.plot(first_2000, second_2000, third_2000, c='r')
figure2 = ax.plot(first_1000, second_1000, third_1000, c='b')
plt.show()

效果展示与说明

生成的轨迹效果图如下(注:由于计算资源有限,后续轨迹跟踪中特征点提取较少,可能影响视觉效果)。

以上关于Python绘制3D轨迹图并进行对比的实例分享完毕,希望能为读者提供参考,欢迎支持。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。