micro-ROS / system_modes

System modes for ROS 2 and micro-ROS
Apache License 2.0
43 stars 9 forks source link

Standalone embedded support? #85

Closed wzli closed 2 years ago

wzli commented 3 years ago

Given this is under the umbrella of micro-ros, does the current implementation actually run on embedded? Self orchestration without a tethered PC is a common requirement.

From reading the concepts doc I am open to the idea that complex applications warrant something more sophisticated than a finite state machine. Though in an embedded application, robust and deterministic management of state transitions is required for the same reason you want real time execution management with sequential callback sequencing.

What I had in mind for embedded as first class:

norro commented 3 years ago

The current design aims for a setup where the mode management runs on a PC and manages lifecycle nodes on a micro controller. This setup should work as long as i) lifecycle nodes, ii) parameters, and iii) (optionally) diagnostics is available on the micro controller (see micro-ROS doagnostics) in a ROS 2 compatible way.

In order to allow self orchestration of system modes without a PC involved, the mode inference and mode management would have to be ported to the micro controller as well. This is currently not available, since the system modes package is a vanilla ROS 2 package (rclcpp). Our assumption is/was that micro controllers are usually too resource-constrained for this job.

However, it might still make sense to port it for scenarios where, e.g., power consumption is not an issue (power supply not via battery).