Confused on rotational constraints

Started by
9 comments, last by Dmytry 19 years, 7 months ago
At least I think they're a sort of rotational constraint. What I have is a variety of objects with inertia (1D) and angularVelocity. They may have a torque applied to them from 'outside sources'. Each one is integrated each frame to obtain a new angularVelocity. What I want to do, is then combine them into a fixed system. Say I have object A rotating at 200rad/s with a torque of +100nm and object B rotating at 100rad/s with a torque of -100nm on it. How would I 'combine' them. Like theyre freely rotating as independant objects then something connects them, so they must now rotate at the same speed. Do I need to calculate some neutral velocity between the two and apply torques to each to reach that? Is there some way I can just propagate the torque acting on one to the rest? This is further complicated by the fact that some need to be connected via gears. Like I have objectA and objectB both with torques on them, and their own inertias/angularVelocity. Now I suddenly connect them via a 3:1 gear reduction. What is the systems new velocity? Am I thinking about this the wrong way? This is for the drivetrain of a vehicle, where the engine produces a torque, and the wheels produce a 'load' torque. I know how clutches work, and I've made one that sort of works. I'm not asking about the theory of how a drivetrain works, but more how I would go about 'connecting' the pieces together.
Advertisement
You need to consider conservation of angular momentum:

Ia*Wa0 + Ib*Wb0 = Ia*Wa1 + Ib*Wb1

where a and b denote the two shafts
I is the world space intertia tensor
W is the angular vel
and 0 and 1 denote before and ater connection

since the angular vels must be equal after connection we end up with:

Wa1 = Wb1

Hence:

Ia*Wa0 + Ib*Wb0 = Ia*Wa1 + Ib*Wa1

Then just rearange, plug in the vals, and calc the final ang vel Wa1 then simply set Wb1 = Wa1

Hope this helps. Excuse me if I dont answer any replies but I'm not going to be at my computer for a couple days.
[size="1"] [size="4"]:: SHMUP-DEV ::
Exactly how I do it now, and it works great for my clutch connection.
However it fails when gears are introduced. The system I setup does not multiply the torque, so it was nearly impossible to get the car moving with a 1:1 gear Ratio.
I introduced some kind of ratio to the angular momentum equation, figuring if they are connected via a 3:1 gear reduction, then the input shaft MUST turn 3x the speed of the output when connected. That part works, but there is no torque multiplication to the wheels. Do I have to add a "weight" to the inertias? Would the inertia of an object on the other side of a bunch of gear-reduction 'appear' lighter to the input object?
My temp solution involves multiplying the engine output by whatever the gear ratio is, however that has problems in that if the clutch is not 100% engages (slipping) the engine revs wildly.
When you connect two things together using gears, it's same as Motorherp said,except that Wa1*yourGearRatio = Wb1
so you have
Ia*Wa0 + Ib*Wb0 = Ia*Wa1 + Ib*Wa1*yourGearRatio
When you apply torque you must just find angular acceleration that "inertial counter-torque"[sp? oh my english] is equal to torque. Works with gears , with everything. Hard to explain, i can explain on example:

For instance we have two gears a and b with ratio that b turns R times faster than a.
Let's torque is T and applied to a. let's inertia of a is Ia and inertia of b is Ib . Let's [unknown] angular acceleration of a is Q . So, "inertial counter-torque" of a is equal to Ia*Q
and angular acceleration of b is R*Q so "inertial counter-torque" of b is equal to Ib*Q*R .
Note that "inertial counter-torque" of b acts via gears and is increased R times. So we have

T = Ia * Q + (Ib * Q*R)*R
T = Q*(Ia + Ib*R2)
Q = T/(Ia + Ib*R2)
solved.

General case:

So if we have gearsystem with n gears, with torques Ti applied to each, with inertias Ii and ratios to some choosen gear(say,first) Ri (so gear i turns Ri times _faster_ than choosen gear). Let choosen gear have unknown angular acceleration Q.

And we have that

Summ(Ri*Ti)=Q*Summ(Ii * Ri2)
(left part is summ of torques, right part is summ of "inertial counter-torques")
from there
Q=Summ(Ri*Ti)/Summ(Ii * Ri2)

Note that entire thing works as if it have inertia Summ(Ii * Ri2) when you apply torque to choosen gear.

Problem solved.

[Edited by - Dmytry on September 19, 2004 4:47:58 PM]
So the torque which acts opposed to the engine will be an "inertial force", like cetripidal force in a way? Like the m*a term in "F=MA" is sometimes called a force in itself?

You lost me on the Summ parts though.

Say i have Engine -> clutch -> gears(lets say 5:1) -> wheel object.
Only the Engine and Wheel objects have known torques acting on them from the outside.
I assume I will handle each "joint" seperately?

I can handle the engine->clutch part fine. I do a sort of conservation of angular momentum thing explained above, giving me a "clutch output" angular velocity.
I also have the wheels being acted on by an outside torque, so I'm confused as to how that "gets back" to the engine and slows it down.

Basically I know Wengine, Iengine, Wwheels, and Iwheels. I need to couple those via the gears. To produce new Wengine and Wwheels values.

I know Qengine will be 5x Qwheels. So R=5, yeah?

Quote:Q = T/(Ia + Ib*R2)

Qengine = TorqueFromWhere? / (Iengine + Iwheel*5^2)
Qwheels = WhichTorque? / (Iwheels + Iengine*5^2) is R still 25?

