Introduction to the Finroc Framework

What is Finroc®?

Finroc® is a robot control framework developed in C++ and Java, designed to efficiently build modular, scalable, and real-time capable robot control systems. It supports the structured development of robotic applications ranging from small mobile robots to complex distributed systems.

Overview

  • Supports the efficient development of robot control software
  • Modular and scalable architecture
  • Enables the integration of diverse components and algorithms
  • Designed for real-time performance
  • Integrates easily with external systems

Development History

Development

  • Initial Development: Began in 2008
  • Institution: Robotics Research Lab (RRLab), RPTU Kaiserslautern, Germany
  • Development Model: Continuous, long-term development

Goal:

  • Robust and flexible architecture
  • Scalable to various robot types and applications
  • Maintain performance across different system sizes

Design Principles and System Architecture

Core Philosophy

Core Philosophy of Finroc
: Finroc’s design philosophy focuses on supporting and ensuring quality attributes in robot control systems, with a strong emphasis on long-term maintainability.

Key Aspects:

  • Early design decisions focus on elements that are difficult to change later
  • Strong emphasis on software quality and maintainability
  • Influenced by the MCA2 framework, valued for its proven architectural qualities

Insight

The choice of framework directly impacts software quality, development effort, and long-term maintainability in robot control systems.

Architecture Overview

Layered Architecture
  • rrlib (Robotic Research Library)
    Framework-independent algorithms and data structures, reusable outside of Finroc
  • finroc_core
    Foundation layer providing basic data structures, interfaces, and communication mechanisms
  • finroc_libraries
    Reusable, topic-focused components built on finroc_core
  • finroc_plugins
    Extension layer including communication protocols, scheduling, and structural helpers
  • finroc_projects
    Application layer containing actual robot control programs
  • finroc_tools
    Development utilities such as GUI tools, runtime analysis, and debugging support

System Architecture and Structural Design

Finroc Modular Core and Architecture

Highly Modular Core
  • Components can be added, removed, or modified independently
  • Encourages reuse and clean system design
Scalability & Flexibility
  • Suitable for small embedded systems and large distributed robot systems
  • Supports thousands of components
Independent Module Integration
  • Modules operate independently
  • Communication via well-defined interfaces
  • Enables flexible system configuration

Application Structure

Modules

  • Basic building blocks
  • Communicate via input/output data ports
  • Form a data-flow graph
  • Typical connection pattern: 1:n, common in robotics

Groups

  • Logical collections of modules
  • Provide a hierarchical structure
  • Expose their own interfaces

Parts

  • Executable processes
  • Represent running instances of applications

System Capabilities and Applications

Data Flow & Communication

  • Sensor Data: Flows upward in the hierarchy (typically represented in yellow)
  • Controller Data: Flows downward (typically represented in red)
  • RPC Ports: Enable remote procedure calls between modules
  • Distributed Execution: Supports execution across multiple processes and machines and scales to large systems

Key features

  • Real-time performance using zero-copy communication and lock-free mechanisms
  • High scalability supporting thousands of components
  • OS-independent execution for lightweight and efficient operation
  • Slim, modular core enabling easy customization and extension
  • Native C++11 and Java implementations
  • Efficient intra-process runtime construction with minimal system dependencies

Use Cases & Applications

Small Mobile Robots

  • Simple autonomous robots
  • Lightweight control requirements
  • Rapid prototyping

Complex multi-robot systems

  • Large-scale robotic systems
  • Distributed execution
  • Multiple interacting robots