Skip to content

Overview 1: About TeMoto

Robert edited this page Apr 4, 2023 · 3 revisions

Overview

TeMoto is a collection of software tools, i.e., a framework, that help solving common challenges in applications covering system reliability, human-robot collaboration and multi-robot systems. TeMoto is designed to work with ROS (full support) and ROS2 (in a migration stage), but the core tools can be used outside ROS.

Motivation

Commonly, a robotic (ROS-based) application is built for a specific task, such as autonomous navigation in a warehouse. Hardware (LIDAR, cameras, etc.) and software (localization, motion planner, mission logic, etc.) components are chosen or designed based on task’s requirements and integrated via system configuration scripts (e.g., ROS launch files). Yet a change in mission specification, component failures, or energy conservation would require a downtime for adaption (e.g., redesign of mission logic, switching sensor data processing pipeline, powering down unused components). This may not be feasible in time-critical scenarios, i.e., fire fighting, or in environments with restricted access, such as disaster areas.

TeMoto’s architecture builds upon above described component-based applications by adding a functionality to dynamically control the components (start, stop, monitor, combine), i.e., resource management, and define tasks which control the execution flow of the robot, i.e., task management. Thus the application can be organized through tasks, where the individual user-defined and reusable actions within the task (navigation, manipulation, etc) can request, access and stop components when required.

The aforementioned challenges TeMoto addresses include:

  • Dynamic task management: TeMoto separates mission strategy related code from functional resources, such as sensors and actuators. A task consists of modular actions that implement a specific behaviour, e.g., a sensing or a navigation action. Actions can contain any arbitrary user defined code and can start, stop and access resources. Actions can be connected into sequential, concurrent and cyclical graphs, thus allowing the user to implement arbitrarily complex run-time behaviours

  • Dynamic resource management: Existing components (ROS nodes or other executables), i.e., resources such as a camera, lidar, network or CPU intensive algorithm can be programmatically started, stopped and monitored for failures, which are reported to all consumers of a resource. TeMoto provides an accounting mechanism for resources (the Resource Registrar or RR), embedded into all subsystems of TeMoto, which mediates resource queries. Thus, the RR knows how many consumers a resource has and what are its sub-resource dependencies, which is important when propagating resource failure messages to all consumers or allocating (mitigating multiple allocations) and de-allocating (making sure that there are no consumers left) resources.

  • Minimal development overhead: TeMoto does not require any resource customization, i.e., existing ROS packages can be used via TeMoto without modification. Similar frameworks assume specific behaviour from resources in order to be used within the framework. Having minimal development overhead is important for smooth adoption and maintenance because the users do not need to fully commit their project to a specific framework and its invasive requirements.

  • Modular design: While TeMoto contains a number of subsystems (ROS nodes), each subsystem (maintained in separate repositories) has minimal dependencies. This allows the robotics community to adopt only the subsystems that matter for their project and keeps code bloat at a minimum.

Structure / Architecture

From single robot's point of view:

TeMoto segregates a robot's application software to task, resource management, and component layers. Tasks, composed of individual actions, outline the behavior of the robot, while resource managers provide dynamic access to components, e.g., sensors, actuators and data processing algorithms. In a bigger picture, TeMoto belongs under the branch of Three Layer (3L) or Hybrid architectures.

Enabling features

From multiple robots' point of view:

TeMoto is designed to extend to a decentralized multi-robot system. Each robot is assumed to be autonomous, orchestrated by its own set of TeMoto tools, i.e., a TeMoto instance. However, the individual layers of each instance (task and resource management) can communicate with eachother. Thus, tasks can be coordinated and resources shared across multiple robots. Such layered multi robot configuration is also known as the 3L Syndicate Architecture.

Enabling features


Next: Overview 2 - "Task Management"

Clone this wiki locally