# Concepts

This page presents concepts that are important to understand when reading about Aseba.

# Node

In Aseba, there can be several robots or a robot with multiple processors running in the same network. This network can be software (TCP), hardware (CAN), or a mix of both. Each processor within a network runs a small virtual machine and is called a node. Each node has its own tab in Aseba Studio, allowing you to program them independently, but with possible interactions through events.

# Event

Aseba is an event-based architecture, which means that events trigger code execution asynchronously. Events have an identifier and optional payload data. Aseba nodes can exchange events, and these can be of two types. The events that Aseba nodes exchange within an Aseba network are called global events. The events that are internal to a node are called local events. An example of a local event is the one emitted by a sensor that provides updated data. If the code for receiving an event is defined, then the corresponding block of code is executed when the event is received. Code can also emit events, which can trigger the execution of code on another node or enable communication with an external program. To start the execution of related code upon receiving new events, scripts must not block and thus must not contain any infinite loops. For instance, in the context of robotics, where a traditional robot control program would do some processing inside an infinite loop, an Aseba script would just do the processing inside a sensor-related event.

# What to read next?

You might be interested to read:

- Documentation of the integrated development environment
- Description of the Aseba language
- Description of the native functions standard library