ROS vs custom software for an autonomous vessel

asked 2017-08-21 09:25:39 -0500

Anelito gravatar image

Dear all, as part of an internship I was asked to design and develop the core control system for an autonomous small-scale (2m length) solar vessel to be able to sail around the Baltic Sea.

The boat should be able to sail following predefined waypoints but, thanks to AIS, Camera (collision avoidance) and a path planning algorithm, redefine its route according to the obstacles sensed. For the hardware part it runs a Raspberry Pi with the high level navigation system and an Arduino to control propeller and actuators as well as provide basic navigation functions in case of Raspberry failure.

Now, before digging into coding I checked for existing solutions and found out the ROS (Robot OS) middleware, which comes with interesting abstractions for the multi-threading and multi-processing, message exchange locally and among diverse hardware architectures (Raspberry and Arduino in this case). However, I am concerned ROS would add considerable load on the Raspberry processor and increase power consumption and it would prevent fine-grained control over hardware, probably system instability too on the long run. The control software has to access sleep functions on sensors and on the Pi itself, in case of power shortages, to dynamically suspend and restart processes and it needs to run 24/7 for months without human interaction.

Is ROS suited for these tasks or should I think about creating a custom software from scratch? Thanks

edit retag flag offensive close merge delete



Whatever the conclusion about ROS, I would suggest to avoid writing "custom software from scratch" as much as possible. If you're concerned about resource usage, but do like abstractions such as msg passing and distributed systems, search for embedded OS options with support for that.

gvdhoorn gravatar image gvdhoorn  ( 2017-08-21 09:34:21 -0500 )edit

I agree but I couldn't find any. Do you know any embedded OS that handles MultiThreading (or multi processing) and distributed redundant msg passing? Thanks

Anelito gravatar image Anelito  ( 2017-08-22 07:33:03 -0500 )edit

I think just about any real-time OS will support threading (tasks) and messaging. FreeRTOS is one such OS.

Note though that finding an OS that supports this is far removed from all the functionality that you get 'for free' with a framework like ROS.

gvdhoorn gravatar image gvdhoorn  ( 2017-08-22 08:32:26 -0500 )edit

Linking to cross-post on robotics.stackexchange.

gvdhoorn gravatar image gvdhoorn  ( 2017-08-22 08:36:50 -0500 )edit

Perhaps you could/should ask the guys that posted Open-source Autonomous Sailing Robot on ROS Discourse.

gvdhoorn gravatar image gvdhoorn  ( 2017-08-22 08:38:33 -0500 )edit