Interactive web site of Télécom ParisTech's ELECINF344/ELECINF381 Robotics and Embedded Systems classes (a.k.a. ROSE, 2012 session).


RoseAce final website.

The project has ended for some months now and RoseAce team is proud to present its website, and this video of the final project.


Sylvain Ract

RoseAce displays a picture from the ram.

After a long debugging phase of our external RAM where we encountered many issues from the simple bad solder to timing issues we finally manage to deal with it.

For the moment we still have only one RAM which has five unavailable pins. So we can store only a eighth of on image but it allows us already to display symmetric pictures like this RoseAce!

You may notice that as we expected the center of the picture is much brighter. So we will have to change the parameters of our LEDs in order to be homogeneous.


Sylvain Ract

Tutobot – Driving with encoders


Today we focused in the encoders. The module to correct the speed of the motors is done but it is not using directly the encoders yet, we tested it with a fake function to simulate the real velocity that is going to be calculated from the encoders.

The module which calculates the real velocity from the encoders is not 100% yet, but almost. Tomorrow we are going to complete this module and link it with the corrector module.

We fixed FreeRTOS too, as it was not running in flash memory, seems that the first position of flash (where the stack pointer should be) is protected as we couldn’t write on it, we still need to investigate why. Now we are able to turn on Tutobot and the program runs automatically.

The OLED is not working yet, we verified the pin assignments in the FPGA (in Libero) and it seems ok, the code seems ok too, we are still investigating.

While measuring some pins with the oscilloscope, we got once the same curve that we got yesterday while trying to measuring the line sensors, so we concluded we never captured a signal from them. Today we notice that in Libero they are not configured as inout pins, and for some reason we can not change this parameter, this still needs to be investigated.

Helen Fornazier

Let there be light, sound and color !

BEDinROSES (Ball-E Dead in ROSE Session)

Date and hour of birth: Monday 30th , 7 a.m. Since Sunday night we have been brainstorming for possible projects. Alexis and Sam adviced us to use Maestro’s modules. Some great ideas came up on Monday and we chose to work on three of them until Friday morning.

Monday the modules were able  to play music stored on their microSDs. Yesterday we worked on Zigbee communication by frame based  API and we synchronized the modules. Today we are working on Friday’s defense.

Otilia Anton

SaMoRa, bus CAN runs after some problems.


Today, we had a hard day.and many problems to communicate on the CAN bus.

  • First problem, the configuration of CAN bus. There are many timing configurations. Particularly for the synchronisation of each node on a frame. So we decided to use the nmra standard at 125 Kbits/s. It’s relatively slow but we had many difficulties to go faster.
  • Then, we tested the bootloader to send many frames and we were able to flash the first boards but the others were too far on the bus and they didn’t receive any frame. During the afternoon, we realized that last boards were not enough electrically supplied. Indeed, at the end of the bus we had only 2.4V. Therefore, we increased the voltage supply and we were able to flash all the boards with the bootloader.
  • After that, we fixed some bugs in the lights, sensors and bootloader’s firmware. Now, we can flash the firmware of each board with the bootloader by the CAN bus and we can control the lights and listen to sensors through the bus.
  • To finish, we rewired the CAN bus and we put the railroad on the table.


just some pictures of ligths for fun ;)

Tomorrow, we will work on the station and we will probably test the controller.


SaMoRa’s team

Roseace is finally turning

After all these painful hours of  electronics debug we finally performed a real breakthrough :)

We succeed to get our position with the encoder wheel and display some leds depending of this position.


Edit : Thanks  to the dead body of Ball-E that we have looted we have a functional motor. Coupled to our encoder whell we can display a static image on our rotating leds.


Tutobot: remote control

Today we solved our Zigbee problem, it was really silly: we were not waiting enough time before and after entering the Zigbee’s command mode. We had a loop to do this waiting that worked fine, but since we programmed the System Boot with a clock twice as fast as before, the loop was not long enough anymore.

Since we had both motors and zigbee working well, Helen wrote a basic program to control the motors with the keyboard, sending directions through Zigbee.

Gabriel is working on driving our OLED screen. He wrote a program following the example in the datasheet but it did not work. It is difficult to debug  because the bug can be either in software or in the pin assignment done in the Libero project (FPGA). We will re-check the pin assignment tomorrow. He also started working on a way to make it simpler to write the .dat file (the image to program the FPGA and the System Boot).

I wrote some code to use the encoders, and set the Libero project to set flags for the corresponding ADCs, so an interrupt would be generated when the measure in the ADC overcomes a certain threshold. For some reason I have not figured out yet, the interrupt routine is never called. For now I will leave the interrupt approach, and create a FreeRTOS task  to monitor the ADC samples.


Ball-E’s last hours

Time of death: Sunday, 30th April, 4 a.m. After our first real experiments on BallE, one of the transistors from the H bridges controlling the motors burnt on Sunday at 1 a.m. We aren’t sure about the cause underlying this incident: at that time we were varying the acceleration. While stopping the motors, in order to stop them faster we forced the current to 0. This induced a high voltage in the circuit: one transistor burnt and then we weren’t sure the others hadn’t been damaged in the process. Once we figured out what happened, we tried to replace the transistor. As the components on the card were really crowded given the surface (and didn’t satisfy the theoretical constraint of having enough space for the H bridges to cool down) it was hard to extract the transistor and re-solder a new one. We didn’t have the exact replacement so Samuel and Alexis tried to improvise with the transistors we had in stock. The replacement didn’t succeed and at 3 a.m. we had the choice between:

a) redoing the whole mechanics and design for a 2-wheel ballbot

b) picking up another project for the following 4 days until the defense

By choosing option A, we couldn’t guarantee that what happened for one H bridge wouldn’t happen for the others… we barely started our tests with BallE in the final form. BallE wasn’t stable and we needed time to calibrate and perform a broader range of tests. None of us wanted to give up working on BallE. However, we had absolutely no guarantee that we will have succeeded in keeping Ball-E stable for this Friday. We all enjoyed working on this project and we were very emotional about our choice… However, the risk of not having anything stable for our defense was very likely even if we kept working hard on Ball-E.

After a Sunday night full of nightmares, we spent the day thinking of replacement projects that were doable with the hardware we have for ROSE.

The following post will be dedicated to explaining our options and choices. Now, let’s keep a moment of silence for Ball-E…

Otilia Anton

Tutobot – Motors and Sensors


Today we worked on the peripherals of our robot.

We debuged the motors and now they are working fine.

The encoders are returning values with good resolution, tomorrow we will work to assemble a control with motors+encoders.

The pins of the line sensors seems not responding really good, we tried to capture the signal with a logic analyzer and an oscilloscope. We could measure the response with the oscilloscope, but only once =/, using the same program and same osciloscope.

The proximity sensors are not giving us good resolution between closer objects and farther ones.

Leds with pwm are working really well, we can choose in a register to use the pwm mode or not.

Zigbee is still not working after we programmed the SysBoot with DirectC.


Tutobot’s team

Helen Fornazier

A snake on a RoseAce.

This video is a little Snake implemented on our device.

To do that, we have stored ten different ranges of pixels in a RAM. (This RAM is a virtual RAM implemented in the FPGA)

Then we displayed alternatively these ranges by reading new addresses in RAM each 0,1s.

Now there are two new step to make; replace the virtual RAM by the real RAM soldered on our PCB and making the pale turn and alternate these ranges no more each period but each position of the blade thanks to the coding wheel.

Sylvain Ract