Clear Filters
Clear Filters

Placing a Joint on a Moving Center of Mass in Simscape Multibody

6 views (last 30 days)
Hi, I wonder if there is any way to place a joint on the center of mass of a mechanism. But here is the catch, the center of mass is moving. I am trying to model a flying rocket and rocket mass varies by time. As a consequence COM is moving (upwards). Simcape lets me see where the center of mass relative to a selected frame with the inertia sensor but neither I can manipulate the mechanism's COM nor I can place a joint fixed with respect to the mechanism's COM.
Is there any solution for this?
Steve Miller
Steve Miller on 6 Nov 2021
Hi Baris,
You have described how a joint is connected to a frame on a body.
What do you plan to do with that joint? Why do you need the joint?
Baris Ucarsoy
Baris Ucarsoy on 9 Nov 2021
The 6-DOF joint is needed for connecting the rocket airframe to the world frame. I need unconstrained movement so I chose 6-DOF. I also need sensing ports from the joint so I can have feedback lines for changing drag and lift forces with respect to velocity. The problem is rocket airframe has a variable mass component (the motor), so during flight, my center of mass is moving upwards. I need my joint exactly connected to COM even when the COM is moving. The reason for that, to get an accurate stability response, rocket airframe needs to turn from COM.
From what I understand it is not yet possible to move joint location while in simulation. Thank you for your attention.

Sign in to comment.

Accepted Answer

Steve Miller
Steve Miller on 9 Nov 2021
To measure the location of the CG, you can use the Inertia Sensor block.
You may need to superimpose this measurement onto another measurement.
To apply forces to a CG that is moving, you can use an External Torque and Force block.
  1. Measure the change in CG location using the Inertia sensor.
  2. Apply that motion to a joint (you may need a very small mass at the end of that joint)
  3. Apply the forces and torques to that frame.
alberto corvi
alberto corvi on 15 Nov 2022
I cannot make this solution work. I have a similar problem where basically i need to sense the velocity of the Center of Gravity (CoG) of the system and possibly apply forces directly there. I tried to attach a 6-DoF Joint to the CoG but I haven't yet managed to do it. I cannot understand how to assign the motion of the CoG (sensed with INERTIA SENSOR) to the 6-DoF Joint block. I tried 'de-muxing' the signal but algebraic loops form and there seems to be no solution (Mux/Demux for physical signals - MATLAB Answers - MATLAB Central (
Steve Miller
Steve Miller on 1 Dec 2022
To avoid the algebraic loop, you either have to
  1. Break the using a transfer function loop OR
  2. Do not use the joint. Instead, apply the force at the same point always, but also apply an equivalent moment to compensate for the fact that the force is not being applied at the CG.

Sign in to comment.

More Answers (0)




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!