Here is the README located in the blend file that will inform any person who decides to continue this work -----------------------------------

Author: Kane Hadley Date: August 29, 2011 File: shaker.blend

This is a readme outlining the design behind this simulation. The shaker program was created to mimic Steve Berard's shaker plate code in dvc3 by using Binh Nguyen's dVC3D timestepper code. There are two relevant scripts: partd and twod.

++++++++++twod: script that defines the behavior of the shaking plate.++++++++++++++++

The script twod is implemented to copy the motion of Steve's shaker plate which is position controlled to generate the same or similar motion. The paper defines the X and Y coordinates and the angled orientation, theta, of the plate to be:

theta = alpha * sin(omega * t) X = yOffset * cos(theta + pi/2) Y = yOffset * sin(theta + pi/2) - yOffset

t is the current time, and alpha and omega are two constants. I have not found a way to easily and consistently control the time for timestep calculations so I have thrown in a placeholder variable called own["time"] that all computations are based on for the total time that has passed for the simulation. It is increased by the designated timestep for each calculation.

Two more values, the X velocity and the Y velocity, are being calculated to try and fill in the delta psi / delta time for the dynamics equation, but it is not apparent whether this is effective or not and is implemented experimentally. Their equations are:

X_vel = -yOffset * cos(alpha * sin(omega * t)) * alpha * cos(omega * t) * omega Y_vel = -yOffset * sin(alpha * sin(omega * t)) * alpha * cos(omega * t) * omega

For our simulation the Y axis serves as the X axis used in the equations and the Z axis in our simulation serves as the Y axis in the equations.

++++++++++partd: script that defines the behavior of the moving part body.+++++++++++++

The script partd is designed to help the part behave the same as in Steve Berard's 2D shaker plate program. Unfortunately the beta version of Blender that dVC3D is implemented in does not allow locking the rotation of a body, but it does allow locking the translation of a body. As such the entirety of this script is to ensure that the part behaves in a 2D manner and does not rotate about either the Y or Z axis since it should only rotate about the X axis (the axis coming out and going into the screen), and does not let the part slide in the X direction due to rotations. As long as the time step is 0.01 or smaller it has been assumed (an assumption I make with no justification) that the part will make relatively small adjustments that need to be dampened. As such if the part attempts to rotate around an unrotatable axis it is nudged back into place. The same is true if it attempts to translate in the X direction into or out of the screen.

As in the script twod a variable (own["time"]) is used to keep track of the simulation speed and ensures the part is updated at the same time the plate is.

+++++++++++++++++++++++++ Additional Information ++++++++++++++++++++++++++++++++++++++

The code that these scripts are based off of can be found on the svn repository in the directory:

/var/svn/repo/dvc/trunk/dvc-2d/examples/shaker

in the file "PlatePositionController.h".

The equations being used can be found in the paper "Sources of Error in a Simulation of Rigid Parts on a Vibrating Rigid Plate" Technical Report 08-10 on the robotics wiki:

http://www.cs.rpi.edu/twiki/pub/RoboticsWeb/LabPublications/BNATtr08.pdf

-- KaneHadley - 2011-08-30

Topic attachments
I Attachment Action Size Date Who Comment
elseblend shaker.blend manage 477.9 K 2011-08-30 - 19:21 KaneHadley dVC3D version of Steve Berard's 2D Shaker Plate application
Topic revision: r1 - 2011-08-30 - 19:21:52 - KaneHadley
 
Copyright © 1824-2009 Rensselaer Polytechnic Institute (RPI)
110 Eighth Street, Troy, NY USA 12180 (518) 276-8326