RibleTensegrity
RibleTensegrity 提供了张拉整体结构(Tensegrity Structures)的建模和仿真工具。
概述
张拉整体结构是一种由受压杆件和受拉索组成的自平衡结构系统。该包实现了张拉整体结构的完整动力学模型,包括形态设计、静力学分析和动力学仿真。
主要特性
形态设计:张拉整体结构的几何设计和优化
静力学分析:预应力状态计算和稳定性分析
动力学仿真:考虑索松弛的非光滑动力学
控制设计:主动张拉整体结构的控制算法
核心概念
结构组成
压杆(Struts):承受压力的刚性杆件
拉索(Cables):只能承受拉力的柔性索
节点(Nodes):杆件和索的连接点
连接
connect_spring函数负责使用弹簧和阻尼器在成对的刚体之间创建连接。它接受刚体列表、弹簧-阻尼力列表和连接矩阵(cm)作为输入。该函数遍历连接矩阵的每一行,该矩阵指定了成对的刚体及其各自的连接点。对于每一对,它创建一个CableJoint和一个表示弹簧-阻尼连接的Apparatus。函数返回这些装置的列表。
connect_clusters函数将这个概念扩展到刚体集群。它接受集群特定的弹簧-阻尼力和段作为额外参数。该函数遍历集群,根据提供的连接矩阵在每个集群内创建连接。它构建CableJoint和Apparatus对象,类似于connect_spring,但还处理集群内坐标的索引。该函数返回每个集群的装置列表。
connect_spring_and_clusters函数结合了connect_spring和connect_clusters的功能,允许同时创建单独的弹簧-阻尼连接和集群连接。它返回两个列表:一个用于单独连接,另一个用于集群连接。
通用连接性
connect函数是connect_spring的更通用版本。它根据连接矩阵处理连接的创建,但具有额外的检查和灵活性。它确保连接矩阵的大小适当,并且连接有效(例如,确保连接值的乘积为负,表示有效的弹簧-阻尼连接)。该函数返回表示连接的装置列表。
特性
自平衡:内力系统自我平衡
预应力:结构需要预应力才能保持形状
轻质高强:优秀的强度重量比
应用领域
工程应用
空间结构(体育馆屋顶)
可展开结构(卫星天线)
桥梁和塔架
机器人应用
软体机器人
可变形机器人
仿生机器人
分析功能
形态分析
节点位置优化
索长度计算
预应力分布
动力学分析
索松弛检测
接触碰撞
大变形运动
逆静力学 (Inverse Statics)
逆静力学旨在寻找满足特定几何构型和外力平衡条件的结构参数(如索的静止长度或预应力)。这对于张拉整体结构的找形和控制至关重要。
核心功能
inverse_for_restlength: 给定目标构型和外力,计算使结构平衡所需的索静止长度。inverse_for_actuation: 计算驱动变量(如电机位置),以达到目标平衡状态。inverse_for_multipliers: 计算给定构型下的拉格朗日乘子(对应约束力)。
原理
逆静力学问题通常转化为求解线性方程组
# 示例:计算平衡所需的索静止长度
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: 验证结构是否处于静力平衡状态。
示例
using Rible
import Rible as RB
# 创建简单的张拉整体结构
# (具体示例代码)刚度
stiffness.jl 文件实现了一系列用于分析和优化张拉整体结构刚度的函数。主要功能包括:
静力学和运动学分析
刚度矩阵的构建和优化
自应力状态和刚度方向的计算
主要函数
static_kinematic_determine
此函数执行张拉整体结构的静力学和运动学分析。
参数:
ℬᵀ: 平衡矩阵的转置atol: 绝对容差(可选)
返回:
自应力状态
刚度方向
optimize_maximum_stiffness 和 optimize_zero_stiffness
这两个函数使用凸优化来最大化或最小化结构刚度。
参数:
mat𝒦ps: 预应力刚度矩阵vec𝒦m: 材料刚度矩阵vecI: 单位矩阵向量A,b: 等式约束nx: 变量数量
返回:
- 优化结果
常见用法
- 分析结构的自应力状态:
S, D = static_kinematic_determine(ℬᵀ)- 优化最大刚度:
result = optimize_maximum_stiffness(mat𝒦ps, vec𝒦m, vecI, A, b, nx)- 寻找零刚度构型:
result = optimize_zero_stiffness(mat𝒦ps, vec𝒦m, vecI, A, b, nx, x_0)内部辅助函数
classical_gram_schmidt和modified_gram_schmidt: 用于正交化矩阵列optimize_zero_stiffness_Clarabel: 使用 Clarabel 求解器的零刚度优化版本
这些功能共同提供了一个强大的工具集,用于分析和优化张拉整体结构的刚度特性。