Skip to content

Natural Coordinates (自然坐标)系统

Natural Coordinates 是一种用于建模刚体运动的坐标系统。在这个 Julia 包中,它主要通过 src/members/rigids/natural_coordinates 目录下的几个文件来实现。

基本原理

Natural Coordinates 系统使用以下要素来描述刚体:

  1. 基点位置

  2. 基向量

对于2D和3D刚体,有不同的表示方式:

  • 2D刚体:1个基点 + 2个基向量

  • 3D刚体:1个基点 + 3个基向量

这种表示方法相比传统的6自由度(位置+欧拉角)表示有以下优点:

  • 避免了奇异点问题

  • 运动方程更简单,没有复杂的三角函数

  • 约束方程为二次形式,便于求解

主要组件

  1. NC 结构体 (LNC.jl): 表示Natural Coordinates系统,包含维度、局部坐标等信息。

  2. 约束函数 (constraints.jl): 实现刚体约束,如长度不变等。

  3. 质量矩阵 (mass_matrix.jl): 构建系统质量矩阵。

  4. 坐标转换 (functions.jl): 在不同坐标系间转换。

  5. 关节模型 (joints.jl): 实现刚体间的连接关系。

常见用法

  1. 创建NC对象:
julia
nc = NC2D1P1V(ri, u) # 2D刚体,1点1向量
nc = NC1P3V(ri) # 3D刚体,1点3向量
  1. 获取位置/速度:
julia
position = to_position(nc, q, c)
jacobian = to_position_jacobian(nc, q, c)
  1. 计算约束:
julia
cstr = cstr_function(nc, q)
jac = cstr_jacobian(nc, q)
  1. 构建质量矩阵:
julia
M = make_M(nc, mass, inertia, mass_center)
  1. 关节建模:
julia
cache = build_joint_cache(nc1, nc2, ...)
violations = get_joint_violations!(cache, ...)

总的来说,Natural Coordinates 提供了一种数值稳定、计算高效的刚体动力学建模方法。在这个包中,它被用于构建复杂的多体系统模型。

希望这个概述能帮助用户理解 natural_coordinates 模块的设计理念和使用方法。如需更多细节,可以查看各个文件中的具体实现。