Introduction to the Finroc Framework
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



