【杂记四】刚体运动 +SE(3)

一、基础知识

1. 什么是刚体

刚体(Rigid Body) 就是一个不会变形的物体

举例:

  • 一个木块、一只水瓶、一台手机,都可以近似看作刚体。

  • 即使你用力搬动它,它内部形状和尺寸不会变化

2. 三维空间中的刚体运动是什么?

刚体在三维空间中,运动有 两种基本形式

平移运动(Translation)

整个物体沿着某个方向移动,但方向不变、不会转动。

💡 举例:

  • 你把水杯从桌子左边滑到右边,杯子没转,只是“平移”

旋转运动(Rotation)

刚体围绕某个轴“旋转”,但中心可能不动。

💡 举例:

  • 你拿着一支笔转圈圈(像旋转陀螺),这就是绕笔心的旋转

3.总结

三维空间中刚体运动 = 平移 + 旋转 的组合!

准确地知道一个刚体的位置和方向,就要描述它的:

  • 位置坐标(平移)

  • 姿态 / 朝向(旋转,通常用欧拉角、四元数、旋转矩阵)

这就是机器人、机械臂、无人机、VR 控制器等领域中最基本的物理模型!

二、旋转描述

1. 欧拉角(Euler Angles)

  • 就是用 3 个角度值,分别表示:绕 X轴Y轴Z轴 的转动。

  • 比如:先绕 X 轴转 30°,再绕 Y 轴转 45°,再绕 Z 轴转 90°

优点:

  • 通俗、好理解(类似你“抬头-摇头-歪头”)

缺点:

  • 有个严重问题叫 万向节锁(Gimbal Lock):两个轴重合,导致一个旋转自由度丢失(会卡住)

如何利用缺点:

当旋转一个角度90度,与另一个角度重合,则会减少一个选择自由度。可以运用,限制不需要的自由度。 

 

2. 旋转矩阵(Rotation Matrix)

  • 一个 3×3 的矩阵,可以用来把一个向量旋转到另一个方向。

  • 实质上是通过线性代数实现旋转。

优点:

  • 数学上非常严谨,适合做组合、多次旋转

  • 可以直接用于变换坐标、绘图、仿真

 缺点:

  • 不直观、占内存大(9个数)

3.  四元数(Quaternion)

  • 数学家发明的一个超越三维的数学结构

  • 用 4 个数字(而不是 3 或 9 个)就可以稳定表示任意旋转

优点:

  • 没有万向节锁!(解决了欧拉角的问题)

  • 更节省计算资源(比矩阵小,比欧拉角稳定)

 缺点:

  • 不直观,你看不懂那 4 个数具体“转了多少度”

  • 但对机器人/无人机/Unity游戏/AR VR 来说超级常用!

 4. 旋转变换

你想把一个物体旋转:

  • 绕 X 轴 90°

  • 绕 Y 轴 0°

  • 绕 Z 轴 0°

用欧拉角表示就是 [90, 0, 0](单位:度)

 # 欧拉角 (degree) → 旋转矩阵



import numpy as np
from scipy.spatial.transform import Rotation as R

# 欧拉角 (degree) → 旋转矩阵
euler_angles = [90, 0, 0]  # 绕XYZ轴的旋转
r = R.from_euler('xyz', euler_angles, degrees=True)
rotation_matrix = r.as_matrix()
print("Rotation Matrix:\n", rotation_matrix)

欧拉角 ↔ 四元数

四元数(Quaternion)用的是 4 个值:[w, x, y, z]

继续上面的例子:

# 欧拉角 → 四元数
quat = r.as_quat()
print("Quaternion [x, y, z, w]:", quat)

# 四元数 → 欧拉角
r2 = R.from_quat(quat)
euler_back = r2.as_euler('xyz', degrees=True)
print("Recovered Euler:", euler_back)

四元数 ↔ 旋转矩阵

# 四元数 → 旋转矩阵
rot_mat2 = R.from_quat(quat).as_matrix()
print("Rotation Matrix from Quaternion:\n", rot_mat2)

# 旋转矩阵 → 四元数
quat_back = R.from_matrix(rot_mat2).as_quat()
print("Recovered Quaternion:", quat_back)

应用场景

 

三、SE(3)

1. 定义

SE(3) 全称是:Special Euclidean group in 3D三维空间中的特殊欧几里得群

本质是:

描述一个刚体在三维空间中的“位置 + 姿态(方向)”的标准数学工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值