[StabiloRose] return ESUCCESS; !

This was an eventful journey !

After debugging on a non-functional strip (the soldering had ruptured, so we couldn’t display anything), and displaying well-corrected …black images, we now have a thing !

[StabiloRose] Keep measuring and implementing

So today I remade a little part of my yesterday measurements (what was quite quick since i just focused at the at the most non aligned points that we could see at the plot). I soldered another connector for one of our half spheres and traduced the maths of the article we are using to represent the spherical points into functions. Probably we are going to use them very soon when making figure rotations.

That’s it for today.

[StabiloRose] First images and animations

Today, we finally mapped our first images and animation and the result is great. The first images were a bit distorted because of the start frames of the SPI, they included a gap which was visible near to the poles. For the moments, the images and animation are generated “inside” the ball. The next step is to download them from a server.

sr rainbow

[StabiloRose] Spherical image


my last post was about wifi interrupt. We decided to change the way to communicate with our ball : we now communicate using a http server on the wifi device. Actually it represents a lot of change since the beginning of the wifi, it reminds me that Alexis told us : sometimes you need to go back (in your code) very very far.

So I worked on the led and the picture (happy to work on something else than wifi). We use the image format found by clestrelin (see the corresponding post) : we consider our sphere as an icosahedron. This format is very similar to a sphere but much easier to use. I implemented a structure image and functions to read it and display it.

Yesterday I was very glad to see that my functions worked very well on simulation (thanks to Natolumin for simulator), almost on the first try. To try it on our ball, we needed to measure spherical coordinates of each led, one by one (364 leds) : I took part in measurement of a half sphere with ArturSarlo. Our results are a few less accurate that measurement of Natolumin and clestrelin (see video below) but it works good enough.

Today I have to make the first try of displaying a spherical picture on real ball (we finished the calibration too late yesterday for us to try something) : it was an honor, and especially since it works like the simulation (at least about mathematical algorithms). The picture I used is too much simple for me to show it here (It is a very simple picture I implemented for tests, but ArturSarlo and Clestrelin have implemented beautiful pictures and animations, coming soon on the blog).

We want to be able to display a picture which is stable despite the rotation of balls. We currently use spherical coordinates to describe our leds. However we realize that is not easy to perform a rotation with spherical coordinates. Actually we don’t know how to do it without making a conversion to cartesian coordinates. It will add a lot of computing time to keep a picture stable. To keep this time at the minimum we stay with cartesian coordinates all the time : we can perform a rotation directly on them, and we convert thoses coordinates into spherical coordinates when we want to read a picture. I implemented some mathematical functions to do it. We are able to get the  quaternion of the orientation of IMU, so we just have to link the quaternion, those functions and our display algorithm and it should work. We hope the frame rate will be not too bad…

solder and wifi

Hi everyone !

I haven’t posted in a long time (yeah, I know), but I’ll try to make up for it by depicting what I did since then.

This week-end, after finding the north with the Bosch sensor, it was all about crafting the ball ! Clement and I started to solder the LEDs ribbons on the surface of the shell. Unfortunately, we weren’t very good at it and it took us far too much time for a little progress. The other Clement and Artur turned out to be way better at this. They crafted the ball at the beginning of the week as I took the matter of Wi-Fi in hand.

The goal was to be able to notify the ball but let it perform other network operations at the same time. I wanted to make a TCP server and generate an interruption on a GPIO for the program to be notified. It would then scan the active connections looking for data to be read, parse it, and decide what to do with it.

And yes, this approach winded up as a real nightmare ! Fortunately, I got tipped by Sam and did something much simpler: the program opens a websocket on a server, and waits for a message. Those have a command on the first line and some data on the second one. What I did for the LEDs is that the data is a URL where a binary image awaits to be downloaded and loaded on the LED SPI bus. Well, it works way better like that ! So I started with a Django server, but this framework is a bit too high-level to do Comet. I switched to Node.js, fooled myself trying to use socket.io on a JS-uncapable chip, and finally made it with this cool library. I now can listen to the server, get the URL, download the image, and display it on the ball !

So now I’ll probably make a tiny UI to ease testing. 🙂

[StabiloRose] Measures and simulation

Since last time, I spent some time modifying the simulator we used to view the location with the IMU, so that it can display our LEDs at their final position. You have probably seen the pictures.

I also helped with the measurements on the sphere, to locate every LED, and added quaternion support to the IMU code (we used euler angles before).

[StabiloRose] Printing, measuring and back to coding

After almost two days of manual work i started my day analyzing the code of other team members that were working in parallel to me and Clement. After that, I started making some test frames to export into our sphere. I printed the last physical parts of the project that were remaining and now we just finished measuring the position of all our leds to really represent them all in a simulator.

That’s it for today. (The photos are down here. Clement posted plenty of them)

[StabiloRose] Calibration first step OK

With Anatole we calibrated the first hemisphere of our ball, i.e. getting the spherical coordinates of each of the 182 LEDs, according to their position on the strip. We entered the data into our little homemade simulator and run the same test that was done yesterday. We turned on each LED, one after the other in the order of the strip.

The simulation and the experiment give the same pattern \o/ So far, so good.

Artur and Clément are currently calibrating the other part.

SR simu gif

[StabiloRose] Building tools

Like the prehistoric man, the rose student builds tools to adapt to his environment.

Sr tool1

Sr tool2

Sr tool3Sr tool4


[StabiloRose] 3D printing is so magic

It fits perfectly 🙂

StabieloRose 3D printing