news 2026/5/17 0:06:11

自动驾驶-数据解析01:四元数03【自动驾驶中的四元数 [w, x, y, z] 到底从哪里来:采集、标定、定位还是标注?】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
自动驾驶-数据解析01:四元数03【自动驾驶中的四元数 [w, x, y, z] 到底从哪里来:采集、标定、定位还是标注?】

标题:自动驾驶中的四元数[w, x, y, z]到底从哪里来:采集、标定、定位还是标注?

1. 先给结论

在自动驾驶数据中看到四元数:

[w,x,y,z]

不能简单地理解为:

自动驾驶采集数据时,所有数据都是用四元数采集的。

也不能简单地理解为:

四元数全部都是后续人工标注转换得来的。

更准确的说法是:

四元数不是相机、激光雷达、毫米波雷达等原始传感器数据的采集格式,而是用来表示三维旋转姿态的数据格式。它可能在采集阶段由定位系统或标定系统记录,也可能在后续处理、标注、融合、格式转换时生成。

所以答案不是单选题,而是要分情况:

1. 相机图像、激光雷达点云、毫米波雷达回波: 原始采集数据通常不是四元数。 2. 自车姿态 ego pose: 可能在采集阶段由定位系统记录,也可能经过离线定位优化后保存为四元数。 3. 传感器外参 calibrated sensor: 通常来自采集前或采集系统搭建阶段的传感器标定,保存时可以用四元数。 4. 目标 3D 框 annotation: 通常来自后续人工标注、半自动标注、自动标注或算法处理,最后可能保存为四元数。 5. IMU / INS 姿态: 原始 IMU 通常输出加速度和角速度,但融合后的 INS / GNSS-IMU 定位系统可能直接输出四元数姿态。

一句话总结:

自动驾驶中的四元数[w, x, y, z]本质上是“姿态表示格式”,不是“传感器原始采集格式”。自车姿态和传感器外参中的四元数多来自定位与标定流程;目标框朝向中的四元数多来自后续标注或算法处理流程。


2. 为什么会有这个疑问?

自动驾驶数据集中经常看到类似这样的字段:

rotation=[0.919637827,-0.000544678106,0.00976648310,-0.392645624]

很多数据集或工具会说明它是四元数,并且顺序是:

[w,x,y,z]

例如在 nuScenes 数据结构中,下面这些字段都可能使用四元数:

calibrated_sensor.rotation ego_pose.rotation sample_annotation.rotation

它们分别表示:

calibrated_sensor.rotation:传感器相对于车体的外参旋转 ego_pose.rotation:自车在全局坐标系中的姿态 sample_annotation.rotation:目标 3D 框的朝向

于是很容易产生一个误解:

是不是自动驾驶汽车采集数据时,传感器直接采集到的就是四元数?

其实不是。

相机采集的是图像,激光雷达采集的是点云,毫米波雷达采集的是距离、速度、角度等信息。四元数主要描述的是“姿态”或“旋转关系”。


3. 自动驾驶车辆采集的原始数据是什么?

自动驾驶车辆在道路上行驶时,会采集多种传感器数据。

常见传感器包括:

Camera:相机 LiDAR:激光雷达 Radar:毫米波雷达 IMU:惯性测量单元 GNSS / GPS:卫星定位系统 Wheel Encoder:轮速计 CAN Bus:车辆底盘数据

这些传感器的原始数据大致如下:

传感器原始采集数据是否天然就是四元数
Camera 相机图像像素不是
LiDAR 激光雷达点云坐标、距离、强度等不是
Radar 毫米波雷达距离、速度、方位角、俯仰角、反射强度等不是
IMU 惯性测量单元加速度、角速度原始输出通常不是
GNSS / GPS经纬度、高度、速度、时间戳不是
Wheel Encoder 轮速计轮速、里程不是
CAN Bus方向盘角、油门、刹车、车速等不是

举例来说,最原始的感知数据通常长这样:

# 相机数据image=H x W x3# 激光雷达点云point=[x,y,z,intensity]# 毫米波雷达目标radar_object=[range,velocity,azimuth,elevation]# IMU 原始数据imu=[acc_x,acc_y,acc_z,gyro_x,gyro_y,gyro_z]

这些都不是四元数。

所以,四元数不是自动驾驶传感器“看见世界”的原始数据格式,而是系统为了描述空间旋转和坐标关系而使用的数学表示。


4. 四元数[w, x, y, z]到底表示什么?

四元数可以写成:

q = [w, x, y, z]

也可以写成数学形式:

q = w + x i + y j + z k q = w + xi + yj + zkq=w+xi+yj+zk

其中:

w:实部 x, y, z:虚部

如果四元数用来表示三维旋转,通常要求它是单位四元数:

