1
$\begingroup$

Working on a few Aquatic projects right now and curious about the Pros/Cons of using MOOS IVP over ROS or ROS2. I can't find a lot of information about active projects using MOOS so I'm wondering if it's worth learning.

Some of my project applications:

  1. A network of static bottles that periodically measure water quality and report data acoustically to a surface vessel
  2. An HROV that can be deployed autonomously or remotely operated via tether for mapping/sample collection respectively

Things I'm concerned about:

  • Message Overhead, what kind of network requirements does ROS have over MOOS
  • Community Support, ROS has a pretty active community but I don't hear a lot about MOOS
  • OS support, are there MOOS compatibility issues I should know about?
  • Ease of use, is MOOS relatively easy for noobs to pick up? I come from a ROS1/ROS2 background but looking into this cuz I like trying all the stuff out there, within reason!
$\endgroup$
0

1 Answer 1

1
$\begingroup$

I'm working with MOOS-IvP currently. It is primarily meant to be a high-level autonomous decision-making framework.

It's very different in that sense from ROS. A "desktop" ROS installation gives you a sprawling and rather universal toolkit for every type of robotics. The core implementation of MOOS-IvP, is much more opinionated and focused on the autonomous decision-making portion.

Overall, the framework is not fundamentally restricted to marine robotics, but that's where most people are using it, and there are a number of behaviors that MOOS-IvP provides out of the box that are specific to the marine realm. An example that comes to mind is the COLREGS collision-avoidance behavior, which:

will produce IvP objective functions designed to avoid collisions (and near collisions) with another specified vehicle, based on the protocol found in the US Coast Guard Collision Regulations (COLREGS) [54].

The behavior framework is powerful and has a lot to offer for autonomous marine applications. I recently attended a training short course, similar to an abbreviated version of this lab course, and we didn't need to write any C++ code at all to investigate and customize rich autonomous obstacle avoidance, multi-vehicle maneuvering and communications, and other similar complex behavior. This can all be handled with app configuration (similar to ROS launch) and vehicle behavior files, with graphical command, control and monitoring through the pMarineViewer graphical app.

For real communications, vehicle actuation, and sensing, you'll need drivers and MOOS interfaces for those drivers. That may or may not be available for your hardware, but I think that's a bit outside the scope of what MOOS-IvP is trying to accomplish. From the MOOS-IvP design objectives and philosophy (emphasis mine):

The vehicle manufacturer provides a navigation and control system on the main vehicle computer, capable of streaming vehicle position and trajectory information to the payload computer, and accepting a stream of autonomy decisions such as heading, speed and depth in return. The primary benefits of this approach are (a) an autonomy software system that may be used nearly identically on platforms from several manufacturers, and (b) the decoupling of procurement decisions between the autonomy and sensing software and the decision of the platform hardware.

That points to the rough boundaries of the scope of MOOS-IvP itself, operating at a fairly high level of abstraction to provide autonomous behavior. There are many extensions. For example, the uField toolbox adds a lot for multi-vehicle mission management.

OS support, are there MOOS compatibility issues I should know about?

I think core MOOS might actually be dependency-free, and there are just a handful of dependencies for MOOS-IvP. Several of these are related to use of images on the map/vehicle display in pMarineViewer.

It's different from ROS and its deep dependency stack in that sense, and I think flexible deployment, minimal dependencies, and code simplicity are all core parts of the MOOS-IvP philosophy. In particular, a backseat-driver payload autonomy software paradigm, where the software potentially runs on a manufacturer-supplied computer, does not benefit from tricky constraints on dependencies, particular OS choice, or processor architecture.

I've recently installed and run MOOS-IvP on Arm and x86 processor architectures, on Ubuntu, Debian, Windows Subsystem for Linux, and in a Docker container. My colleagues have done it on Mac.

Native Windows support is lacking.

Ease of use, is MOOS relatively easy for noobs to pick up? I come from a ROS1/ROS2 background but looking into this cuz I like trying all the stuff out there, within reason!

There's a quickstart setup guide for MIT lab students here. I'd try it out and start working through the MIT 2.680 lab course.

Community Support, ROS has a pretty active community but I don't hear a lot about MOOS

Yes, there's an active community, but a lot of it is company-proprietary, or at least not-totally-public work. See the MOOS-DAWG working group meetings for some examples of projects that are using MOOS-IvP:

https://oceanai.mit.edu/moos-dawg/pmwiki/pmwiki.php?n=Main.HomePage

I don't think there is much of a public forum community. There are mailing lists here that you could join, and archives to browse.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.