Hexapod on a Budget – Part 3: Movement Algorithm Prototyping with Pololu Maestro Control Center


In part 2, I talked about the electronics layout for the hexapod. Now it’s time to make it move.

Continue reading


SmithLink, advanced telemetry from Smith Electric Vehicles – YouTube

A project I contributed to while I was at Smith Electric Vehicles working on the embedded software for the vehicles’ on-board telematics devices:

SmithLink, advanced telemetry from Smith Electric Vehicles – YouTube.

Hexapod on a Budget – Part 1: The Chassis


Back in January, I wanted to kick off a new robotics project, and began looking at multipedal robot kits. I’ve found walking robots fascinating for a while now, and have been closely following the work of companies like Boston Dynamics in their search to mimic natural movement through machines. Continue reading

Cloud Robotics Hackathon 2013: Video, Results and Thanks

So the results of the hackathon were released yesterday, and I must say, we’re very happy with how things turned out. We were placed 4th against some very tough competition, and were given an honourable mention by the organisers:

Before naming the three winners, we would like to give a give a honourable mention toteam Telemetron. They created an outstanding robotic behaviour and actively participated and documented their project throughout the week. They were also very active on Twitter. As a result they submitted by far the best documentation. – Cloud Robotics Hackathon 2013 Continue reading

Cloud Robotics Hackathon 2013: Done!

So today is the day of the deadline and everything has actually come together quite nicely.

@tobypinder and I have been working on this separately since friday, using only the Internet to communicate (in the spirit of the Hackathon and all that). He did a great job with the web front end allowing us to carry out a test run with the robot transmitting live data this afternoon. There were a few hiccups with turn angles and things, but once they were ironed out, the results relatively good! Continue reading

Cloud Robotics Hackathon: Friday Update

What? There’s only 24 hours in a day now?

So my original aim to post daily updates hasn’t quite worked out. Myself and @tobypinder have been fitting this project in around ‘real’ work, so every spare minute has been spent working on the robot, not leaving much time to actually write about it! Continue reading

Cloud Robotics Hackathon: Day 2

Today, in short, I made the robot work as a roamer. I’ve been chasing bugs all day, but finally got it working (almost) exactly how I want it. The video below shows how it was this afternoon, I’ve since tweaked some parameters and ironed out some bugs in the CAN transmission side of things so it now doesn’t get confused when it enters a wide open space with all the sensors reading maximum range. Continue reading

Further task scheduling with Arduino / AVR

** EDIT 27/04/2016: I have now created a ‘user-friendly’ library compatible with the Arduino IDE **

** EDIT: I have now added the code for this to a git repo here. **


My previous post on this topic showed a simple time triggered task scheduler for the Arduino / AVR microcontroller platforms. Although this worked very well, there were some areas which could be improved in the way the scheduler worked. To recap, the previous scheduler worked as follows:

How it worked:

  • The program sits in an empty loop when idle.
  • “Ticks” are generated by the timer driven interrupt.
  • Tasks have a period and an offset:
    • Period – How often the task is executed
    • Offset – The first tick in which the task is executed
  • The period and offset of the tasks are adjusted manually to spread the tasks out, ensuring that tasks don’t collide.
  • The ISR iterates through each task in the schedule and executes any task that is ready to run.
  • Doing this ensures that tasks are executed with precise timing (as precise as the ATMEGA timer allows). Continue reading

Reliable task scheduling with Arduino / AVR

** EDIT 27/04/2016: I have now created a ‘user-friendly’ library compatible with the Arduino IDE **

***Please note: This article is now for background information only. The code in this article has been revised, and can be found here. ***


There comes a point, when writing embedded software, where you need to time the execution of tasks more precisely than just having a list of functions in a loop. In order to make a system as predictable, and therefore reliable, as possible it is desirable to use a time-triggered scheduler. If you are unfamiliar with this concept, I recommend you have a scan of Dr Michael J Pont’s Patterns for Time Triggered Embedded Systems, and watch some of his lectures.

The idea is to use a small-scale operating system that runs on a microcontroller, using timer interrupts to execute tasks with microsecond precision. This isn’t a new idea; the aerospace industry have been using this approach for years to stop their aircrafts from making ‘premature landings’, but it’s rare to find it implementated on hobby-centric platforms such as Arduino. So I thought I’d have a go at writing my own. Continue reading