Appendix Summary: In this Appendix, we will see the solutions to all of the exercises for this training guide.
Lesson 1 _________________________________________________________ A-2
Lesson 2 _________________________________________________________ A-2
Lesson 3 _________________________________________________________ A-10
Lesson 4 _________________________________________________________ A-18
Lesson 5 _________________________________________________________ A-20
Lesson 6 _________________________________________________________ A-22
Lesson 7 _________________________________________________________ A-30
Lesson 8 _________________________________________________________ A-32
Lesson 9 _________________________________________________________ A-37
Lesson 10 _________________________________________________________ A-41
Lesson 11 _________________________________________________________ A-48
Lesson 12 _________________________________________________________ A-57
Lesson 13 _________________________________________________________ A-57
Lesson 14 _________________________________________________________ A-58
Lesson 15 _________________________________________________________ A-66
Lesson 16 _________________________________________________________ A-74
Lesson 17 _________________________________________________________ A-77
Lesson 18 _________________________________________________________ A-78
Lesson 19 _________________________________________________________ A-79
Lesson 20 _________________________________________________________ A-80
Lesson 21 _________________________________________________________ A-82
Lesson 22 _________________________________________________________ A-83
Lesson 23 _________________________________________________________ A-83
LESSON 1 – Making Your Assemblies Dynamic
LESSON 2 – Pin Connection
We start by opening up the Robot.asm assembly file, which looks like the following.
The first component we are adding is the rotating base of the assembly. Therefore, click on the assemble component icon and select the Robot_2.prt file. When the Placement Constraint window appears, click on the Connections bar to activate Mechanism Placement Constraints.
In the Type field, make sure that Pin is selected. Then, we will make sure that our datum axes are visible and pick on the following entities to assemble this component.
The fully assembled component will look like the next figure.
Now that the component is assembled, we will go to Applications, Mechanism to drag it. Click on the drag icon ( ) and pick out on the large flat angled surface of the newly assembled component. The diamond symbol will appear, and you can begin to drag. The following figure shows the component rotated.
Click on the middle mouse button to cancel the rotation and return the model to the assembled orientation. Go to Applications, Standard to assemble the next component.
The next component will be the large arm that connects to the previous component. Click on the assemble component icon and select the Robot_3 part. Use a Pin connection and select the following entities to assemble this component.
The fully assembled component will look like the following.
Go to Applications, Mechanism to drag this component. The next figure shows one possible orientation while dragging the component.
NOTE: As we drag the new component, we will notice that the second component in the assembly will move through its range of motion. This will happen throughout this exercise as we add and move new components. In a later lesson, we will learn how to lock a body down to move only a particular set of components.
Click on the middle mouse button to cancel the drag and return to the assembled orientation. Go to Applications, Standard to assemble the next component.
The next component will attach to the end of the Robot_3 component. Use the following entities to create the pin connection.
The fully assembled component looks like the following figure.
Use Applications, Mechanism to get back to mechanism mode and drag this new component, as shown below.
Click on the middle mouse button to cancel the drag, then go back to Applications, Standard to continue with the next component.
The next component is the long arm that extends off of the Robot_4 component. Use the entities in the next figure to create the pin connection for this component.
The fully assembled component looks like the following figure.
Use Applications, Mechanism and drag the component. You may need to click out on the small end cylinder to get it to show a rotation since the entire assembly will most likely want to rotate with it, as shown in the next figure.
Cancel the drag using the middle mouse button to return the assembly to its original state, and then go to Applications, Standard to bring in the next component.
As we have been doing all along, create a pin connection for this component, using the following entities.
The fully assembled component looks like the following figure.
Again, drag this component to make sure it works. You will start to have to work a little harder to get the component to move, but the rest of the assembly should behave properly.
Cancel this drag and return to the Applications, Standard to assemble the last component.
The last component will use the following entities to create the pin connection.
Once fully assembled, it will look like the following figure.
Go to Applications, Mechanism and drag this component. You will most likely not be able to see it spin, because the rest of the assembly will move more than this will, but it should be okay.
Cancel the drag using the middle mouse button, and return to Applications, Standard to get out of mechanism mode. Save and close this assembly.
LESSON 3 – Joint Axis Settings
We will start by opening up the robot assembly that we created in lesson 2. It will come in looking like the following figure.
We will start by selecting on the first joint axis (labeled 1 in the exercise) and then go to its “Joint Settings”. The zero value for this joint should be correct, therefore we will not need to set a new zero value.
Click on the Regen Value tab, and select the check box to regenerate at “0” degrees, as shown below.
Next, click on the Properties tab, and enter -90 for the Minimum field, and 90 for the Maximum field, as shown in the next figure.
Click on OK to complete the joint axis settings for this first pin joint. Next, go to the joint axis settings for the second pin joint (labeled 2 in the exercise). This pin joint’s current zero value has the arm going straight up. We actually want the starting point of the arm to be at -45 degrees from its current value.
Therefore, we will enter -45 in the field at the top of the window as shown below.
When we do this, the joint updates in the assembly window, as we can see in the following figure.
NOTE: Only the arm updated, the rest of the components are still in their original position for now.
The arm’s new position will become the new zero location, therefore, click on Make Zero to make this new position the global zero value. Next, go to the Regen Value tab and set it to regenerate the joint at “0” degrees, as shown in the next figure.
Then, go to the Properties tab and set the Minimum value to -90 and the Maximum value to 45, as shown in the following figure.
Once you click on OK, click on Mechanism, Connect. You will get the following window.
Click on Run, and the model will update to its new zero location, and you will get the confirmation window to accept or reject this update, as shown in the next figure.
Click on Yes to accept this change, and then your assembly will look like the following.
Now, we will go to the third joint axis (labeled 3 in the exercise). This joint’s current zero location causes the arm to hang down at a 45 degree angle. Therefore, we want to reset its zero location to cause it to be horizontal with the ground.
Therefore, in the joint axis settings window, enter a value of 45, which will then make the arm move up to a horizontal position. Once there, click on the Make Zero button to make this the new zero.
Now that we have the new zero location, we will click on the Regen Value tab and click on the check box to force the model back to its zero location on regeneration, as shown below.
In the Properties tab, we will set the Minimum value to -90 and the Maximum value to 90, as shown in the next figure.
Click on OK to complete the joint settings, and then use Mechanism, Connect from the menu bar to regenerate the assembly. Click on Run, followed by Yes to accept the new location, as shown below.
Go to the joint axis settings for the fourth pin connection, and set it to regenerate at 0 and set the limits to -90 and 90 (Minimum and Maximum respectively). We do not need to reset its zero value. The joint settings windows for the Regen Value and Properties tabs look like the following:
Click on OK to complete this joint axis setting.
For the fifth pin connection, we are going to repeat this same process, but the limits will be from 0 (at the Minimum) to 180 (at the Maximum). The joint axis settings window for Properties will look like the following figure.
Be sure to click on the Regen Value tab and activate the regeneration check box, and then click on OK to finish this pin connection settings.
The last pin connection (labeled 6 in the exercise) will have a limit range of -90 to 90. Therefore, the Regen Value and Properties windows will look like the following figures.
Click on OK to complete the settings, and then go to Applications, Standard to exit mechanism mode. Our assembly will now look like the following.
Save and close this assembly.
LESSON 4 – Drag
When you try dragging the mirror around, you will notice that it is all over the place. There is a “Planar” constraint that was added to try to minimize the complete chaos that would be there without it, but I left the rest of the constraints limited to pin joints.
With more constraints, such as additional “Planar” or even some “Slot-Follower” connections, we could get the exact feel of the accordion mirror.
Fixing the base hinges:
To fix the hinges at the base, we will begin by going to the drag tool, and then click on the Constraints tab. Click on the icon, and select the large rounded base (Mirror_Base.prt) component as the ground, and then select one of the two hinges (Base_Hinge.prt). After you pick one of them, hold down the Ctrl key and select the second one. Once both of the hinges are selected, click on the middle mouse button.
Fixing the mirror at the top:
The second piece we want to lock is the mirror at the top. While we still have the base hinges locked in the drag window, click on the lock/unlock icon again. This time, pick the Mirror_Hinge2.prt component as the ground part, and then select the round mirror at the top. Once the mirror has been selected, click on the middle mouse button to lock this in place.
This time, when you drag, the bars in the middle are the only objects rotating about their hinges.
Making the bars parallel:
While you still have the bars separated, go back to the drag window (if it is still open from before, close the existing window to clear the constraints, then re-open it again). On the Constraints tab, click on the icon, and then select the following two surfaces (shaded in the following figure for better clarity).
Then, rotate the model around and repeat this process for the equivalent lower 2 bars on the other side. When you drag the assembly up this time, it will be more realistic.
Return to the original orientation using Mechanism, Connect and then save and close the assembly.
LESSON 5 – Snapshots
Open up the Robot assembly that we have been working on. It should be in its original configuration – if not, use Mechanism, Connect to get it back to the zero locations. Then, click on the Drag tool and go to the Constraints tab. In conjunction with the constraint tool, add each joint axis that needs to be changed. Any of the ones in the figure that show a value of 0 will not need to be added.
Change the joint axis settings to their correct values based off of the figure in the exercise, and then click on the Take Snapshot icon in the upper left corner of the Drag window.
Rename this snapshot to “Fully_Extended” – remembering not to forget the “_” between the words. The model at the time of this snapshot will look like the following.
Then, go back to the joint axis constraint and change the values to the ones shown in the third figure of the exercise. Once the model looks correct, click on the Take Snapshot icon again, and save this snapshot as “Compressed”. It will look like the following.
Once you have both snapshots created, highlight both of them and click on the Make Available for Drawings icon ( ). The drawing symbol shows up beside the snapshot names in the Drag window, as shown below.
Save the assembly. Then, create a new drawing called Robot. Make sure that the Robot.asm assembly is the active model, and select an E size sheet. When the drawing opens, change the scale to ¼.
Next, add a General, Exploded view, using the Fully_Extended state, and place it on the drawing. Use a LEFT orientation for this view.
Finally, add another General, Exploded view using the Compressed state, and place it to the right of the first view, using a LEFT orientation as well.
The final drawing looks like the following figure.
Save and close the drawing and the assembly.
LESSON 6 – Servo Motors
The goal for this exercise is to edit the existing servo motor for this fan assembly to make the blades spin at 1200 RPM. The first thing we need to do is convert this number into a degrees per second amount.
Therefore, we will go back into Mechanism mode for the fan assembly, and then click on the servo motor tool ( ). The window will appear showing us our existing servo motor.
Click on the existing servo motor (CW_Rotation), and then click on Edit. This will bring you into the servo motor window. Click on the Profile tab, as shown below.
If you recall from the last time we set up this servo motor, we were controlling the motor by position. This time, we will change the Specification from “Position” to Velocity, as shown in the next figure.
We can see that the default units for Velocity are deg/sec. But, we don’t want to have the velocity ramp up, so we will change the Magnitude from “Ramp” to Constant, and enter a value of 7200, as we can see in the next figure.
We are done defining the servo motor for this new motor specification, so we can click on OK, followed by Close in the Servo Motors window.
We are not done, however, because we need to go and edit the analysis. Therefore, click on the Analysis icon ( ), which brings up the following window.
We will go ahead and edit our existing analysis, therefore, click on the 1_Full_Turn analysis, and then click on Edit. This will bring us back into the definition for this analysis, as shown in the next figure.
Let’s stop to think for a minute. We are trying to animate 7200 degrees every second. Currently, we are set at a frame rate of 10 frames per second. So basically, that means that every frame we capture will represent 720 degrees (2 complete revolutions).
Can anybody see a problem with that? If we are only taking a “picture” of the fan every 720 degrees, it won’t look like the fan is moving. Therefore, we need to change the frame rate. The following table shows us a sample of “pictures” that we would get for different frame rates.
Total Number of Frames (10 sec. Animation)
Degrees Per Frame Captured
The trade-off that we have is that as we increase the frames per second number, we get a better snapshot of the fan moving (200 frames per second captures a picture every 36 degrees of rotation). But, the higher the frames per second you go, the more frames it will take to generate the 10 second animation, thus the amount of time it will take to run the analysis and generate a movie later on will be a lot longer.
Therefore, we will settle for 100 frames per second for now, just to give you a feel for what is going on.
In the Analysis Definition window, change the Frame Rate to 100, as shown in the following figure.
Then, click on the Run button to check it out. You will see the blades spinning, and in the lower right corner, you will get a status bar and a red stop sign. In my case, the blades were spinning counter-clockwise. To fix this, you can either stop the analysis (by clicking on the red stop sign until it stops), or wait until the end and go back and edit the servo motor.
Therefore, click on OK to get out of this analysis window, followed by Close on the next window. When you edit the servo motor, you can either click on the Flip button again, or edit the velocity to -7200. In this case, we will use the Flip button and keep the velocity at a positive 7200.
When we get back to the analysis window, highlight the existing analysis and hit the Run button from this window (instead of editing the analysis and running it within the analysis definition itself). Click on Yes to overwrite the existing results file. The fan should be spinning the correct direction this time.
Once the analysis is done, click on Close from the analysis window, and then go to the results playback tool ( ). This will bring up the following window.
Click on the play button in the upper left corner to watch the animation. Once you are done, click on the Save button (little blue disk icon) to save the results to your working window. Close out of this window, then save and close the assembly.
To see an MPEG movie for this animation, open up the Fan_1200rpm.mpg movie file from the training directory.
For this assembly, we are creating a servo motor that will open up our lid, and another one that will close the lid.
We must create two separate servo motors, because we can not change the ramp value to be positive and then negative in the same motor.
Therefore, enter mechanism mode for this assembly, and then click on the Servo Motors tool. Create a new servo motor called Open_Lid and then pick on the pin joint in the assembly. Go to the Profile tab, and enter the following values for the Ramp magnitude.
Remember, the reason we must use a -18 value is because a -90 angle is fully opened. Therefore, to cover the entire 90 degrees in 5 seconds, we have to put in a slope of 18. When we click on the graph tool, and click on the dot that is located at Time=5.0, we can see the following.
This confirms that our motor is correct. Now, we need to create a servo motor that will close the lid. Close out of this graph window, and then click on OK to complete our first motor.
Click on New to create a new servo motor. Call this motor Close_Lid, and select the same pin joint. Go to the profile tab on this motor, and enter the following Ramp values.
There is a particular reason we have to set A=-90. Had we used A=0 and B=18, we would have gotten a positive 90 degree range in 5 seconds, BUT, the starting angle for this motor would have set the model at 0 degrees (the closed position). This is a bad thing, as we want the second motor to start out at -90 degrees.
Click on the graph icon to see what these values do for us.
As you can see, when the motor first starts up, it will set the joint axis at -90 degrees. At Time=5.0, the magnitude is ~0. At Time=10, the magnitude would be 90 degrees. Therefore, in a five second range, we will go back 90 degrees.
Close this graph window and then click on OK to finish out of this servo motor, and then click on Close to get out of the Servo Motors window. Now we must define our analysis.
Click on the analysis tool, and enter a name of Lid_Motion. Down at the bottom, we want to set the initial condition to the Closed snapshot. Therefore, click on the little radio button next to the word Snapshot, and select the Closed snapshot from the pull-down list of available snapshots. The window will look like the following.
We will leave the time and frame information alone. Now, click on the Motors tab to define the start and stop times of the two servo motors. There’s another trick here. Whenever you have two or more servo motors on the same joint, and they are going to run back-to-back (as they are in this example), you must put in a small time gap between them to give it time to complete the first motor before starting the second one.
Therefore, we will run the Open_Lid motor from the start of the animation (Time=0) to five seconds (Time=5). We will then start the Close_Lid motor at Time=5.0001 (to give it time to finish the first one), and then stop at the end (Time=10).
Our window should look like the following.
Do not click on Run yet. We will finish out of this window first by clicking on OK. From the Analyses window, highlight this analysis and then hit Run. It will start out okay, but at the midway point (-90 degrees – fully open), we get an error that says the following.
There could be a number of different things that could cause this, but the most likely is the limits that we have set on the joint axis. Therefore, click on Abort to stop the analysis and then Close to exit the Analyses window.
Back in the joint axis settings for this pin joint, disable the limits by un-checking the little box, as shown below.
Click on OK and then return to the Analyses window, select the analysis in the list, and then click on Run. We will be asked to confirm the overwriting of the existing result set, as shown below.
Click on Yes, and the animation should run without any errors this time. Open up the results window to play back the animation and to save the playback file. Then save this assembly and close it.
LESSON 7 – Animation Playback
We will begin by opening up this assembly and going to mechanism mode. Next, we will click on the Analyses tool, and delete the existing analysis. Finally go to the Servo Motors tool, and delete all servo motors in this list.
While we are still in the servo motor window, we will create a new servo motor and call it Open_Up. For the profile, we know that we want the animation to be 15 seconds long, and we need to travel -90 degrees in that time to cause the lid to open up completely.
Therefore, our Ramp values have to be A=0 and B=-6, as shown below.
Click on OK to complete this motor, and then create a new analysis, called 15Sec_Run. Set the end time to 15 and the Frame Rate to 24. Be sure to use the Closed snapshot as the starting position, as shown below.
Click on Run, and your lid should open up to 90 degrees. Click on OK once this has finished. Close out of the Analyses window, and go to the results playback tool. On the first window, click on the Create a motion envelope tool. When the window appears, set the level to 5 and then create the envelope (zero_refs_env0001). We will open up this part last.
Close out of the motion envelope window, and then click on the play button. In the player window, click on Capture and create your MPEG file. Once this is done, save your playback and then save and close your assembly.
Open up the envelope part that we created, and it should look like the following.
Close out of this part.
LESSON 8 – Advanced Servo Motors
The first thing we are going to need to do before we can run the analysis is to go back to all of the joint axes and uncheck the limit box (turn off limits). Once that is done, we can get a successful analysis, and therefore a successful animation.
There are two different ways to approach this exercise with servo motors. We will go into great detail with one of them.
11 Ramp Servo Motors
We could create 11 servo motors (two for joints 1-5 and 1 for joint 6) using the Ramp option, but that is more work and bookkeeping. The trick in doing this would be to make one positive and one negative servo motor, and then set the times for start and end in the analysis correctly. This is a perfectly acceptable way of doing this, but we are going to demonstrate the other way.
5 User Defined Servo Motors and 1 Ramp Servo Motor
We can reduce our servo motor headcount by 5 motors, and simplify our analysis setup using User Defined profiles for the servo motors. Therefore, based on the joint numbers in the exercise figure, we will start creating the motors.
Joint 1 – User Defined Servo Motor 1
We will first use Mechanism, Connect to make sure our assembly is at its starting position for all axes (0 degrees). Then we will go to the Servo Motors tool. Click on New to create a new servo motor, and call it 1_Move (or your own name). Select Joint Axis #1 indicated in the exercise figure.
Based on the table information listed in the exercise, we plan to move this joint -45 degrees in the first 5 seconds of the 30 second animation. Then, it holds from Time=5 to Time=25. For the last 5 seconds, it moves back 45 degrees to the starting point of 0. Therefore, we need to create a User Defined profile based on Position, and enter the three expressions and time domains shown in the following figure.
Click on the graph to make sure it looks correct. Then click on OK to complete this first servo motor.
Joint 2 – User Defined Servo Motor 2
We are going to do a similar thing with the next servo motor. We know that joint 2 is going to start moving from 0 degrees to -90 degrees at Time=5 seconds, and will finish in 5 seconds. At Time=25 seconds, it starts to go back to 0 degrees and ends at 30 seconds.
The servo motor profile for this joint looks like the next figure.
Again, check the graph to make sure it looks right, then click on OK.
Joint 3 – User Defined Servo Motor 3
This joint does the same thing the last joint did, only in the opposite direction (90 degrees instead of -90 degrees). Therefore, you could copy this motor, rename it to 3_Move, pick the third joint axis to use, and then edit the profile to look like the following.
Check the graph to verify that it is going to a positive 90 degrees, and then click on OK.
Joint 4 – User Defined Servo Motor 4
This is an exact copy of 2_Move, except for the name, and which joint axis it points to. Perform a copy of 2_Move and then edit it. Rename it to 4_Move, and select the fourth joint axis according to the exercise figure. The profile should look like the following.
Verify its graph and then click on OK.
Joint 5 – User Defined Servo Motor 5
This joint will be different, but we could still copy 4_Move, rename it to 5_Move, and select on the fifth joint axis. Edit the profile for the time domain and expression to look like the following.
Joint 6 – Ramp Servo Motor 1
This is the last servo motor that we need to create. Create a new one and call it 6_Move, and pick on the axis labeled 6 in the exercise figure. We are going to use a Ramp profile for this and enter A=0 and B=72 for the values. This will create a 720 degree rotation over 10 seconds. The window should look like the following.
Verify that the graph shows 720 degrees over 10 seconds, and then click on OK. Save your assembly.
Assuming that you have already removed the limits from the different joints, we are ready to create the analysis. We want to create a real 30 second animation, therefore, we need to change the end time to 30, and change the frame rate to 24.
We don’t have a snapshot to use, but we should be okay with the current position as long as we have run Mechanism, Connect to get back to the zero locations.
The first tab looks like the following figure.
Now, we need to set up the motors. Therefore, click on the Motors tab. The six different servo motors should be listed, and every one of them currently says Start and End for the start and end times respectively.
This is okay for all but 6_Move. We need to change the start time to 15 and the end time to 25. Once we do this, we can run the analysis.
We should see the exact motion that we expected. Once the analysis is done, go to the playback tools and save the results file. Using the play icon, run the animation through its motions. As it is animating, pan and zoom to get as close as you can to the robot and still see all of its moving parts. Then stop the animation, rewind it back to the beginning and then click on Capture to create your Robot_Motion.mpg MPEG movie.
Save and close your assembly at the very end.
LESSON 9 – Slider Connection
Open up the Storage_Drawer.asm assembly. It will initially look like the following.
We are going to assemble in four drawers using slider constraints so each drawer will be able to open and close. We will then add four servo motors to be able to control the animation of the opening and closing of the drawers.
Assemble in the Drawer.prt part file. In the Placement window, click on the Connect tab to access the mechanism constraint section. Be sure to select a Slider constraint if it is not already selected.
For the edge and plane alignments, select the references shown in the next figure.
Click on OK once the placement is complete, and then go to Applications, Mechanism to set the joint axis settings.
Click on the Arrow in the joint axis to highlight it in red, and then right mouse click and select Joint Settings. Type in a value of 0 for the position, and you will notice that it will place our drawer in the correct “closed” position. Therefore, click on the Regen Value tab, and enable the regeneration at “0”.
Use Mechanism, Connect to place the drawer in its closed state, as shown below.
Drawer 2, 3, and 4
Repeat this process to assemble in the remaining 3 drawers. Be sure each one of them is set to automatically regenerate at “0”. Now, we will go in and create our four servo motors.
Remember, we want to start by opening up the first drawer, followed by the second, then third and then fourth. Once all four drawers are open, we want to close them in the reverse order, starting with drawer 4, then 3, then 2 and then drawer 1. We want all of this to happen in 30 seconds.
Therefore, each drawer will need 3.75 seconds for each range of motion.
Servo Motors 1 & 2
Go to the servo motor tool, and create a new servo motor called D1_Open, and then pick on the Arrow for the first drawer’s joint axis. We will use a Ramp setting where A=0 and B=-1.067 (because we want the slope to be -4 inches in 3.75 seconds = -4/3.75 =
-1.0666666666666). Use the Graph tool to verify this condition is correct.
The window will currently look like the following.
Click on OK to complete this first servo motor, and then click on New to create another one. Name this one D1_Closed, and pick the same joint axis. For this one, we want it to start out at -4 inches, and then come back in with the opposite slope as the first one. Therefore, our ramp will be A=-4.0 and B=1.067, as shown in the next figure.
Click on OK to complete this servo motor.
Servo Motors 3 & 4
We will now create a new servo motor called D2_Open, and select the second joint axis. Use the same ramp values as the first one that we created. If we want, we can highlight the D1_Open, and then click on Copy, and just edit the name and the joint axis being used.
Create the second servo motor called D2_Closed to shut the drawer. The two servo definitions are shown below.
Servo Motors 5 – 8
Repeat this same process to create the remaining servo motors, called D3_Open, D3_Closed, D4_Open and D4_Closed respectively. Once all servo motors are defined, click on Close from the servo motor tool window.
Now, create a new analysis called Drawer_Motion, and change the end time to 30 seconds, and the frame rate to 24. The window should look like the following.
Click on the Motors tab, and enter the appropriate start and end times. Be sure to know which motor you are currently editing, as they may not be in the order you expect – depending on when you created them.
The following figure shows my Motors window with the correct values.
NOTE: The D4_Closed Motor must start at 15.0001, because it is back to back with the D4_Open, and it is the same joint axis. The other ones do not need to do this, because it is always a different joint axis before and after it.
Click on Run to watch the animation work. Once you are done, open the playback window and save the playback results file. Create an MPEG movie of this animation. To see a completed animation, look at the SD_Final.mpg movie file in your directory.
LESSON 10 – Cylinder Connection
Open the assembly called Locking_arm.asm. It should already contain one component, called Notched_Cyl. We will start by assembling in the Cyl_Handle component. Make sure your datum axes are visible.
In the connections section of the placement window, change the connection type to Cylinder, as shown in the next figure.
We only have to pick on an axis from the two parts. Therefore, select the Y_Axis from each component. Once both have been selected, the handle part will snap over to the cylinder. Click on OK to complete this placement, and our assembly will currently look like the following.
We can see that the tab on the handle is too far down. We will use joint axis settings to move it to the correct starting location, and zero it. Therefore, go to Applications, Mechanism and then click on the arrow portion of the joint symbol. Once selected, right mouse click and select Joint Settings.
We can see from the model that if we just changed the value to “0”, it would not bring it up to the point that we want. This is shown in the next figure by the two highlighted planes.
In our joint settings window, we can see that we are currently sitting at 2.3125 inches above the green plane.
Therefore, we will use the zero references to pick the surfaces that we want to be at the zero location.
Click on the check box to specify references, and then pick on the two surfaces shown in the following figure.
Once we select these references, the joint settings window will indicate that our distance is now -4.0 inches.
Next, go to the Regen Value tab and be sure to regenerate the model at “0” from this point on.
When we click on OK, and then use Mechanism, Connect, our tab will now be at the right height, as shown in the next figure.
We now have to adjust the rotational part of this constraint. Therefore, highlight the entire joint axis symbol and then go to the joint settings tool. When inside this tool, enter 36 in the field to get the notch to rotate over to the correct position.
Once there, click on the Make Zero button, and then go to the Regen Value tab to set the regeneration at “0”. Click on OK, and then Mechanism, Connect to see the new starting point for our tab.
We can now set up our servo motors. We will need three motors that use different components of the joint axis.
Rotational Motor 1
The first motor that we will create will be called Top_Rotation. We want to select the entire joint axis symbol for this motor. It will use a Ramp profile where A=0 and B=-7.2 (to go -36 degrees in 5 seconds = -36/5). The window will look like the following.
Click on OK to complete this motor.
Click on New to create another motor. Call this one Translation and be sure to only pick on the straight arrow portion of the joint axis symbol. Use a Ramp profile where A=0 and B=-0.35 (to translate down 3.5 inches over 10 seconds = -3.5/10). The window will look like the following.
Click on OK to complete this motor.
Rotational Motor 2
Create another new motor called Bottom_Rotation and pick the entire joint axis symbol again. Use a Ramp profile where A=0 and B=7.2 (to rotate 36 degrees in 5 seconds = 36/5). The window for this motor looks like the following.
Click on OK to complete this motor, followed by Close to finish servo motors. Now, we can create a new analysis.
Create a new analysis called Handle_Motion. On the default tab, change the end time to 20 seconds, and leave the other settings alone.
On the Motors tab, make sure that all three motors are listed. We will need to change the start and end times to the following:
Start Time = START
End Time = 5.0
Start Time = 5.0001
End Time = 15.0
Start Time = 15.0001
End Time = END
The window will look like the following.
We can now click on Run to see the analysis go through the motion. What do you notice at the end of the translation? The tab seems to jump back to the 36 degree location, and then travel another 36 degrees into the part, as shown in the next figure.
Why does this happen?
If you remember from an earlier example with a lid opening and closing, the tab’s zero location is at 36 degrees. When the Bottom_Rotation servo motor starts up, it always goes to the zero location if A=0 in the Ramp setting.
To account for this, we will need to go back and edit the servo motor and change this value. Therefore, click on OK to complete the analysis definition, and then Close to get out of the analysis window.
Go back to the servo motors, and edit the Bottom_Rotation motor. On the Profile tab, change the ramp so that A=-36, and leave the other values alone. The window will look like the following.
Click on OK to complete this change, followed by Close to get out of the servo motor tool. Use Mechanism, Connect to set the model back to its starting position, and then go back to the analysis tool and run the analysis again. Do you notice a difference? This time it started it where it left off (at -36 degrees) and then traveled back to the zero location.
Play the results back and save a movie if you want. To view an already saved movie, open the Locking_Arm_1.mpg movie.
Save and close this assembly.
LESSON 11 – Planar Connection
Open up the Planar_Robot.asm assembly. It initially contains only the PRobot_1 base component. We are going to start by adding the next component. Make sure your datum axes are visible.
Assemble in the PRobot_2.prt component. Use a Pin connection and select the following references to assemble it to the base component.
The component, when placed, should look like the following.
Go to Mechanism mode, and edit the joint axis settings for this pin connection. It should already be at the “0” location when assembled. Go to the Regen Value tab and specify the regeneration value at 0. Go back to Applications, Standard to bring in the next component.
Now, assemble in the Probot_3.prt component. Use another pin connection for this component, and select the references shown in the next figure.
The final placement of this component in the assembly looks like the following.
We will not need to set a regeneration value for this pin joint, because the placement of later components will drive its initial position. Therefore, we are now ready to add the next component.
Assemble in the PRobot_4.prt component. We are going to use a Slider connection for this component to assemble it to the PRobot_3 part. When prompted, select the X_AXIS for each component, and the FRONT datum planes for each component. Then, while still in component placement mode, use Ctrl-Alt and the Right Mouse Button to move the component about half way into the other one, as shown in the next figure.
Assemble in the PRobot_5.prt component. This will use a Pin connection with the references shown below.
The fully assembled component will look like the following.
We will not adjust any joint axis settings for this component at this time.
The last component that we will assemble will be the PRobot_6.prt part. We will use two different mechanism connection types to finish this assembly. The first will be a pin that places this component into PRobot_5. Use the following axes and planes as references.
Once the pin connection is complete, the model will look like the following.
Don’t exit out of the placement window yet. Our wheel is still floating above the large base, so we will add a Planar connection by clicking first on the green plus “+” button to create a second connection.
Select the Planar option, and then select the two surfaces shown in the next figure.
The wheel should snap down to the large flat surface, and then we can click on OK to complete the assembly of this part. Going to a FRONT view, we can see that our second pin joint has allowed the whole arm to rotate down to let the wheel touch the surface.
Now we are ready to adjust the rest of our joint axes. Save the assembly first.
Joint Axis Settings
We already set the zero regeneration value for the first pin joint that we created. We are going to specify a zero translation point for the slider that we added between PRobot_3 and PRobot_4.
Therefore, go to Applications, Mechanism and you will see all of the different joint axis symbols, as shown in the next figure.
Click on the arrow in the slider symbol and then use the right mouse button to select Joint Settings. We should see two highlighted planes, and we are given a current distance between them.
We will click in the checkbox to specify references to set the zero value, and then pick on the two surfaces shown below.
Once both surfaces are selected, you will see the distance between them reported in the field. Go to the Regen Value tab and check the box to regenerate at “0”.
When you run Mechanism, Connect, you will see the following.
With the current settings, we will be able to control the location of the blue wheel by specifying the rotation of the pin 1 joint and the translation of the slider joint. But, if you remember from our exercise description, we want to be able to control the entire robot with the wheel.
The reason we set our zero locations was to be able to get a good starting point for the wheel in terms of the two translation vectors in the planar connection.
First, however, let us refresh our memory to remember which is the X and which is the Y axis of our planar connection using the following figure.
The center of the wheel represents X=0 and Y=0. Therefore, we will start by clicking on the arrow in the planar joint axis symbol that represents X, and edit the joint settings to set the current location to zero, and then specify that we want to use that location in regeneration.
Repeat this same process for the arrow that represents Y. To avoid any downstream problems, we will go back to the joint settings for the Pin1 and Slider connections, and uncheck the box in the Regen Value tab.
We are now ready to set up our servo motors. Probably the best way to do this will be to set up two user defined servo motors; one for each translational component of the planar joint. Therefore, start by creating a new servo motor called X_Motion and pick on the arrow in the joint axis symbol that represents the X direction.
In the profile section, we will use User Defined as the definition type, and enter the following values:
Clicking on the graph function, we can see that our results are correct.
Click on OK to complete this servo motor, and then click on New to create a second servo motor. Call this second one Y_Motion, and make sure you pick on the arrow on the axis symbol that represents the Y direction.
For the user defined profile, we will use the same time domains, and our expressions will look like the following.
The graph for this motor looks like the following.
Click on OK to complete this motor, and then Close to finish out of the servo motor definition tool. Now we will create our analysis.
Go to Mechanism, Connect to reset the assembly back to its starting point.
Create a new analysis called Wheel_Travel, and on the first screen, change the End Time to 20 seconds. On the Motors tab, make sure that both of the servo motors that we created are listed, and go from Start to End. Run this analysis to see what happens. It should go through the motion correctly. Click on OK, followed by Close to get out of the analysis.
Go to the playback tool and watch the animation. Capture a movie using a TOP view. Save and close the assembly when you are done.
LESSON 12 – Ball Connection
There were no exercises for this lesson.
LESSON 13 – Bearing Connection
There were no exercises for this lesson.
LESSON 14 – Rigid & Weld Connections
Open up the Rwex.asm assembly. It looks like the following:
Assemble in the first left hinge, called Rwex_Lhinge.asm. Because this is a sub-assembly that contains mechanism connections, we should use a weld connection. Fortunately, we already have coordinate systems set up in the components to facilitate this. Otherwise, you would need to create them in both your individual components or sub-assemblies.
Therefore, turn on the display of coordinate systems, and then select a Weld connection type. Pick on the two coordinate systems shown below.
The hinge will snap into place, as shown in the next figure.
Assemble in a second left hinge assembly, and use another Weld connection type. Pick on the following coordinate systems.
The final placement of this second hinge is shown in the next figure.
We are now going to assemble in the two right hinges. We will repeat the same process as we did with the left ones. For the first one, use the following coordinate systems for the Weld connection.
The placement of this hinge will look like the following.
Bring in the second one using the following references.
The assembly should now look like the following with all four hinge assemblies in place.
Once the four hinges are in place, we can bring in the panel assembly. Even though the panel assembly does not have any internal mechanism constraints, it will be best for us to use Weld constraints to connect to the hinge assemblies.
The reason for this is because the hinges still have one component that is free to rotate on each pair, and therefore we don’t want to lock them down with rigid constraints.
Assemble in the first panel assembly and go to the Connect tab. Select a Weld connection type, and pick on the coordinate systems indicated by (1) in the next figure.
Once you have selected the first pair of coordinate systems, click on the green “+” button to add a second weld, and then pick on the (2) pair of coordinate systems from the previous figure.
The final placement of this assembly looks like the following.
Assemble in a second panel assembly, and use two weld connections for this one as well. Use the following figure as a reference for selecting the coordinate systems for each weld connection.
Once this panel is assembled, the top-level assembly will look like the following.
Go to Mechanism mode right now and try dragging each panel. Watch the pair of hinges for the particular panel you are dragging to make sure they are moving properly. Open up each panel to get easier access to the location where we are going to attach the screws, as shown below.
Assemble in the first screw component. This is an individual component, and it will not need to move in the assembly, therefore, we will use a Rigid connection type. Therefore, click on the Connect tab, and select the Rigid connection type.
When prompted, click on the following references to create an Insert and Align condition, respectively with the upper left hole on the left panel.
The first fully assembled screw will look like the following.
To assemble the other 3 screws in this panel, use the Repeat command. Highlight the first screw in the model tree, and then select Edit, Repeat from the menu bar. This brings up the following window.
Only the hole is different for each screw, so we will select on Insert in the upper portion of the window, and then click on the Add button. Then, select the inside of each remaining hole. As you pick, the screw will appear automatically. Once you have all three holes selected, your window will look like the following.
Click on Confirm to finish the placement of these additional 3 screws. Now, assemble in a separate screw for the top hole on the second panel assembly. Why didn’t we just continue with the Repeat command?
If you remember, when we create mechanism connections, we want to limit them between two bodies. Each screw that was added already was tied to the same left panel. If we continue with the Repeat command, the surface used for the Align constraint will remain the same, and we want it to be on the right panel instead.
Therefore, we will repeat the process of using a Rigid constraint to bring in the first one to the upper hole on the right panel, and then repeat it 3 more times to finish the holes.
Go back to mechanism mode and try dragging. Everything should work properly.
Save and close the assembly.
LESSON 15 – Slot-Follower
When you open up the SLEX.asm assembly, it looks like the following.
The first step will be to assemble in the SLEX_Ball.prt component and use a Planar connection between the top flat surface of the base and the TOP datum plane of the ball. When assembled in Mechanism mode, you will see the following.
Now we will create the slot-follower connection. To do this, click on the slot icon ( ) and then pick on the references shown below.
When you complete this slot-follower, use the Drag tool to move the ball to the start of the curve (on the left), as shown below.
For the rest of this exercise solution, we will use the following X and Y convention for the Planar connection symbol.
The first thing we should do is set our planar connection joint settings so the X=0 and Y=0 location places us at the start of our curve. Therefore, click on the “Y” arrow, and set the joint to regenerate at “0” – which it should already be at.
Then, click on the “X” arrow, and go to the joint settings. It should currently show -4 in the field. Click on the Make Zero button, and then set the joint to regenerate at “0”. The joint symbol should now be at the start of our trajectory, as shown in the next figure.
While we are in a TOP view, go ahead and take a snapshot called Start using the Drag tool. This way, when we create the analysis, we will always start it using the snapshot.
Preparation for the Analysis & Servo Motors
Let’s take a minute to look at the datum curve that represents our trajectory. It consists of two straight lines and two arcs. We know we can only work with X, Y or rotational directions when creating the servo motors.
The following figure shows some key X and Y point locations around the trajectory.
Looking at the above figure we can see that we have an initial “Y” motion from 0 to 12 inches. During this time X=0. Right at the (0,12) point, the Y value continues to go up to 16, while the X value goes to 4.
At the top of the arc, the Y value starts to come back down, while the X value continues over to 8. At the right side of the arc, the Y value continues to drop all the way to the bottom, while the X value starts to come back to 4.
At X=4, the Y value is 5.07180, at which point X becomes static, while Y goes to 0 again.
Therefore, we have only one point where Y changes direction (4,16), but we have three locations where X changes (0,12), (8,12) and (4, 5.07180).
We might be tempted to create servo motors to go to these points, but they will encounter problems. The reason is that we can not control one of the axes if it is going from positive to negative, negative to positive, or from no change to a change.
Therefore, we will use some intermediate points. These can be seen in the last figure at (2, 15.4641) and (6, 15.4641). Now we can do the following.
We will control “Y” from (0,0) to (2, 15.4641), because it is always going in the positive direction. X will be going from no change to positive, but we aren’t controlling it directly.
We will then control “X” from (2, 15.4641) to (6, 15.4641) because it is always going in the positive direction during this time, while Y is going from positive to negative, but it is not being directly controlled.
Finally, we will control “Y” again from (6, 15.4641) to (4,0) because it is always going in the negative direction during this time, while X is going from positive to negative to no change, but it is not being directly controlled.
See how this works? It may seem a little confusing, but believe me, it is the correct thing to do. Perhaps an easier way to see this would be to graph X and Y as a function of time, as shown below for an arbitrary time.
If we were to draw a line up everywhere dx or dy changes, we might see the different regions.
We can not put a point in the red region, because dx = 0. We have to put a point in the blue region because dy changes from positive to negative at the end of this region, while dx remains positive. We have to put a point in the green region because dx changes from positive to negative at the end of this region, while dy remains negative. We could put a point in the yellow region, but since dy continues to drop through the yellow and gray regions, we don’t have to.
Therefore, our selection of (2, 15.4641) and (6, 15.4641) are good choices, because they are in the blue and green regions respectively.
Remember that one of the requirements for this animation is that it should try to keep a constant velocity. We know that we are going to break our animation up into three different regions, as shown in the following figure.
If we assume we want to cover the first region in 10 seconds, we can use ratios to calculate the approximate time required for the other two regions to maintain a pretty consistent velocity.
Velocity = 16.1888 in / 10 sec = 1.61888 in/sec
1.61888 in/sec = 4.1888 in / t (sec), t (region 2) = 2.5875 sec
1.61888 in/sec = 17.6382 in / t (sec), t (region 3) = 10.8953 sec
Now that we know the time domains for each region, we will create the servo motors.
Servo Motor 1 – Y Direction Only
The first servo motor we will create will drive the “Y” axis from (0,0) to (2, 15.4641). Create a new servo motor, and call it Y1. For the joint axis, pick on the single arrow that represents the “Y” axis.
Use a Ramp profile, where A=0 and B=1.54641 (where B = 15.4641 in / 10 sec). Click on OK to finish this first motor.
The model currently looks like the following.
Servo Motor 2 – X Direction Only
The second servo motor we will create will drive the “X” axis from (2, 15.4641) to (6, 15.4641). Create a new servo motor called X1, and pick on the arrow that represents the “X” axis.
Use a Ramp profile, where A=2 and B=1.5459 (where B = 4 in / 2.5875 sec). We made A=2 because at the start of this motor, the X location is at 2 inches from the last motor. Click on OK to complete this second motor.
The model looks like the following.
Servo Motor 3 – Y Direction Only
Create one more servo motor called Y2, and pick again on the arrow that represents the “Y” axis. For the profile, use a Ramp with a value of A=15.4641 and B=-1.4193 (where B = -15.4641 in / 10.8953 sec).
Click on Ok to complete this motor, followed by Close to finish defining servo motors.
Create a new analysis called Rolling_Ball, and change the end time to 23.4. If you do the actual math, you would see that the real time is 23.4828. The reason we don’t use this is because it will round up the time to 23.5, in which case the ball will try to roll past the model, and you will encounter an error. Therefore, we will stop it just a fraction before the end – an amount that won’t really be noticeable on the animation.
At the bottom of the first tab, change the initial condition to the Start snapshot. Keep the other timing options alone.
On the Motors tab, use the following settings.
You might also be wondering why we are using an incremental difference between the end time and start time of each servo motor when they are controlling different axes. We are doing this because it is still a single planar connection, and the x and y values are still changing even if we aren’t directly controlling both of them at any given time.
Click on Run to see the analysis go. It should work fine. Run the playback when you are done, and capture a movie file. You will notice that there is a little change in velocity, but it is pretty smooth.
Save and close this assembly.
LESSON 16 – Cam-Follower
When you open up the Maze.asm assembly, it looks like the following.
We will start by going to Mechanism mode, and we can see a planar connection on the Maze_Traveler part. This planar connection forces the bottom of the traveler to stay on the track. Nothing, however, is preventing our player from cutting through the maze base to reach the goal on the other side.
Therefore, we need to add some cam followers.
Cam Follower 1
Create a new cam follower and call it First_Cam. For the Cam1 tab, we will start by picking the following surfaces.
NOTE: You may be tempted to turn on the AutoSelect, but it will actually hinder you in this case, since our surfaces do not form a closed loop.
Next, click on the Cam2 tab, and pick the two cylindrical surfaces at the base of the traveler part, as shown in the next figure.
Now, go to the Properties tab, and enable the liftoff. Click on OK, and now we are ready to create our second cam, called Second_Cam.
Cam Follower 2
For the Cam1 tab, select the following chain of surfaces.
NOTE: The original ones are highlighted as well. We are creating the one that has the purple arrow coming out of it.
For the Cam2 tab, we will use the same two cylindrical surfaces that we did for First_Cam. Enable liftoff for this cam as well using the Properties tab. Click on OK, and our model now shows two cam symbols, as shown below.
Close out of the cam window, and try dragging your game piece around. It should stop when it hits the walls as you move it around the maze.
Save and close this assembly when done.
LESSON 17 – Gravity
Open up the Ferris_Wheel.asm assembly, which looks like the following.
Go to Applications, Mechanism, and create a new analysis. In this example, we will call it Ferris_Wheel_Turn.
Define the analysis as a Dynamic analysis, with an end time of 60 seconds. I used a frame rate of 24 to have the captured movie run at the correct speed. NOTE: A true ferris wheel would not complete one revolution in 1 minute, but we don’t want to sit and wait forever to see our results.
The first tab of the analysis looks like the following.
Click on the Ext Loads tab, and enable gravity, as shown in the next figure.
On the Motors tab, verify that our servo motor is running from Start to End, and then run the analysis. What you should see, if you did all of this, is the wheel goes around, and each basket swings slightly as they adjust to stay upright. If you forget to use a Dynamic analysis, the baskets will be locked into place and turn upside down as they go around. The same thing would happen if you use a Dynamic analysis but forget to enable gravity.
Save and close this assembly when you are done.
LESSON 18 – Springs
Open up the Lock_Cam assembly and go to Mechanism mode. Click on the spring tool, followed by Add. Change the type to Point-to-Point, and select the datum points that span the distance between the bit and the top of the lock for the first slot. Then, enter the appropriate information in the window.
The window should look like the following.
When you click on OK to complete the first spring, it will look like the following figure on the model.
Repeat this process to create the remaining 9 springs. Once all of the springs have been completed, your model will look like the following.
Next, go to the analysis tool, and edit the existing analysis (Key_Insertion). Be sure that the analysis type is set to Dynamic, and that the servo motor is running from start to finish. Finally, go to the Ext Loads tab, and enable gravity.
Run the analysis to view the results.
LESSON 19 – Dampers
There are no exercises for this lesson.
LESSON 20 – Measures
The goal for this exercise was to have you try different measures on the Lock_Cam assembly. The following graph shows a Net Load measure for each of the 10 springs as a function of time.
The next figure shows a screen capture of the playback with the Display Arrows on for each of the 10 measures.
LESSON 21 – 6DOF Connection
When we left off with the 6DOF_ASSY model, we had run analysis that caused the ball to bounce around the inside of the cube. To create a trace curve, we will go to Mechanism, Trace Curve, which brings up the following window.
You should see your result set listed in the lower field. If not, you will need to re-run your analysis. For the paper part, select the cube model. Then, pick the datum point at the center of the ball for the trace curve.
Be sure to select a 3D curve type, and then click on the result set in the window to activate it. Click on OK, and you should see the following curve in your model.
Since we set this model up with a perfectly elastic collision between the ball and the inside of the cube, the angle and speed at which the ball hits the wall is reflected perfectly on the deflection. Look from the Right side of the model to see this.
If you change the coefficient of restitution for each of the joint axis settings to 0.3, you will see that the ball quickly loses its momentum and the path is altered. Try making a trace curve for this as well and you will see.
Save and close this assembly.
LESSON 22 – General Connection
There are no exercises for this lesson.
LESSON 23 – Gear Pairs
When you open up the mixer, go into mechanism mode. There are three pin connections – one for each of the blades, and one for the crank wheel. The crank wheel pin connection has a servo motor on it that rotates the wheel one complete turn per second.
We also have a kinematic analysis defined, so all we need to do is create our two gear pairs and re-run the analysis.
The trick for this exercise is making sure your magenta arrows are pointing in the correct direction to define the positive rotation of the gear bodies. The servo motor will rotate the wheel in a counter-clockwise motion when viewed from the left side of the assembly.
Gear Pair 1
Create a new gear pair, and call it Gear_1. For the Gear1 tab, we will use the pin connection at the top of the blade on the left side (when viewed from the front of the assembly). We want to make sure that the magenta arrow is pointing down, as shown in the next figure.
For the Pitch Circle Diameter, enter 0.5, and then use the select button to pick the BLADE_PNT datum point that sits on the left blade bevel gear. Once you do this, you should see the symbol for the gear appear on the bottom surface of the bevel gear, as shown in the next figure.
Now, click on the Gear2 tab, and select the pin connection for the wheel (the one that has the servo motor on it). The magenta arrows may be pointing from the left, but we want to click on the flip arrows button to move it to the right side, as shown in the next figure.
For the Pitch Circle Diameter, enter 2.3, and then select WHEEL_PNT_1 as the datum point. NOTE: We actually have two datum points on the wheel, because our wheel has two gear surfaces, one on the left and one on the right. WHEEL_PNT_1 is on the left side.
Once we have selected this point, click on OK to complete this first gear pair. Your model will currently look like the following.
Gear Pair 2
Copy the first gear pair to make our second. Edit the copy, and change the name to Gear_2. Once you do this, for the Gear1 tab, pick on the select arrow for the joint axis to pick the pin connection on the right blade part. Make sure the arrows are up in this one, as shown in the following figure.
Then, select the BLADE_PNT that sits on the bevel gear for this blade part. Once you do this, go to the Gear2 tab, and pick the WHEEL_PNT_2 datum point. Leave all other selections the same as the first one.
Once you have selected the other datum point, click on OK to complete the second gear pair. Our model should have the following gear pair symbols.
Close out of the Gear Pair tool, and run the analysis that already exists. Your blades should turn opposite each other, and in the correct direction based on the wheel rotation direction. If not, go back in to the Gear2 tab for each gear pair and reverse the arrows again to point from the left. Re-Run the analysis if necessary.
Capture a movie if you like. Save and close this assembly when done.
LESSON 24 – Force and Torque
LESSON 25 – Force Motors