Where do I get that torque from?
Do I solve Ia*Wa0 + Ib*Wb0 = Ia*Wa1 + Ib*Wa1*yourGearRatio for both new W values and then calculate 'required torque' to reach that?




Erg. The more I try the more confused I get.

The problem I'm having is that I need to update the objects individually and THEN combine them. Otherwise the engine will not rev "by itself" when the clutch is disengaged of the trans is in nuetral.

The above math only seems to work if I apply the entire net torque to both objects using the combined and weighted inertia of the whole system. Or did I miss something?

My engine makes Ta torque and has Ia inertia. So I intergrate it and achieve Wa angularVelocity.
My wheels make Tb torque (from traction) and have Ib inertia. I integrate and get Wb angularVelocity.
Now I need to slap these two objects together using X gear ratio and acheive Wa'X engine speed and Wa' wheel speed.

The equation Q = summ(RiTi)/(IiRi^2) only works if you put torques into it, but I already used my torques above.

Does it just not work at all if I integrate the objects independently first?
hmm...
but, if engine is not connected you may integrate independently, and when it's connected start doing it alltogether. Don't see any problem.

If you connect 2 things together inelastically there's significant energy loss so it's just different thing.

clarification about summ:
That summ it's summ over all wheels in the system, wheel i have
torque Ti applied to it from outside,
inertia Ii
and it turns Ri times faster than some choosen gear j
(so Rj=1)

Let choosen gear j have angular acceleration Q , calculate it using formule Q=Summ(Ri*Ti)/Summ(Ii * Ri2)

If we want to find angular acceleration of wheel i , it's simply Ri * Q


Also, there might be bad mistake with conversation of moment.
Imagine if we have 2 gears spinning somehow (say,in different directions), at some distance. We move 'em to contact. We have forces acting at their centerpoints, and that forces change our total moment of inertia.
Quote:Original post by Dmytry
hmm...
but, if engine is not connected you may integrate independently, and when it's connected start doing it alltogether. Don't see any problem.


The problem is it can be "partly connected" via a slipping clutch.
Quote:Original post by CombatWombat
Quote:Original post by Dmytry
hmm...
but, if engine is not connected you may integrate independently, and when it's connected start doing it alltogether. Don't see any problem.


The problem is it can be "partly connected" via a slipping clutch.

Well, okay. You need to understand, there's no such majic thing as "partly connected" in the world.
There's "slipping clutch" or "non-slipping clutch"
Quote:
This is for the drivetrain of a vehicle, where the engine produces a torque, and the wheels produce a 'load' torque. I know how clutches work, and I've made one that sort of works. I'm not asking about the theory of how a drivetrain works, but more how I would go about 'connecting' the pieces together.


Not for offence, but seems that you have this problem because you don't understand how friction(clutch) work, and also don't understand theory about how "drivetrain" works, and you maybe don't understand some physics required.

How friction works:

If spinning speeds on ends of clutch is not equal, it slips. (*)
There's slipping friction. So on things connected to the ends of clutch we will have torques equal to slipping friction torque of clutch, and 'em will have opposite directions. That torque will try to decrease difference of speeds.(*)

Slipping will end only when difference of speeds is zero, that is, when speeds is _equal_ .(*) In computer simulation, there's no "equal", of course. But you can calculate time when speeds becomes equal, that's time when slipping may end.

Or if you have fixed timestep, if speed difference just changed sign, it's mean, somewhere between last and current timestep difference was zero. So you may just equate speed of one to speed of other.

Or, as Motorherp said, do it with conservation. Will increase accuracy in case friction is varying, and you have instantly set practically infinite friction, or if you have waaay too big timestep.

Slipping will start when torque on clutch exceeds static friction.(*)

As about gears connected to the ends of clutch, _there_ you need to understand how gears/"drivetrain" work.

Your simulation should have two modes, slipping and connected, and you need to make it change mode when it should(when torque > static friction, swich mode to slipping, when speeds equal, swich mode to connected (you may also test if after sqiching to connected you'll not have to instantly swich back) ).

Elementary physics, my dear Watson. No mysterious instant connections, there's nothing special and confusing in clutches, just physics.

"(*)" mean "i thought it's Intuitively Understandable ThingTM" .
Obviously the clutch only transmits a limited amount of torque based upon the normal force between the discs, material, etc. I have that already setup in my model, where the engine and clutch are connected via the conservation of angular momentum. I find the maximum torque that can be applied 'through' the clutch based upon friction and such, and that limites the amount of engine/clutchoutput angular velocity change in a given time.

I then connected the clutch output to the wheels via a gear system like you describe, where WaIa+WbIb = Wa'Ia + Wa'RIb. This slowed the clutchoutput speed, which slowed the engine speed, but it happened excessively, as though the gears did nothing.

If I "switch modes to connected" when the clutch is 100% engaged and not slipping, then I will get torque multiplication, as I solve the system as one big chunk. When I'm in "slipping" mode I'm using the conservation of angularMomentum setup, but that DOESNT give me gear multiplication. Should it? Did I do that part wrong and that is what is causing ALL of the problems?

I don't mean to seem dense, but I dont know what the two "modes" entail exactly, as it seems using angularMomentum and solving the whole system together give different results even if the same (non-slipping) clutch example is used.

Thanks for all the help by the way.

edit:
Arg I think I found the error. Never fear, I'll post 47 more times if it's not the problem!

[Edited by - CombatWombat on September 20, 2004 12:48:08 PM]

This topic is closed to new replies.

Advertisement