• Aucun résultat trouvé

1) The mce-direction and the k-direction represent the directions, not the mag-nitudes, of all of the forces applied to a body. Hence, even if the mce-direction and the k-direction are the same direction, that does not mean there is a net force (i.e., a non-zero force) in that direction. However in this case, the simulator assumes by default that there is a net force, and hence motion, in that direction. The simulator makes this assumption without checking if it already knows enough about the forces to actually determine their magnitudes.

2) If the mce-direction is opposite the k-direction, the simulator waits until it knows the interface motion of every motion constrained engagement before computing the motion of the body. (This follows from our assumption that it is always possible to compute the interface motion of motion constrained engagements.) If there is an advancing motion constrained engagement, the body's motion is in the mce-direction.

If there is a stationary motion constrained engagement but no advancing ones, the motion is 0. If there are only retreating motion constrained engagements, the simu-lator assumes that the motion is in the k-direction. Again, the simusimu-lator makes this assumption without checking if it already knows enough about the forces to actually determine if any of the forces in the k-direction have a non-zero magnitude.

3) If the mce-direction is it is likely that there is a bad input (e.g., an actuator pushing against a stop) and the simulator waits until it knows the interface motion of every motion constrained engagement so that it can apply rules 1{6 in Table 4.1 to determine if there actually is a bad input. If those rules do not apply, there are no bad inputs and the simulator recomputes the mce-direction by ignoring the retreating motion constrained engagements. To see why it does this, we return to the example in Figure 4-1. Imagine that the actuator pulls C to the right and there is no spring attached to A. In this case block B will not move. If we put the spring back, B will move to the right because of the spring force. We see that the retreating engagement force that C \applies" to B does not determine B's direction of motion. In general, if we ignore retreating engagements, we still compute the correct direction of motion.

However, in this case, if the simulator ignores the retreating motion constrained engagements, it can compute the motion using strategy 1 or 2 (if the k-direction is see strategy 4).

4) If the k-direction is , and the mce-direction is + or -, the simulator reduces this to one of the previous strategies by ignoring retreating compliant engagements and recomputing the k-direction. (Rule 3 describes why the simulator can safely ignore retreating engagements.)

5) If there is no force applied to a body, the body's motion is 0.

6) If the body is positioned by an actuator, the body's motion is that of the actuator.

A B

Figure 4-8: Two blocks, A and B, which translate horizontally.

After it has computed or assumed the motion of each body using these six strate-gies, the simulator checks to see if the assumed motions are consistent with the engagements. If not, the simulator repeats the entire process one more time, but as-sumes that motion is0 for bodies whose previously assumed motion was inconsistent with the engagements. If the second attempt to compute motion produces incon-sistencies, the simulator fails. For the examples we have tried the simulator always succeeded in computing motion. We chose our method because it is ecient and relatively simple, however, there are other available approaches which are complete as well as ecient (see [50]).

To illustrate our strategies, we compute the motion of the blocks in Figure 4-1 for the case in which the actuator pushes C to the left. Because there is an actuator pushing C, we compute C's motion with strategy 6. Block B has a motion constrained engagement pushing it to the left and compliant engagement pushing it to the right.

Using strategy 2, B's motion is to the left because the motion constrained engagement from C is advancing. Similarly, we use rule 2 to determine that A moves to the left.

Now imagine that there is no actuator attached to C. In this case, we use strategy 1 and assume that C moves to the right, in the direction of the compliant engagement force from B. B experiences opposing compliant engagement forces, but because we know that the force from C is retreating, we use strategy 4 to determine that the net force on B is to the right (i.e., we ignore the force from C). Then, using strategy 1, we assume that B moves to the right. Similarly, using strategies 4 and 1, we assume that A moves to the right. Checking our assumptions, we nd that all of the motions are consistent with the engagements.

For another example, consider the two blocks in gure Figure 4-8. The engagement between A and B is compliant from both viewpoints. Using strategy 1 we assume that A moves to the left. With a second application of strategy 1 we assume that B moves to the right. Checking our assumptions, we nd that they are inconsistent: A cannot push B to the right if A is moving to left, and B cannot push A to the left if B is moving to the right. Hence, we must change our assumptions and try again. Using strategy 1, and remembering that the previously assumed motion was inconsistent, we assume that A's motion is 0. Similarly, we use strategy 1 to determine that B's motion is 0. This time our answer is consistent: each body experiences a stationary, compliant engagement which cannot cause motion.

If the k-direction isbecause the sum of the compliant engagement forces, spring

4.5. THE NEXTEVENT 75 forces, and external forces is genuinely ambiguous, strategy 4 cannot help us compute the motion. For example, if the actuator in Figure 4-1 is replaced by a spring pushing C to the left, the k-direction of all three blocks is. We cannot compute the motion unless we know which spring force is larger. In this case, the simulator must branch to consider all three possibilities: A's spring force is larger, C's spring force is larger, the two spring forces are equal. Our simulator assumes that a body will not experience a genuinely ambiguous force sum, and hence the program returns failure if one does.

4.5 The Next Event

Because the motion of a rigid body depends on the applied forces, the motion changes when and only when there is a change in the nature of the forces. There are four kinds of events that can change the nature of the forces: an engagement is broken, an engagement is made, a spring passes through its neutral position, or an actuator reaches its limit. The rst kind of event occurs when a trajectory in qc-space following a qcs-curve reaches the end of that curve;3 the other kinds of events occur when the trajectory hits a new curve.

Because, in our world, the motion of every rigid body remains either strictly positive, strictly negative, or zero over a time step, all trajectories in qc-space are monotonic over a time step. Because the trajectory through a qcs-plane is a projection of a monotonic trajectory (i.e., a projection of the trajectory through the full multi-dimensional qc-space), the trajectory through a qcs-plane is also monotonic. To determine which events happen next, the simulator rst determines which events would happen if the monotonic trajectory in each qcs-plane continued until an event occurs in that plane. Then, the simulator uses constraint propagation to determine which of the events predicted by the individual planes can happen rst.

4.5.1 Events in the Plane

The simulator selects methods for computing the events in a qcs-plane based on the kind of trajectory in that plane. The simulator distinguishes three kinds of tra-jectories: trajectories along nite qcs-curves, horizontal or vertical trajectories, and diagonal trajectories.

3There are two ways that an engagement can break: the trajectory in the qcs-plane moves along the qcs-curve until it reaches the end, or the trajectory moves perpendicular to the qcs-curve. In the former case, the two engagement faces that comprise the engagement maintain contact pressure and slide along one another until one face slides past the other. Figure 4-10 shows an example in which the sloped face on the lever slides past the sloped face on the hook. In the later case, there is no contact pressure, and the two engagement faces separate without sliding. An example is the opening of a pair of electrical contacts. This kind of broken engagement is detected by examining the interface motion of the engagement faces (Section 4.8.1).