OpenSim自带的人体模型只有骨骼、肌肉和关节,如果需要研究人体与其他物体的相互作用(比如说人提起一个重物时胳膊各肌肉的受力分析),就需要在原模型中添加实体模型(该模型需在三维CAD软件中建好)。本文就以人提水桶为例,介绍如何在一个上肢模型中添加一个水桶。
1、导入人体模型。打开OpenSim 4.0,在File->Open Models…中选择Models\Arm26\arm26.osim,导入人体上肢肌骨模型,如下图。
2、用xml编辑器(如Notepad++)打开arm26.osim(该文件一般在我的文档\OpenSim\4.0\Models\Arm26下),浏览该文件,可以发现主要包含BodySet, ConstraintSet, ForceSet, MarkerSet, ContactGeometrySet, ControllerSet, ProbeSet, 和ComponentSet这八块内容,如下图。
在BodySet模块中,可以发现在objects标签下有ground, r_humerus和 r_ulna_radius_hand三个Body条目,表示组成现有模型的三块部分(上半身、大臂、小臂)。
将文件复制、重命名为arm26_with_bucket.osim,在新的文件中进行编辑,以免破坏原文件。
添加一个新的Body条目,命名为bucket,如下图
3、在bucket标签中添加水桶质量、质心、转动惯量等属性(mass, mass_center, inertia_xx, inertia_yy, inertia_zz, interia_xy, inertia_xz, inertia_yz),如下图
4、添加连接信息。在bucket里面添加Joint标签,定义PinJoint,其中location_in_parent 和 orientation_in_parent定义了连接点在母体上的位置,location 和 orientation定义了连接点在子体上的位置,具体看下图
5、定义广义坐标。在PinPoint标签里添加Coordinate标签,设置关节类型、默认值、默认速度、运动范围等属性,如下图
6、设置几何属性。在Joint标签下面添加VisibleObject标签,里面包括定义模型几何参数的GeometrySet,其中水桶的模型文件bucket.vtp(也可以是其他格式的文件)放在geometry_file标签下,如图所示
7、保存文件,在GUI中打开arm26_with_bucket.osim,即可看到添加了水桶的人体模型。
至此,我们演示了如何将一个现有的三维CAD实体模型嵌入到OpenSim的人体肌骨模型中,这在一些人机工程学的研究中十分有用。事实上,除了对.osim文件进行编辑,我们还可以直接在OpenSim软件GUI中直接对物体的参数进行设置。