Child pages
  • z_*OBSOLETE* Calculate Rigid Body Motion in Matlab

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

1. type rigidBodyMotionFromMarkers at the matlab prompt
2. select *xyzpts.csv file
3. select markercoords.csv file
4. type the number of bones in the input box
5. select the markers associated with each bone (omit any points with all NaNs)
6. save the file output.
7. To use this file in maya, you will

  • select the bones in the same order used above.
  • type impMatrix at the command prompt
  • select the file saved in step6

Note: After you run through steps 1-6 in matlab, the variables markerIdx and ct are stored in the workspace. If you need to do subsequent reconstructions, simply type rigidBodyMotionFromMarkers(markerIdx,ct) at the matlab prompt. This will elimate steps 3-5.

In Matlab:

  • Wiki Markup
    import your \[prefix\]xyzpointsBones.csv bones file
  • you will have 3 variables, colheaders, data, and textdata
  • type: plot(data)
  • click the Insert Legend button
  • pick a data column with some cyclic curves (the legend will allow you to match the column number with the color of the line)
  • type: plot(data(:,4)) %the number 4 being an example of the data column chosen)
  • There is probably still a bit of high frequency noise on the curve - we'll use a butterworth filter to smooth it out a touch more
  • use the following function: dataSmooth = tybutter(data,f,g) %f =  cutoff frequency and g = recording frequency
    • example: dataSmooth = tybutter(data(:,4),50,250)
  • type: hold on
  • type: plot(dataSmooth,'r-')
  • look at figure1. It should have a red curve showing the effect of the chosen filter cutoff against the original data
  • generally the filter cutoff ranges between 10 and 80, you just have to try several cutoff frequencies until you find the one that appears to get rid of the high frequency jitters without changing the general shape of the curve
  • Once you have a filter that you like, apply it to all of the data
  • example: dataSmooth = tybutter(data,50,250)
  • dataSmooth should have the same dimensions as data
  • Save your new data using csvWithHeaders
    • csvWithHeaders('fileName.csv', dataSmooth, colheaders)