Introduction to the Finroc Framework
What is Finroc®?
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



