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:
- 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