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 efficient development of robot control software
  • Modular and scalable architecture
  • Enables integration of diverse components and algorithms
  • Designed for real-time performance
  • Easily integrates with external systems

Development History

Development 

  • Initial Development: Started 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 guaranteeing 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 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 composition

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 hierarchical structure
  • Expose their own interfaces

Parts

  • Executable processes
  • Represent running instances of applications

System Capabilities and Applications

Data Flow & Communication

  • Sensor Data: Flows upwards in the hierarchy (typically represented in yellow)
  • Controller Data: Flows downwards (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