Is it possible to define 2 joints on one body?

Provide easy-to-use, extensible software for modeling, simulating, controlling, and analyzing the neuromusculoskeletal system.
POST REPLY
User avatar
Zu Xueying
Posts: 7
Joined: Wed Apr 21, 2021 5:59 am

Is it possible to define 2 joints on one body?

Post by Zu Xueying » Fri May 14, 2021 6:39 am

Hello all, I'm trying to add a 3D model to the model Gait2392. Since my model is base on parallel robot, I have two joints which has the same child frame. And when I try to open it in Opensim, the software has no response. I wonder if it's because that there can't be two joints who have the same child frame.
Here's my code. Joint "qiufu1" and joint "qiufulianjie" have the same child frame "qiufu1_offset".

Code: Select all

<WeldJoint name="qiufu1">
	<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The parent frame for the joint.).-->
	<socket_parent_frame>tuigan1_offset</socket_parent_frame>
	<!--Path to a Component that satisfies the Socket 'child_frame' of type PhysicalFrame (description: The child frame for the joint.).-->
	<socket_child_frame>qiufu1_offset</socket_child_frame>
	<!--Physical offset frames owned by the Joint that are typically used to satisfy the owning Joint's parent and child frame connections (sockets). PhysicalOffsetFrames are often used to describe the fixed transformation from a Body's origin to another location of interest on the Body (e.g., the joint center). When the joint is deleted, so are the PhysicalOffsetFrame components in this list.-->
	<frames>
		<PhysicalOffsetFrame name="tuigan1_offset">
			<!--The geometry used to display the axes of this Frame.-->
			<FrameGeometry name="frame_geometry">
				<!--Path to a Component that satisfies the Socket 'frame' of type Frame.-->
				<socket_frame>..</socket_frame>
				<!--Scale factors in X, Y, Z directions respectively.-->
				<scale_factors>0.20000000000000001 0.20000000000000001 0.20000000000000001</scale_factors>
			</FrameGeometry>
			<!--Path to a Component that satisfies the Socket 'parent' of type C (description: The parent frame to this frame.).-->
			<socket_parent>/bodyset/tuigan1</socket_parent>
			<!--Translational offset (in meters) of this frame's origin from the parent frame's origin, expressed in the parent frame.-->
			<translation>0.0 0 0</translation>
			<!--Orientation offset (in radians) of this frame in its parent frame, expressed as a frame-fixed x-y-z rotation sequence.-->
			<orientation>0 0 0</orientation>
			</PhysicalOffsetFrame>
			<PhysicalOffsetFrame name="qiufu1_offset">
			<!--The geometry used to display the axes of this Frame.-->
			<FrameGeometry name="frame_geometry">
				<!--Path to a Component that satisfies the Socket 'frame' of type Frame.-->
				<socket_frame>..</socket_frame>
				<!--Scale factors in X, Y, Z directions respectively.-->
				<scale_factors>0.20000000000000001 0.20000000000000001 0.20000000000000001</scale_factors>
				</FrameGeometry>
			<!--Path to a Component that satisfies the Socket 'parent' of type C (description: The parent frame to this frame.).-->
			<socket_parent>/bodyset/qiufu1</socket_parent>
			<!--Translational offset (in meters) of this frame's origin from the parent frame's origin, expressed in the parent frame.-->
			<translation>0 0.01 -0.065</translation>
			<!--Orientation offset (in radians) of this frame in its parent frame, expressed as a frame-fixed x-y-z rotation sequence.-->
			<orientation>-1.5708 0 0 </orientation>
		</PhysicalOffsetFrame>
	</frames>
</WeldJoint>
<BallJoint name="qiufulianjie">
	<WeldJoint name="qiufu1">
	<!--Path to a Component that satisfies the Socket 'parent_frame' of type PhysicalFrame (description: The parent frame for the joint.).-->
	<socket_parent_frame>qiufuzuo1_offset</socket_parent_frame>
	<!--Path to a Component that satisfies the Socket 'child_frame' of type PhysicalFrame (description: The child frame for the joint.).-->
	<socket_child_frame>qiufu1_offset</socket_child_frame>

Tags:

User avatar
Ayman Habib
Posts: 2252
Joined: Fri Apr 01, 2005 12:24 pm

Re: Is it possible to define 2 joints on one body?

Post by Ayman Habib » Fri May 14, 2021 12:23 pm

Hello,

The underlying multibody system of an OpenSim model is a Tree (you can see this in the Application/GUI Topology View). As such if you want to have loops/connections that breaks the Tree structure, then you'll have to do it with Constraints. Please check the doxygen documentation here
https://simtk.org/api_docs/opensim/api_ ... raint.html
and expand the "Inheritance diagram" to see what Constraints are available that would fit your needs.

Hope this helps,
-Ayman

User avatar
Zu Xueying
Posts: 7
Joined: Wed Apr 21, 2021 5:59 am

Re: Is it possible to define 2 joints on one body?

Post by Zu Xueying » Fri May 14, 2021 6:34 pm

aymanh wrote:
Fri May 14, 2021 12:23 pm
Hello,

The underlying multibody system of an OpenSim model is a Tree (you can see this in the Application/GUI Topology View). As such if you want to have loops/connections that breaks the Tree structure, then you'll have to do it with Constraints. Please check the doxygen documentation here
https://simtk.org/api_docs/opensim/api_ ... raint.html
and expand the "Inheritance diagram" to see what Constraints are available that would fit your needs.

Hope this helps,
-Ayman
Thanks! It helps a lot!

POST REPLY