Last week, while Pierre was working on the routing of the PCB, I’ve been working on software. What I’ve done is basically a function to get a file on the SD card, and a function that reads and interprets the file as an ILDA file. This is the first brick of our chain of programs, and the data will then be processed by the main program to send the appropriate commands to the galvanometers and the laser.
Informations on this post are taken from ILDA official website.
The ILDA format is intended for frame exchange purposes only. It is not optimized for space or speed, and it is not currently concerned with display issues such as point output rate. Also, the format does not include show information such as timing of frames. Generally, the highest function the ILDA format can provide is a sequence of frames which play back to form an animation.
The ILDA File can provide a 3D or 2D structure, and provide color with Indexed color in a table or True colors on 24 bytes. In order to best estimate the required useful bit-rate, we analyse the most disadvantageous case : format 4 with 3D points and “True Color”. All these numbers are for one frame and N points per frame :
- a header of 32 bytes
- N data records of 10 bytes :
- 2 bytes for X coordinate
- 2 bytes for Y coordinate
- 2 bytes for Z coordinate
- 1 bytes for status code
- 3 bytes for “True Color” ( 1 bytes red, 1 bytes green, 1 bytes blue )
With frame_rate in fps, N in points per frame and k in pps :
- N = k / frame_rate
- bit_rate_per_frame = 32 + 10*N
- bit_rate = bit_rate_per_frame * frame_rate
For our project, we can assume that the frame rate will not exceed 60fps (and generally 25fps) and the number of points will not exceed 30Kpps (the commercial galvanometers can’t go faster). So, the bit-rate of an ILDA animation will not exceed 300KB/s.