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 and uses the following ports to communicate:
- 7063: Connexion with other applications (Robotics Academy, BT Studio, Unibotics)
- 6080-6090: Tools VNC
The Manager class is the core of RAM, orchestrating operations and managing transitions between various application states.
- States:
idle: The initial state, waiting for a connection.connected: Connected and ready to initiate processes.world_ready: The world environment is set up and ready.tools_ready: Tools are prepared and ready.application_running: A robotic application is actively running.paused: The application is paused.
- Transitions:
connect: Moves fromidletoconnected.launch_world: Initiates the world setup fromconnected.prepare_tools: Prepares the tools inworld_ready.run_application: Starts the application intools_readyorpaused.pause: Pauses the running application.resume: Resumes a paused application.terminate: Stops the application and goes back totools_ready.stop: Completely stops the application.disconnect: Disconnects from the current session and returns toidle.
- Stateless Transitions:
gui: Redirects content to the gui webserver.style_check: Triggers on_style_check.code_analysis: Triggers on_code_analysis.code_format: Triggers on_code_format.code_autocomplete: Triggers on_code_autocomplete.
on_connect(self, event): Manages the transition to the 'connected' state.on_launch_world(self, event): Prepares and launches the robotic world.on_prepare_tools(self, event): Sets up tools.on_run_application(self, event): Executes the robotic application.on_pause(self, msg): Pauses the running application.on_resume(self, msg): Resumes the paused application.on_terminate(self, event): Terminates the running application.on_disconnect(self, event): Handles disconnection and cleanup.on_style_check(self, event): Check the style of the user code.on_code_analysis(self, event): Analyzes the style and format of the user code using pylint.on_code_format(self, event): Formats the user code using black.on_code_autocomplete(self, event): Searches for all available code completions using Jedi.- Exception Handling: Details how specific errors are managed in each method.
- Message Queue Integration:
ManagerConsumerputs received messages intomanager_queueforManagerto process. - State Updates and Commands:
Managersends state updates or commands to the client throughManagerConsumer. - Client Connection Handling:
Managerrelies onManagerConsumerfor client connection and disconnection handling. - Error Handling:
ManagerConsumercommunicates exceptions back to the client andManager. - Lifecycle Management:
Managercontrols the start and stop of theManagerConsumerWebSocket server.
- World Initialization and Launching:
ManagerinitializesLauncherWorldwith specific configurations, such as world type (e.g.,gazebo,drones) and the launch file path. - Dynamic Module Management:
LauncherWorlddynamically launches modules based on the world configuration and ROS version, as dictated byManager. - State Management and Transition: The state of
Manageris updated in response to the actions performed byLauncherWorld. For example, once the world is ready,Managermay transition to theworld_readystate. - Termination and Cleanup:
Managercan instructLauncherWorldto terminate the world environment through itsterminatemethod.LauncherWorldensures a clean and orderly shutdown of all modules and resources involved in the world setup. - Error Handling and Logging:
Managerhandles exceptions and errors that may arise during the world setup or termination processes, ensuring robust operation.
- Visualization Setup:
ManagerinitializesLauncherToolswith a specific tools configuration, which can include tools likeconsole,simulator,web_gui, etc. - Module Launching for Tools:
LauncherToolsdynamically launches tools modules based on the configuration provided byManager. - State Management and Synchronization: Upon successful setup of the tools,
Managercan update its state (e.g., totools_ready) to reflect the readiness of the tools. - Termination of Tools:
Managercan instructLauncherToolsto terminate the current tools setup using itsterminatemethod. - Error Handling and Logging:
Manageris equipped to manage exceptions and errors that might occur during the setup or termination of the tools.
- Application Execution:
Managerinitiates theapplication_processwhen transitioning to theapplication_runningstate. - Application Configuration and Launching: Before launching the
application_process,Managerconfigures the necessary parameters. - Process Management:
Managermonitors and controls theapplication_process. - Error Handling and Logging:
Manageris responsible for handling any errors or exceptions that occur during the execution of theapplication_process. - State Synchronization: The state of the
application_processis closely synchronized with the state machine inManager.
Interaction Between Manager and Server (Specific to RoboticsAcademy Applications) (Now inside tool web_gui)
- Dedicated WebSocket Server for GUI Updates:
Serveris used exclusively for RoboticsAcademy applications that require real-time interaction with a web-based GUI. - Client Communication for GUI Module: For RoboticsAcademy applications with a GUI module,
Serverhandles incoming and outgoing messages. - Real-time Interaction and Feedback:
Serverallows for real-time feedback and interaction within the browser-based GUI. - Conditional Operation Based on Application Type:
Managerinitializes and controlsServerbased on the specific needs of the RoboticsAcademy application being executed. - Error Handling and Logging:
Managerensures robust error handling forServer.
-
Connecting to RAM:
- Initially, the RAM is in the
idlestate. - A client (e.g., a user interface or another system) connects to RAM, triggering the
connecttransition and moving RAM to theconnectedstate.
- Initially, the RAM is in the
-
Launching the World:
- Once connected, the client can request RAM to launch a robotic world by sending a
launch_worldcommand. - RAM transitions to the
world_readystate after successfully setting up the world environment.
- Once connected, the client can request RAM to launch a robotic world by sending a
-
Setting Up Tools:
- After the world is ready, the client requests RAM to prepare the tools with a
prepare_toolscommand. - RAM transitions to the
tools_readystate, indicating that the tools are set up and ready.
- After the world is ready, the client requests RAM to prepare the tools with a
-
Running an Application:
- The client then requests RAM to run a specific robotic application, moving RAM into the
application_runningstate. - The application executes, and RAM handles its process management, including monitoring and error handling.
- The client then requests RAM to run a specific robotic application, moving RAM into the
-
Pausing and Resuming Application:
- The client can send
pauseandresumecommands to RAM to control the application's execution. - RAM transitions to the
pausedstate when paused and returns toapplication_runningupon resumption.
- The client can send
-
Stopping the Application:
- Finally, the client can send a
stopcommand to halt the application. - RAM stops the application and transitions back to the
tools_readystate, ready for new commands.
- Finally, the client can send a
-
Disconnecting:
- Once all tasks are completed, the client can disconnect from RAM, which then returns to the
idlestate, ready for a new session.
- Once all tasks are completed, the client can disconnect from RAM, which then returns to the