∣ q ∣ = w 2 + x 2 + y 2 + z 2 = 1 |q| = \sqrt{w^2 + x^2 + y^2 + z^2} = 1q=w2+x2+y2+z2=1

四元数和旋转轴、旋转角之间的关系是:

q = [ cos ⁡ θ 2 , u x sin ⁡ θ 2 , u y sin ⁡ θ 2 , u z sin ⁡ θ 2 ] q = \left[ \cos\frac{\theta}{2}, u_x\sin\frac{\theta}{2}, u_y\sin\frac{\theta}{2}, u_z\sin\frac{\theta}{2} \right]q=[cos2θ,uxsin2θ,uysin2θ,uzsin2θ]

其中:

theta:旋转角度 [u_x, u_y, u_z]:旋转轴方向

也就是说,四元数本质上表达的是:

绕某个三维方向旋转多少角度

在自动驾驶里,它通常用来回答这些问题:

车辆当前朝向哪里? 传感器相对于车身怎么安装? 目标 3D 框朝向哪里? 点云怎么从 LiDAR 坐标系转换到车体坐标系? 车体坐标系怎么转换到全局地图坐标系? 不同传感器之间如何对齐?

三维旋转常见的表示方式有三种:

1. 欧拉角:roll、pitch、yaw 2. 旋转矩阵:3 x 3 矩阵 3. 四元数:[w, x, y, z]

四元数的优势是:

1. 比欧拉角更稳定,避免万向锁 2. 比旋转矩阵更紧凑,只需要 4 个数 3. 适合连续姿态更新 4. 适合旋转插值 5. 适合坐标系变换

所以自动驾驶数据集中经常会把姿态信息保存为四元数。


5. 第一类来源:自车姿态 ego pose

自动驾驶中的自车通常叫:

ego vehicle

自车位姿通常叫:

ego pose

自车位姿包括两部分:

1. translation:车辆位置 2. rotation:车辆朝向

可以写成:

ego_pose={"translation":[x,y,z],"rotation":[w,x,y,z]}

其中:

translation 表示车在哪里 rotation 表示车朝哪里

在 nuScenes 数据结构中,ego_pose表示某个时间戳下自车相对于全局坐标系的位置和姿态,其中:

translation:位置 rotation:姿态四元数,顺序为 w, x, y, z

nuScenes 官方 schema 还说明,ego_pose是基于激光雷达地图定位算法的输出。

这说明一个关键点:

自车姿态四元数通常不是人工标注出来的,而是采集车上的定位系统、地图定位系统或后处理定位系统估计出来的。

它可能来自:

GNSS / GPS IMU 轮速计 LiDAR SLAM 视觉 SLAM 地图匹配 多传感器融合定位算法

因此,自车位姿中的四元数更接近“采集过程或采集后定位处理产生的元数据”,不是人工一帧一帧标注出来的。


6. ego pose 四元数:采集时就有,还是离线后处理得到?

自车姿态四元数通常有两种常见来源。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/17 0:02:22

单相光伏发电并网控制【附代码】

✨ 长期致力于光伏电池、整流控制、逆变控制、最大功率点跟踪技术研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)自适应变步长电导增量法最大功率点跟…

作者头像 李华
网站建设 2026/5/16 23:59:25

生意最怕的不是慢 而是越来越靠运气

很多人做跨境电商,前期最兴奋的时刻,往往不是店铺刚开起来,而是第一次明显尝到“方法有效”的感觉。 某个产品突然跑起来了,某条内容带来了不错反馈,某次投放把数据拉上去了,团队会自然觉得:路找…

作者头像 李华
网站建设 2026/5/16 23:57:48

C++20的std::source_location

C20 的 std::source_location为了处理上述封装为函数出现的问题,C20 推出了 std::source_location基本使用std::source_location 的内容非常简单,只有 6 个相关函数:默认构造函数静态 current() 用于构造对应调用点的新对象line() 返回此对象…

作者头像 李华
网站建设 2026/5/16 23:57:47

AnisoAlign:各向异性模态对齐

这篇论文《Anisotropic Modality Align》(各向异性模态对齐)是一篇深入探讨多模态大语言模型(MLLM)底层表征空间的理论与方法相结合的优秀研究。它打破了以往对“模态鸿沟(Modality Gap)”的粗略认知&#…

作者头像 李华
网站建设 2026/5/16 23:57:14

SD-WAN:企业网络转型的“智能高速公路”

在数字化转型浪潮中,企业的业务版图不断扩张,分支机构遍布各地,云端应用日益普及。传统的专线网络(如MPLS)虽然稳定,但成本高昂、部署周期长,已难以满足现代企业灵活、敏捷的组网需求。 这时&a…

作者头像 李华