Final Design & Analysis
Here the final design and analysis are described in further detail.
Sections (in order):
Dynamic Model
FLEXMAG Link
Kinematic Model
Control Interface
The sections titled FLEXMAG Link and Control Interface discuss the design of our deliverables, while Dynamic Model and Kinematic Model discuss the corresponding analysis which lays the groundwork for these designs.
Dynamic Model
A simplified model of the robot was created using SolidWorks. The mass properties were overridden to match the actual robot and then a motion study was conducted to analyze the dynamics of the robotic arm. To simulate the motors at the joints, torsional springs were added in place of the motors. By physically measuring the displacement of the robotic arm when a weight was added to it, the stiffness of the shoulder joint was obtained. Then, the other two joint stiffnesses were found by changing them until their displacements matched the physical displacements. The data was plotted to find stiffness in Figure 12.
Figure 12: Stiffness coefficients found through measuring displacements
After the stiffnesses were found, a motion analysis was conducted to find the natural frequency of the arm. Figure 13 shows the simplified model in two different configurations. The natural frequencies found in the study were compared to physical natural frequency measurements to ensure that our model was valid.
Figure 13: Vibrations of simplified dynamic model
In addition to frequency, the dynamic model is used to determine torques, as seen in Figure 14, and the resulting loads are compared to load readings from the motor in Figure 15. Although the curve shapes are similar, the magnitude is off. This can be partially explained by the fact that the empirical loads are inferred from motor readings, which are inaccurate according to the manufacturer.
Figure 14: Torque as arm is raised from lowered to extended position
Figure 15: Load from SolidWorks compared to empirical load
FLEXMAG Link
The FLEXMAG Link was designed in SolidWorks as well. This design combines the flexible and fused links by creating a link which can use both springs (for flexibility) and magnets (for breaking away) with varying amounts of strength.
Using the simple hand calculation in Figure 16, the compression spring stiffness was found. A buckling calculation was also performed based on Shigley's Mechanical Engineering Design, 10th ed. in Figure 17 to find the critical horizontal deflection. Although the result of 8 lbs was not accurate, we determined that a 3-inch long spring requires a mean diameter of 0.58 inches for absolute stability. Thus, a suitable spring was selected from McMaster's catalog in Figure 18.
Figure 16: Spring stiffness calculation
Figure 17: Spring buckling calculation
Figure 18: Selected spring meeting minimum stiffness requirements
For the breakaway aspect of the link, magnets will be used. Two neodymium magnets are capable of producing significant force and can be easily installed onto the link using a 1/4''-20 bolt. The magnets can be swapped to produce a variety of pulling forces.
Figure 19: Neodymium magnet
We used McMaster again to find an example magnet which is suitable for the link, shown above in Figure 19. Combining the spring, magnet, and aluminum attachments designed to meet ATA’s specifications, the FLEXMAG link can be easily assembled onto the existing extrusions. Figure 20 & 21 shows the FLEXMAG link.
Figure 20: The FLEXMAG link
Figure 21: Shop drawing for aluminum attachment
Kinematic Model
The MATLAB controller interface requires the use of a kinematic model for the control of the animatronic figure. ATA already uses MATLAB in their offices, so no other software was used. No extra hardware was designed, as the keyboard is sufficient for the interface. The positions of each of the joints are calculated using the following kinematic equations in Figure 22 where p0 is the position of the torso joint, p1 is the position of the shoulder joint, p2 is the position of the elbow joint, and p3 is the position of the wrist joint.
,
Figure 22: Forward kinematic equations
The program can use the kinematic equations to display an animation of a defined motion. Thus the user can preview a motion before executing it. As shown in Figure 23, the animation simply plots the XYZ positions of each of the joints and connects them sequentially with red lines from the torso joint all the way to the wrist joint. The blue lines, which indicate the main body of the animatronic figure, were added for better visualization. Figure 24 shows the locations the hand's endpoint can reach in a 2D plane based on the motors' rotation limits.
Figure 23: Kinematics model with p0, p1, p2, and p3 representing the torso joint, shoulder joint, elbow joint, and wrist joint
Figure 24: 2D workspace
The kinematic model also includes the capability to perform inverse kinematics by using an iterative algorithm:
Input target XYZ position you want to calculate the joint angles for.
Make initial guesses of the angles.
Calculate the initial error vector: (target position - positions from initial guess).
While (norm(error) > 0.1 inches)
Calculate the current tip positions using forward kinematics.
Recalculate the error vector (target position - current position)
Move the end effector's position a small amount towards that direction
End of while loop
Display final joint angles.
(NOTE: it is important to clarify the meaning of target and current positions of the end-effector in this algorithm. Target position is the XYZ position we are trying to solve the joint angles for. Current position is the XYZ position of the position of the guesses throughout the while-loop as it gets closer and closer to the target position.)
Control Interface
The flow of data in the interface is shown in Figure 25:
Figure 25: MATLAB, Arduino, and the motors working in unison
In MATLAB, the user has 3 control settings to choose from:
Joint controller enables the user to control the angle of each individual motor. This setting has two options:
Input a target position, and the arm will automatically move there (step input)
The user may preview an animation
Motor data is returned after running the command
Gradually move with keyboard inputs
Endpoint controller enables the user to control the XYZ coordinate of the hand. This setting has two options:
Input a target position, and the arm will automatically move there (step input)
The user may preview an animation
Motor data is returned after running the command
Gradually move with keyboard inputs
Motion profile controller enables the user to import a list of motor angles vs time and run it. The steps for running this program are as follows:
Import .csv file
Preview animation of motion (optional)
Check that positions do not exceed bounds (automatic)
Adjust timescale/speed (optional)
Run motion
Move to initial position
Pause
Move through motion profile
Plot measured data vs time (automatic)
Export data as .csv (optional)
Figure 26: Motion profile controller, step 1
Figure 27: Motion profile controller, step 2
Figure 28: Motion profile controller, step 6
A motion smoothing capability has been added when the arm runs step commands. The motors' default behavior is to move in a trapezoidal profile (Figure 29); that is, the motors' velocity is shaped like a trapezoid when moving from one position to another. The sharp changes in velocity and acceleration cause the arm to jerk and vibrate.
Figure 29: Trapezoidal profile
To slow down changes in velocity and acceleration, we command the motors to move in a more gradual S-shape. We determined that a 5th-order polynomial curve (Figure 30) best reduces vibration even when the arm moves at high speed from one location to another. The results are shown in Figure 31.
Figure 30: Polynomial equation
Figure 31: Polynomial curve