Skip to content

Overview

This section explains the framework of our NAO software. The chapters walk through various features in a top-down approach starting with a general overview. More advanced topics are covered later. Here is a short outline of the next chapters:

  • Directory Structure: Explains the directory structure of the code repository
  • Process EntryPoint: Starts the top-down approach from the main() function of the process
  • Runtime: What does the runtime do to setup and inter-connect all subcomponents?
  • Cyclers: How do cyclers run the robotics nodes?
  • Nodes: What are nodes and how are they implemented?
  • Databases & Types: How can data be shared between cyclers and the framework?
  • Parameters: How does the framework provide configuration parameters to nodes?
  • Communication: What is communication and how is it able to communicate between framework and nodes?
  • Hardware Interface: How is the hardware abstracted away for the different target platforms?
  • Thread Communication: Which concepts and features exist to enable thread-safe communication between subcomponents?
  • Filtering: How to interleave historic data in filters in an multi-threaded software?
  • Macros: What macros exist that ease the development and how do they work?
  • Error Handling: Which kinds of error handling concepts are supported and which to choose when?

The framework provides the fundamentals needed to execute robotics specific code. It has a modular design to allow for convenient development and replacement of individual nodes. The framework consists of four fundamental components:

overview overview

  • Runtime: Encapsulates all subcomponents by starting and initializing them
  • Hardware Interface: Abstracts hardware away and is the interaction point for cyclers with the outside world
  • Cyclers: Cycle through nodes, process data from hardware and produce outputs (see e.g. control or vision_top)
  • Communication: Exchanges data between framework and other resources e.g. file system and network

Todo

Mention unit testing