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:
- All radio equipment must comply with appropriate International regulations
- It is up to competitors to decide on their lighting setup and is their responsibility to ensure that their boat meets any legal requirements for lighting in all countries which the boat might visit. Based on informal advice from the Irish and US coastguard we suggest that either a single white light or tricolour red/white/green light should be used. This should be visible from all directions at a distance of at least 2 nautical miles.
- Boats must take appropriate precautions to avoid collisions and comply with COLREGs
- The boat owner is liable for any damage caused to their boat or by their boat.
- The organisers take no responsibility for any damage caused.
- Tracking and transmissions
- During the race, competitors may not transmit software updates, new waypoints or remotely control the boat.
- Entry Criteria
- The boat must be energetically autonomous, carrying on board any required batteries and electricity generating equipment.
- Due to the nature of the environment the boat shall be in, it will have to comply with strict regulations and the use of some fairly advanced systems, like RADAR.
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.
"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.