Graceless tinkering


Tear it apart. Make it better. Fail!

Flexybot

My wife, my sister-in-law and my sister-in-law's boyfirend gave me this Flexybot as a present last month. Since I'm still postponing writing about my most ambitious project to date, I'll take a shot at writing a small review.

The Review

I must say I'm not very pasionate or knowledgeable about robots, but I got hooked pretty fast!

The assembly went pretty fast, as I kinda followed the steps detailed here (link in Romanian). There are a few things to mention though. First of all, there IS some assembly required! Not all mounting holes are drilled.

I also considered the two mounding spacers for the Arduino insufficient. I later realised that the kit comes with two additional screws that can be used as spacers.

The most annoying thing about this kit is that there is no obvious way to mount the battery pack. The easy way would be to use some zip ties in order to fasten the batteries to the chasis, but I prefer easy acces to the battery pack in order to quickly swap out the batteries. In its defence, the kit is highly customisable and even works with LiPo batteries, so maybe that is why there are no mounting holes for the battery.

Overall this was a short and exciting build, perfect for a first robotics project.

The Software

The assembly tutorial came with a small piece of code for the Arduino. The robot is controllable over Bluetooth using a free Android application.

I decided on rewriting the Arduino code since it was kinda messy. First thing I noted is that the code is a slightly modified version on this forum post, where the Android application author gives an usage example. My modifications to his code are mainly refactorisations since I didn't want to break the communication protocol.

The second thing I addressed was the fact that the flexybot had only four possible movements (forward, backward, spin left and spin right). The controls felt awkward since I was using a joystick for discrete motion. To make matters worse there were certain joystick positions where the robot wouldn't move at all; meaning that sliding the joystick from "forward" to "spin left" would make it stop between the two actions. My solution was to take the joystick position, convert into polar coordinates and use lookup tables for angle and distance in order to set the wheel speed.

You can find my modification to the flexibot code on github.

And now...

I plan on tweaking small aspects of this robots hardware and software, so stay tuned!