Categories

SwARM, debugging

Hi everyone,

this week I rewrote the motion control algorithm to fix the problems we had (it turned out it was simpler than trying to debug that mess). The robot is able to follow paths but is still very unprecise. We’ll try to fix that …

Arnaud

SwARM, building robots and hunting bugs

Hi everyone,

Since last post I made with Perceval a batch of 6 robots. We still have to test them all.

I also wrote a system to get coding wheel ticks with the ADC since we had no good result with the comparators. We tested it and it seems to be working.

I wrote smaller sin, cos, acos function that allow us the save 7KB in flash (otherwise the project didn’t link). Of course we have a slightly worsened precision but it should still do the job.

We tried to help Alban and Paul debugging without success …

Arnaud

SwARM, connecting the GUI to the robots

Hi everyone,

On monday we took time to fix that H-bridge problem. It behaved very strangely at frequencies of the PWM higher than 1kHz, the motors just lost all their power. But the problem doesn’t appear if we use lock antiphase drive, so we found a workaround. The drawback is the energy consumption which is higher with this solution, but we should still have more than enough battery life.

On Tuesday I focused on debugging the radio. As a result we are now able to create a sequence of colors with the GUI, load it in a robot flash with the click of a button, start and stop the dance from the GUI.

The video is just a preview of what the system can do, I didn’t try to do something beautiful nor synchronized with the music.

I also implemented a better calibration procedure for the Decawaves (now it has an offset and a linear coefficient for each robot).

Next I’ll test the triangulation with the final setup and I’ll enlarge our fleet of robots (we have only one robot currently).

Arnaud

SwARM, finishing GUI and testing our board

Hi everyone,

since Thursday I’ve added to the GUI the ability to open a serial port to send the dances to the robots and the preview of the actual trajectories by porting Alban’s algorithm. It helped a lot the algorithm since it made debugging a lot easier. As a result we spent some time trying to fix bugs and find workarounds.

We also uncovered a very strange behaviour with our motors : one of them seemed to be very slow while the other is quick. The team jumped to the conclusion that it was because of the poor quality motors and the way we modify them to fit our needs (of course we could have spent 10 times more money on motors to have something better but one of the goals of the project is still to make the robots as cheap as possible). But on saturday we realised that even if keep the same motor and we connect it to the left motor connector then to the right, we get a clear loss of power. We have to investigate more on that topic but it is most probably not because of the motors.

Perceval also found a mistake on the USB connection on our PCBs, so I patched two of them and now the serial over USB works fine, as well as the radio (only a part of it has been tested yet), the battery level monitor, the LEDs and the code to write in flash. Additionally the beacons’ battery life seems good (I have no actual figure but I’ve been using them for hours and the beacons are still green – meaning “battery high”).

Two beacons (out of three) in their 3D printed case (with the top removed)

Next, I’ll keep testing the radio.

Arnaud

SwARM, designing a GUI to create dances

Hi everyone,

since Monday I’ve been working on a GUI to describe the dance and send it to the robots : it allow to create movements and color points and to visualize the creation in real time. Additionally it features a simulator allowing to play the dance with the actual timing and synchronised with a music.

Here is a screenshot of a simple example being simulated (the 3 coloured circles symbolise the robots with their RGB-lit balloon).

Next I’ll add the code to send the dance to the robots from the app, and I’ll debug the radio on our newly arrived PCB.

Arnaud

SwARM, downloading dances

Hi everyone,

Since last post I did three major things :

  • I wrote some code for the beacons and robots to be able to download wirelessly the dances in the robot’s flash, so that even if the master beacon or the server fails, the robots keep on dancing. I also wrote a sequencer, sending the moves and the colors to the robot at the right time (the time is synchronized with the master beacon but can switch automatically to an internal timebase if the beacon fails).
  • I created a 3D printed case for the beacons and started to 3D-print  and build them.
  • I started writing a GUI to generate the dances.

Next I’ll continue to write my GUI and do some debugging on my previous code when we finally receive our boards.

Arnaud

SwARM, integrating features

Hi everyone,

Since the beginning of the week I worked on porting and integrating different parts. After porting and merging the radio part, I ported Perceval’s LED strips driver and added a fader for smooth colour change effect (since it has to be beautiful). I’ve also written some code to monitor battery charge to avoid bad surprises during the demo.

Next I’ll modify the radio protocol to fit our new communication strategy (dances are pre-sent and saved in flash, the master beacon just gives the time in the dance to synchronise everyone).

Arnaud

SwARM, preparing project for our boards

Hi everyone,

this week I focused on getting ready for the PCB we should receive next week.

I made a new prototype including the last changes, which is almost ready to welcome the new PCB (we are just waiting for the male micromatch connectors).

I finished the board.h Perceval had begun and I prepared the project for our STM32F302R6T6 : I created the Makefiles, the ldscripts, I set up RTT for the robots and serial over USB for the beacons and I wrote drivers for the DAC, the comparators and the PWM as they was missing from chibiOS for our controller.

Next I will port my previous work and hope that we’ll receive our boards soon.

Arnaud

SwARM, entering production phase

Hi everyone,

On Tuesday I wasn’t feeling like doing anything with my brain so I started modifying the motors to include the coding wheel and adapt the gear train. We have 38 motors to modify so it takes a while. I also printed the parts to build a new prototype as the design was modified to include a secondary board holding the decawave module.

We received the secondary board PCBs last week so I soldered 4 of them and I tested the locating system with this near final setup.

I also worked on preparing the orders of all the parts we need for production.

Next I’ll complete the new prototype so that it’s ready for our main PCB we should receive next Monday, and I’ll port my code for the STM32F302.

Arnaud

SwARM, doing maths for smooth motion

Hi everyone,

This friday I worked with my partners and the teachers to design an algorithm allowing robots to move from one position to another. We wanted to have something better than just turning and moving in a straight line, as robots motion has to be smooth to create a beautiful dance. The robots will move from one point to another in circular arcs, and I did the maths, so that Paul could implement the system.

I made an easy to use calibration system but it doesn’t seem to fix the problem so I’ll have to keep working on that.

We received the secondary PCB (holding only the decawave modules), so I will be able to test them next week.

Arnaud