### Help-Reaction Forces

-Brandon

**Moderator:** RaduS

Are we supposed to be able to come up with code that can find the reaction forces for all general cases (any mechanism we analyze)? Or are we only supposed to solve for the reaction forces on a case by case basis? If yes for the first question, how are we supposed to go about doing that?

-Brandon

-Brandon

You can (and should) use a general approach. If you look at slide 28 from Lecture 21 (http://sbel.wisc.edu/Courses/ME451/2013/Lectures/lecture_21_1023.pdf), it explicitly states that a "boilerplate" approach can be used to obtain the reaction forces due to any constraint on any body at any point on that body.

Indeed, once you have completed dynamic analysis and therefore have the time history of the generalized coordinates and Lagrange multipliers, you can use the formulas given on that slide to calculate the reaction force and torque for a given set of constraints (specified by 'k', that is using the Lagrange multipliers for that set of constraints, l(k)) as acting on a given body (specified by 'i') at a given point on that body (specified by s'Pi).

In other words, you should be able to provide a "post-processing" function 'getReactionForce' that would look something like:

-Radu

Indeed, once you have completed dynamic analysis and therefore have the time history of the generalized coordinates and Lagrange multipliers, you can use the formulas given on that slide to calculate the reaction force and torque for a given set of constraints (specified by 'k', that is using the Lagrange multipliers for that set of constraints, l(k)) as acting on a given body (specified by 'i') at a given point on that body (specified by s'Pi).

In other words, you should be able to provide a "post-processing" function 'getReactionForce' that would look something like:

- Code:
`function [Fx, Fy, T] = getReactionForce(model, simdata, cnstrId, bodyId, point)`

% Plot and return the time history of reaction forces.

% Inputs:

% model - the description of the current model

% (meaning your data structures with information about the mechanism)

% simdata - simulation results from Dynamic Analysis

% (meaning time history of q, qd, qdd, lambda as obtained from a dynamics simulation)

% cnstrId - the ID of the constraint (joint) for which reaction forces are requested

% bodyId - the ID of the body on which these reaction forces act

% point - the point on bodyId where reaction forces are calculated

% (expressed in the LRF of bodyId)

%

% Outputs:

% Fx - time history of the x-component of the reaction force

% Fy - time history of the y-component of the reaction force

% T - time history of the reaction torque

-Radu

Radu

In your comment you have this line:

% cnstrId - the ID of the constraint (joint) for which reaction forces are requested

How are we supposed to generalize the process of finding which joint each constraint corresponds to without adding additional information to the adm file?

-Brandon

In your comment you have this line:

% cnstrId - the ID of the constraint (joint) for which reaction forces are requested

How are we supposed to generalize the process of finding which joint each constraint corresponds to without adding additional information to the adm file?

-Brandon

F13bdegner wrote:In your comment you have this line:

% cnstrId - the ID of the constraint (joint) for which reaction forces are requested

How are we supposed to generalize the process of finding which joint each constraint corresponds to without adding additional information to the adm file?

I'm not sure I understand the question... Each joint in the ADM file has an ID (recall also that, for simplicity, we agreed that the i-th joint defined in an ADM file will actually have ID=i). So it should be straightforward to figure out which constraint equations correspond to which joint. After all, you must already do something like that when, for example, you decide where in the system-level Phi array you load the contributions for any given joint, no?

Consider for example the case of a fictitious ADM file which defines the following joints in this particular order:

So if I say I want the reaction forces for cnstrId=2, then you should use a single Lagrange multiplier, namely the 2nd one. If I ask for the reaction forces for cnstrId=4, you should use 2 Lagrange multipliers, the 5th and 6th.

Note that, you could also indicate which joint you want the reaction forces for by specifying the name of that joint (one of 'abs_x', 'abs_y', 'rev1', 'rev2', or 'my_driver' in the above example). Of course, the implicit assumption here is that these names are unique within an ADM file (which should be true for a meaningful ADM file).

-Radu

4 posts
• Page **1** of **1**

Return to ME451 Fall 2013: Kinematics and Dynamics of Machine Systems

Users browsing this forum: No registered users and 2 guests