borntoleave / catMini

This is the course repository for catMini.
51 stars 39 forks source link

Look up table data format #8

Open correderadiego opened 6 years ago

correderadiego commented 6 years ago

I am working on the servo controller right know and I need to comment some points. We start from the modes.h. In this file you store the position of each servo for every moment. This work as a look up table. I add one example for bd :const char bd[] PROGMEM = { 19, 93, 93, 63, 63,-36,-36, 7, 7, 83, 83, 49, 49,-41,-41, 14, 14, 73, 73, 36, 36,-41,-41, 22, 22, 63, 63, 34, 34,-36,-36, 19, 19, 52, 52, 36, 36,-28,-28, 9, 9, 45, 45, 40, 40,-19,-19, -1, -1, 41, 41, 47, 47,-11,-11,-12,-12, 41, 41, 55, 55, -4, -4,-21,-21, 47, 47, 63, 63, -1, -1,-28,-28, 54, 54, 78, 78, 4, 4,-34,-34, 57, 57, 99, 99, 15, 15,-39,-39, 56, 56,106,106, 27, 27,-36,-36, 61, 61,107,107, 26, 26,-30,-30, 69, 69,104,104, 18, 18,-21,-21, 78, 78, 99, 99, 7, 7,-11,-11, 87, 87, 91, 91, -3, -3, -2, -2, 93, 93, 83, 83,-14,-14, 4, 4, 96, 96, 78, 78,-23,-23, 5, 5, 94, 94, 66, 66,-33,-33, 6, 6, '\0'}; In this point I have one questions :

borntoleave commented 6 years ago

The table stores angle data in degrees. The range is between -128~127, same as the range of one byte. Zero angle position is defined at the calibration stage. I’m skipping 0 degree because the data is stored as character string, and '0' will be mistaken as ‘\0’ when read by the pgm_read_word() function.

The table is a 2D array stored in 1D manner. The vertical dimension indicates time. The first number is the number of rows(frames). For the mini version, it doesn’t have head, tail or shoulder(roll) servos, which would take up the first 8 columns (indexed 0~7) on the full version. The first column is the left front shoulder (pitch) servo, indexed from 8. https://github.com/borntoleave/catMini/raw/master/Images/assembled.png

For each row after the first number, it represents one static frame of the limb joint angles. Imagine the cat a a movie player. Static frames create movements when looped from top row to bottom row, and repeat as cycles.