Skip to content

RibleQCF

RibleQCF (Quaternion Coordinate Formulation) 实现了基于四元数的坐标表示系统,用于描述刚体和柔性体的三维旋转。

概述

四元数坐标表示(QCF)是一种无奇异性的旋转表示方法,避免了欧拉角的万向节锁问题。该包为Rible提供了基于四元数的坐标系统实现。

主要特性

  • 无奇异性:四元数表示避免了欧拉角的奇异性问题

  • 高效计算:四元数运算比旋转矩阵更高效

  • 自然插值:支持球面线性插值(SLERP)

  • 紧凑表示:使用4个参数描述3D旋转

优势

相比欧拉角

  • 无万向节锁(gimbal lock)

  • 旋转组合更简单

  • 数值稳定性更好

相比旋转矩阵

  • 存储空间更小(4个参数 vs 9个参数)

  • 归一化更容易

  • 插值更自然

模块结构

RibleQCF 模块的主要文件结构如下:

  • QC.jl: 定义了四元数坐标系统的基本结构

  • QCF.jl: 模块的主入口,导入和导出相关函数

  • constraints.jl: 实现约束相关的函数

  • functions.jl: 实现坐标变换等核心功能

  • joints.jl: 实现关节连接相关的函数

  • mass_matrix.jl: 实现质量矩阵相关的计算

  • utils.jl: 提供各种辅助函数

基本原理

四元数坐标系统使用7个参数来表示刚体的位置和姿态:

  • 3个参数表示质心位置

  • 4个参数表示旋转四元数

核心结构

QC结构体(在QC.jl中定义)包含了刚体的质量、惯性矩阵等属性。

主要功能

  1. 坐标变换 (functions.jl)

  2. 约束处理 (constraints.jl)

  3. 关节连接 (joints.jl)

  4. 质量矩阵计算 (mass_matrix.jl)

使用示例

julia
using RibleQCF

# 创建QC实例
qc = QC(mass, inertia_matrix)

# 坐标变换
position = to_position(qc, state, local_coords)

# 约束计算
constraint = cstr_function(qc, state)

# 关节连接
violations = get_joint_violations!(output, qc1, qc2, ...)

注意事项

  • 确保四元数始终归一化

  • 理解四元数乘法的非交换性

应用场景

  • 大角度旋转的刚体动力学

  • 柔性多体系统

  • 姿态控制和导航

  • 动画和可视化

相关包