-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5f7bbc4
commit 3a517da
Showing
1 changed file
with
35 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
--- | ||
title: Understanding RAM Repository | ||
date: 2024-11-3 20:00:00 +0100 | ||
tags: [weekly progress] | ||
author: juan | ||
img_path: /assets/img/ | ||
toc: true | ||
comments: true | ||
--- | ||
|
||
## Understanding RAM Repository | ||
|
||
This week I had to take a look into the Robotics Application Manager repository for the first time, since some of the problems from the branch I've been working last week had some problems that we thought were here. In the end, the problema was elsewhere but this helped me to understand how everything Works a bit more. | ||
|
||
## What's RAM | ||
|
||
The Robotics Application Manager (RAM) is an advanced manager for executing robotic applications. It operates as a state machine, managing the lifecycle of robotic applications from initialization to termination. | ||
|
||
## RAM's architecture | ||
|
||
Everything is run by a Manager class that changes the current state, found in `manager/manager/manager.py`. There are six states: | ||
|
||
- idle: The initial state when it's first created. | ||
- connected: Succesfully connected to the server. | ||
- world_ready: When selecting an exercise in Robotics Academy, it starts with launching the world for the simulation | ||
- visualization_ready: Visualization tolos like the gazebo GUI and the terminal are ready | ||
- application_running: A robotic application is actively running. | ||
- paused: The application is paused. | ||
|
||
The first two happen when you start Robotics Academy, the next 2 when clicking on an exercise, setting up the exercise, and the last 2 are dependant on the user, either by starting and running the simulation or pausing it. | ||
|
||
Each state does something different, the ones I looked that were relevant to my work were world_ready and visualization_ready. | ||
When transitioning to the world_ready state, the manager executes an `on_launch_world()` function, which creates a LauncherWorld object. The specifications of this class can be found in `manager/manager/launcher/launcher_world.py`, which takes the parameters and the path to the world we want to launch, which was sent to the manager when clicking the exercise. | ||
|
||
When transitioning to the visualization_ready state, the manager executes an `on_prepare_visualization()` function, which creates a LauncherVisualization object. The specifications of this class can be found in `manager/manager/launcher/launcher_visualization.py` and it essentially initializes VNC displays for the terminal and the Gazebo GUI, this last one is also initialized in this step. |