Skip to content

RibleTensegrity

RibleTensegrity 提供了张拉整体结构(Tensegrity Structures)的建模和仿真工具。

概述

张拉整体结构是一种由受压杆件和受拉索组成的自平衡结构系统。该包实现了张拉整体结构的完整动力学模型,包括形态设计、静力学分析和动力学仿真。

主要特性

  • 形态设计:张拉整体结构的几何设计和优化

  • 静力学分析:预应力状态计算和稳定性分析

  • 动力学仿真:考虑索松弛的非光滑动力学

  • 控制设计:主动张拉整体结构的控制算法

核心概念

结构组成

  • 压杆(Struts):承受压力的刚性杆件

  • 拉索(Cables):只能承受拉力的柔性索

  • 节点(Nodes):杆件和索的连接点

连接

connect_spring函数负责使用弹簧和阻尼器在成对的刚体之间创建连接。它接受刚体列表、弹簧-阻尼力列表和连接矩阵(cm)作为输入。该函数遍历连接矩阵的每一行,该矩阵指定了成对的刚体及其各自的连接点。对于每一对,它创建一个CableJoint和一个表示弹簧-阻尼连接的Apparatus。函数返回这些装置的列表。

connect_clusters函数将这个概念扩展到刚体集群。它接受集群特定的弹簧-阻尼力和段作为额外参数。该函数遍历集群,根据提供的连接矩阵在每个集群内创建连接。它构建CableJointApparatus对象,类似于connect_spring,但还处理集群内坐标的索引。该函数返回每个集群的装置列表。

connect_spring_and_clusters函数结合了connect_springconnect_clusters的功能,允许同时创建单独的弹簧-阻尼连接和集群连接。它返回两个列表:一个用于单独连接,另一个用于集群连接。

通用连接性

connect函数是connect_spring的更通用版本。它根据连接矩阵处理连接的创建,但具有额外的检查和灵活性。它确保连接矩阵的大小适当,并且连接有效(例如,确保连接值的乘积为负,表示有效的弹簧-阻尼连接)。该函数返回表示连接的装置列表。

特性

  • 自平衡:内力系统自我平衡

  • 预应力:结构需要预应力才能保持形状

  • 轻质高强:优秀的强度重量比

应用领域

工程应用

  • 空间结构(体育馆屋顶)

  • 可展开结构(卫星天线)

  • 桥梁和塔架

机器人应用

  • 软体机器人

  • 可变形机器人

  • 仿生机器人

分析功能

形态分析

  • 节点位置优化

  • 索长度计算

  • 预应力分布

动力学分析

  • 索松弛检测

  • 接触碰撞

  • 大变形运动

逆静力学 (Inverse Statics)

逆静力学旨在寻找满足特定几何构型和外力平衡条件的结构参数(如索的静止长度或预应力)。这对于张拉整体结构的找形和控制至关重要。

核心功能

  • inverse_for_restlength: 给定目标构型和外力,计算使结构平衡所需的索静止长度。

  • inverse_for_actuation: 计算驱动变量(如电机位置),以达到目标平衡状态。

  • inverse_for_multipliers: 计算给定构型下的拉格朗日乘子(对应约束力)。

原理

逆静力学问题通常转化为求解线性方程组  ,其中 是待求参数(如静止长度或力密度), 是平衡矩阵, 是广义外力。

julia
# 示例:计算平衡所需的索静止长度
u0 = inverse_for_restlength(structure, target_structure, gravity_field)

刚度分析 (Stiffness Analysis)

张拉整体结构的刚度由两部分组成:材料刚度和几何刚度。

刚度矩阵

  • 材料刚度 (): 由构件本身的弹性变形产生。

  • 几何刚度 (): 由结构内部预应力产生,对张拉整体结构的稳定性起关键作用。

总切线刚度矩阵为   

机构位移与自应力模态

使用 static_kinematic_determine 函数可以对平衡矩阵进行奇异值分解 (SVD),从而识别:

  • 自应力模态 (Self-stress states): 维持结构平衡的内部预应力分布。

  • 机构位移 (Mechanism modes): 结构在不发生弹性变形情况下的无穷小运动。

稳定性分析 (Stability Analysis)

稳定性分析主要关注结构在平衡位置抵抗扰动的能力。

判据

  • 切线刚度矩阵的正定性: 如果切线刚度矩阵 是正定的,则结构在当前平衡位置是稳定的。

  • 索松弛 (Slackness): 索只能承受拉力。如果索的内力为负或长度小于静止长度,则发生松弛,可能导致结构失效。

工具

  • analyse_slackness(structure, q): 检查给定构型下所有索的松弛状态。

  • check_static_equilibrium: 验证结构是否处于静力平衡状态。

示例

julia
using Rible
import Rible as RB

# 创建简单的张拉整体结构
# (具体示例代码)

刚度

stiffness.jl 文件实现了一系列用于分析和优化张拉整体结构刚度的函数。主要功能包括:

  1. 静力学和运动学分析

  2. 刚度矩阵的构建和优化

  3. 自应力状态和刚度方向的计算

主要函数

static_kinematic_determine

此函数执行张拉整体结构的静力学和运动学分析。

参数:

  • ℬᵀ: 平衡矩阵的转置

  • atol: 绝对容差(可选)

返回:

  • 自应力状态

  • 刚度方向

optimize_maximum_stiffness 和 optimize_zero_stiffness

这两个函数使用凸优化来最大化或最小化结构刚度。

参数:

  • mat𝒦ps: 预应力刚度矩阵

  • vec𝒦m: 材料刚度矩阵

  • vecI: 单位矩阵向量

  • A, b: 等式约束

  • nx: 变量数量

返回:

  • 优化结果

常见用法

  1. 分析结构的自应力状态:
julia
S, D = static_kinematic_determine(ℬᵀ)
  1. 优化最大刚度:
julia
result = optimize_maximum_stiffness(mat𝒦ps, vec𝒦m, vecI, A, b, nx)
  1. 寻找零刚度构型:
julia
result = optimize_zero_stiffness(mat𝒦ps, vec𝒦m, vecI, A, b, nx, x_0)

内部辅助函数

  • classical_gram_schmidtmodified_gram_schmidt: 用于正交化矩阵列

  • optimize_zero_stiffness_Clarabel: 使用 Clarabel 求解器的零刚度优化版本

这些功能共同提供了一个强大的工具集,用于分析和优化张拉整体结构的刚度特性。