We are getting closer everyday to our goal, Ball-E manages sometimes to keep its balance for a bit more than a second.
Yesterday, we realized that the plastic between the wheels on the omni-wheels made a huge friction on the ball, preventing him from moving easily. Therefore, we used a soldering iron to melt the plastic and then a dremel to sand it and it is now working much better. We are now having a hard time choosing the coefficient of our PID algorithm. I hope you will be able to see videos of Ball-E standing by its own means soon !
Number of position for 1 turn :
e : distance between two LED
r : radius
a : angle
We want d = e
r = e * number_led and d/r = sin(e). So d ~ r*a => d = e * number_led * a.
But a = 2 * Pi /number_of_positions => number_of_positions = 2*Pi*number_led
In this calculations, number_led is 64*2 because led are staggered.
=> 830 positions
Timing for RAM:
An image is 256*256*3 = 192 kByte
We have to write 1 image in (1/16) second = 62.5 ms => 3MByte/s
We have to read 1 new position each (1/(16*830)) = 75 µs. => 39MByte/s
Memory needs to store radius pre calculation:
830*128*(8+2)*2 = 2,6 MBits
But, we can use symmetry to store this data so, 1,3 MBits is needed.
RAM we want to use is the following : http://www.digikey.fr/product-detail/fr/CY7C1357C-133AXC/428-2123-ND/1205775 but, we want to write only 8 bits and not 16 so, we can use half the memory. The memory is considered as 4 MB.We have 2 RAM : so can store on each RAm (at the end) the pre calculations.