Saturday, 14 January 2017

C3Pi regenerates!

My old friend C3Pi, like Doctor Who, regenerates from time to time.

He started life as Trackbot - a tracked robot, powered by an Arduino Nano, with fairly limited capabilities.

Some years later he acquired a Raspberry Pi, and replaced the Nano by a Teensy 3.1.

C3Pi has proved a good subject for experiments, as did the Dyabots - the mobile robots built by Dyalog to experiment with APL as a control language for robotics. But...

The C3Pi and Dyabot designs had their limitations, and it's time to apply the lessons learned.

Issues with C3Pi and Dyabot

Several factors have stopped me achieving all I want to with the old version of C3Pi.
  • I found it awkward to recharge or replace C3Pi's batteries.
  • C3Pi’s limited room made it hard to add new capabilities.
  • The Pi was a veteran model 2 B+; C3Pi would benefit from the processing power of the Pi 3.
  • I found the Teensy disconnect-compile-upload-reconnect-test cycle frustratingly slow.
  • The motor controller was a cheap clone and it's hard to find an identical model on eBay.
  • C3Pi's base is no longer manufactured, so others couldn't replicate the design.

Dyabot uses a readily available robot base and motors, but
  • The Teensy development cycle causes the same problems
  • The IMU is not accurate enough to keep track of the robot's position

C3Pi regenerated

The next incarnation of C3Pi (and Dyabot) will use a Dagu Rover 5 robot base and motor controller. The base has quadrature encoders which keep track of the wheel's rotation, the motors are much more powerful, and there's a motor controller that's made by the manufacturer of the base. C3Pi will still need an IMU to keep track of the direction in which it’s pointing. I’m about to try Adafruit’s BNO055.

The base, the controller and the IMU are readily available, so you'll be able to replicate our experiments if you want to.

I'm currently evaluating two other changes: a possible replacement for the Teensy, and the use of a language with a REPL (Read/Evaluate/Print Loop) to program it.

The ability to type some code and run it immediately without having to compile and upload should speed development up a lot.

More information soon!

What do you think?

What do you think about the  new approach? I'd love to see your comments.