Robobot architecture

From Rsewiki
(Difference between revisions)
Jump to: navigation, search
(Software block overview)
Line 9: Line 9:
 
=== Software building blocks ===
 
=== Software building blocks ===
  
 +
[[File:robobot-function-blocks.png]]
 +
 +
The main software building blocks.
 +
 +
 +
==== Base control====
 +
The 'base control' block is the 'brain' of the robot.
 +
 +
The base control is an expandable skeleton software that is intended as the mission controller.
 +
The skeleton includes basic functionality to interface the Teensy board, to interface the digital IO and to communicate with a Python app.
 +
 +
The base control skeleton is written in C++.
 +
 +
==== Python3 block====
 +
Vision functions are often implemented using the Python libraries.
 +
 +
The provided skeleton Python app includes communication with the Base control. The interface is a simple socket connection, and the communication protocol is lines of text both ways. The lines from the base control could be e.g. "aruco" or "golf" to trigger some detection og ArUco codes or golf balls.
 +
The reply back to the Base control could be "golfpos 3 1 0.34 0.05" for; found 3 balls, ball 1 is at position x=0.34m (forward), y=0.05m (left).
 +
 +
==== IP-disp ====
 +
 +
Is a silent app that is started at reboot and has two tasks:
 +
* Detect the IP net address of the Raspberry and send it to the small display on the Teensy board.
 +
* Detect if the "start" button is pressed, and if so, start the 'Base control' app.
  
 
==NASREM==
 
==NASREM==

Revision as of 13:43, 2 November 2023

Back to Robobot B

Contents

Software block overview

Robobot-in-blocks-2024.png

The main building blocks.

Software building blocks

Robobot-function-blocks.png

The main software building blocks.


Base control

The 'base control' block is the 'brain' of the robot.

The base control is an expandable skeleton software that is intended as the mission controller. The skeleton includes basic functionality to interface the Teensy board, to interface the digital IO and to communicate with a Python app.

The base control skeleton is written in C++.

Python3 block

Vision functions are often implemented using the Python libraries.

The provided skeleton Python app includes communication with the Base control. The interface is a simple socket connection, and the communication protocol is lines of text both ways. The lines from the base control could be e.g. "aruco" or "golf" to trigger some detection og ArUco codes or golf balls. The reply back to the Base control could be "golfpos 3 1 0.34 0.05" for; found 3 balls, ball 1 is at position x=0.34m (forward), y=0.05m (left).

IP-disp

Is a silent app that is started at reboot and has two tasks:

  • Detect the IP net address of the Raspberry and send it to the small display on the Teensy board.
  • Detect if the "start" button is pressed, and if so, start the 'Base control' app.

NASREM

The software architecture is based on the old NASREM architecture, and this is the structure for the description on this page.

The National Aeronautics and Space Administration (NASA) and the US National Institute of Standards and Technology (NIST) have developed a Standard Reference Model Telerobot Control System Architecture called NASREM. Albus, J. S. (1992), A reference model architecture for intelligent systems design.

Nasrem.png

Figure 1. The NASREM model divides the control software into a two-dimensional structure. The columns are software function: Sensor data processing, modelling and behaviour control.

Level 1; Pose and drive control

Robobot level 1.png

Figure 2. The lowest level in the control software. The encoder ticks are received from the hardware (from the Teensy microprocessor) in the sensor interface. The encoder values are then modeled into an odometry pose. The pose is used to control the wheel velocity using a PID controller. The desired wheel velocity for each wheel is generated in the mixer from a desired linear and rotational velocity.

Blocks

More robobot level 1 details of the individual blocks.

Level 2; drive select

Robobot level 2.png

Figure 3. At level 2 further sensor data is received, modeled, and used as optional control sources.

Blocks

More robobot level 2 details of the individual blocks.

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox