# (unedited) FreeMoCap Tutorial Notes
:::info
NOTE:
You probably got here from this Twitter post- https://twitter.com/freemocap/status/1586360209475264513 - hello :D
These are the notes we made before the tutorial - NOT a script or post-hoc doc. Most of the topics below will be covered, but no promises on anything resembling any correspondance between these notes and the final product.
Feel free to leave comments (but no promises that I'll reply lol) đ
:::
### INTRODUCTION
*
### 1. WORKFLOW
* calibration workflow (for now) - record calibration videos with pre-alpha and process them with `alpha` to generate `camera_calibration.toml` -> point `alpha` towards that `toml`
* we're on the `jon/process_data` branch
* the alpha can't handle many cameas but we're working on it
* will need to add a feature to only process a section of a recording, but we'll get to that
### 2. CAMERA SETUP
* How to select cameras
* cameras - good view points
* exposure settings
* landscape vs portrait mode
* ââdon't use hubs unless you have to, in which case minimize cameras per hub
* usb extension cables
* why skeleton solvers like humans to be upright in their images
* define - FOV
* define - capture volume
* point cameras to get lots of overlapping FOV
* that's your 'capture volume'
### 3. CALIBRATION
* âMeasure something you know the answer to, which helps you trust the measurements you didnât know the answer toâ
* Weâre using `anipose` which is great
* Weâre re-factoring from the code to build off those methods soon
*
* How the **charuco board** works, how to print it, does the size matter, how to get the 'scale' right
* Known object with known geometry, designed to be tracked accurately
* necessary to calibrate the âunknownâs of the camera/human system
* `charuco` vs raw checkerboard
* Aruco markers good
* Gotta use one of our definitions
* âPre-alphaâ version with 5x7 squares
* `alpha` version with 3x5 squares
* Bigger squares, easier to see from far away
* Or you can change the code yourself, I guess
* Board size -
* Bigger means it can be viewed from farther away
* But you can print on a small, regular printer
* it will just limit how big of a capture volume you can calibrate
* Gotta set the âscaleâ of the recording by measuring one of the edges of the black squares in `mm`
* That will will make the units come out as `mm`
* If you set it to `1` - units will come back in âcharuco square lengthsâ
* Default is size of square when printed on 8.5x11â paper
* If you are using a big board and your skelly comes back looking smol, you prob forgot to scale it
* So just re-process with the `charuco_square_size` set properly
*
* not all cameras need to see the board at all times - but each camera needs shared views with at least one other
* calibration should handle intrinsics (lens distortion) *and* extrinsics (6 degree of freedom (DOF) camera position, aka XYZ location and XYZ rotation)
* Calibration procedure - Think of 'painting' each cameras' FOV with the board
* ..I don't super trust the 'intrinsics' correction part at the moment - but less of an issue if you stay in the center of the FOV of each cameras
* recording synchronized vids with pre-alpha, then importing them to alpha for processing
* don't need to re-calibrate if the cameras don't move (like *at all* - even a few `mm` will cause issues)
### 4. RECORDING
* a plain colored back drop will improve capture quality (but not necessary)
* make a plan with your subject on what they are going to do
* keep it in the capture volume, fast movements require lower exposure which requires more light
* better to keep your recordings short, especially for early attempts
* give it a good A-pose with palms facing forward
* for sound sync, we currently use a hand-clapperboard and screen record with OBS
### 5. POST-PROCESSING
* Determine quality of recording
* Spot checks
* Timestamps
---
### Order above, Chaos below
* Calibration
* Check that the dottos are seen
* In pre-alpha - `setup` view
* `alpha` - normal view
* `alpha` can handle ânewâ board (i think), but wonât display properly?
*