How does Luos compare to ROS, ROS2?


#1

Maybe it’s comparing apples with oranges, but for newbies these OSes look similar?

To help them thinking about the options, it might be nice to collect some links here to compare features, strengths, and weaknesses of the (open source) ‘competitors’ of Luos.

Quoting from a webchat (2018-01-24) with one of the founders of Luos:

we do not overlap that much at this time, Luos is currently doing actuators and sensors control on embedded system while ROS is more high level algorithm running on computer. Luos is more in competition with ROS2 actually.

I dug up these pages on ROS2:
This one discusses why to move from ROS to ROS2:
http://design.ros2.org/articles/why_ros2.html

and a list of ‘features’ of ROS2:


#2

Hi!

You actually raise a pretty good question!

Luos is a very young project, so currently it’s difficult to compare it with ROS which is a mature project. But we can maybe explain what we are working on so you can make your own opinion.

First, I think a major difference is where the system is running. A typical robot running ROS will require one or two computers. This computer runs ROS with several nodes that may control effectors, sensors, IK, SLAM, Face Tracking or whatever. ROS node interfaces ensure compatibility among them.

But there is no rule for how each of this node works internally, how they actually interact with the hardware. Each robot developer has to build its own controlling system (e.g. how you can control the motor speed), nearly from scratch just to have a robot that moves or senses. There is a big step before even considering the possibility to create a ROS node on top of this work.

Luos manages low-level motor and sensor control

Luos is inside the physical robot, in every single micro-controllers which make the robot moves, senses, manages energy and communicates. And Luos (strongly) suggests rules for those elements to unify APIs for higher level development.

Luos has (will have) meaningful APIs

We want to empower more people in building robotic systems and this requires to make it accessible to people who do not have 2 PhDs and 10 years experiences :wink:

Any robot maker has to deal with a lot of obscure and non-sens configuration. We want to abstract that and expose only meaningful/usage-oriented functions that allows them to focus on the application rather than on technicalities.

Luos abstracts hardware complexity and diversity

As an example, whatever the technology used, a Luos distance sensor has to retrieve the distance in mm, provides information of min and max range in mm and the precision it can achieve in mm.

This means that if during a robot development you eventually want to change the sensor technology, because it does not perform well, you do not have to re-write your software. You just change the sensor and you will get the same function, e.g. getting the distance but with a better reliability.

Luos is very lightweight

Luos runs on very low-cost microcontroller and had close-to-zero overhead on the robot control to ensure instant reactivity. It has been designed this way because we think the robots that will arrive in homes and workplaces will look like more like automated object rather than complex and expensive robots. IMHO, they will be designed for only one or two tasks. In these cases, the manufacturing cost and the reliability are critical.

Luos has a structure that allows community/team developments

Thanks to the usage oriented APIs and Rust programming, Luos allows developers to build features with confidence that they will not break the code made by others and more importantly that they can safely integrate external contributions.

Luos is made to integrate with Robus

Last but not least, we have created Robus a network technology that manages communication among hardware modules. No more bridge to convert from I2C to UART then CAN and SPI!

We can build Luos hardware module (or nodes) that performs specific tasks and plug them together thanks to Robus. Robus will automatically detect each one and create a network to ensure fast and reliable communication among them. Robus is also written in Rust.
Luos with Robus permit to segment your robot development.

TL;DR

  • They both aims at defining hardware abstraction to make robotic development easier.
  • They target different levels: Luos is close to hardware and designed to run on tiny micro-controller where ROS is more centered around high-level algorithms such as SLAM.
  • In the future Luos and ROS could be made compatible as they are actually focused on different aspects!

Hope I answer at least a part of your question and I’m sure other will complete it!