I finally got around to making this blog. Being particularly good at procrastination and jumping from project to project, I managed to avoid creating it. The hope is this will be a record of my experiences as I explore and learn about embedded systems or it might just be a memorial to my inability to focus and dedicate myself to a side project.

It is probably obvious, part of this blog will be dedicated to the lessons I'll learn about C/C++. There might be some articles about Python and Swift as I plan on building some tools to help me learn and improve my understanding of some problems I'll bump into.

I am also going to be reading through MISRA and JSF++, in the world of safety critical systems, coding standards such as these are used to help ensure safer code. If you follow along with this blog, feel free to skip these I won't mind!

The Microtransat Challenge

"The Microtransat Challenge is a transatlantic race of fully autonomous sailing boats. The race aims to stimulate the development of autonomous sailing boats through friendly competition." - microtransat

For me, having a goal to achieve is a great way to stay determined. Because of this, I have decided to set the impossibly hard challenge of competing in the Mircotransat challenge. The best goals are difficult, they take time, dedication and involve lots of obstacles to overcome. The Microtransat Challenge is going to be my difficult challenge (especially since, no one has succeeded it yet - microstransat history)

The following are some of the interesting requirements:

Collisions are obviously the main issue that we want to avoid, due to the liability involved. These rules cover a large enough spread of issues to address. Each part of the boat design from the software to the hardware, have difficult constraints in the environment.

Introducing TinyROS

"Robot Operating System (ROS) is a collection of software frameworks for robot software development, (see also Robotics middleware) providing operating system-like functionality on a heterogeneous computer cluster. ROS provides standard operating system services such as hardware abstraction, low-level device control, implementation of commonly used functionality, message-passing between processes, and package management."

ROS is an incredibly powerful suite of tools for making robotic systems. Unfortunately, it is a very large collection and doesn't easily support the Raspberry Pi. As an autonomous boat will require a reasonably complex and conformant system to control it, I have decided to write my own smaller version of ROS.

TinyROS will be a slimmed down version of ROS. It will provide the core message passing service, message playback, remote procedure call and parameter service. This will all be design initially to work with the Raspberry Pi model B. TinyROS/TinyROS


My entry, if permitted will be a fully submersible autonomous boat. The ship will be 2 metres or less (to stay within the rules), solar powered with twin motors for propulsion. It will have redundant systems in case of damage or failure and will use computer vision with marine traffic data to detect oncoming ships and other obstacles. A lot of tech and challenges packed into a reasonably small package.