diff --git a/README.md b/README.md index 0fe83c8..1a2ba82 100644 --- a/README.md +++ b/README.md @@ -1 +1,111 @@ -# RoboticsApplicationManager \ No newline at end of file +# Robotics Application Manager (RAM) Repository + +## Overview + +This repository provides a framework for managing the lifecycle of robotics applications, enabling their remote execution, communication, and state management. It offers the following key features: + +- *Remote execution of robotics applications* +- *Communication with applications through WebSocket servers* +- *State management using a state machine* +- *Process management for applications and ROS environments* +- *Introspection data about the system* +- *Logging for tracking application activity* + +## Key Components + +- **Manager (manager.py):** + - Orchestrates application states (idle, connected, ready, running, paused) + - Handles external commands (start, stop, load code, pause, resume, terminate, disconnect) + - Launches applications and ROS environments + - Interacts with applications through a defined interface + - Provides introspection data about the system + +- **Communication Modules:** + - *WebSocket Servers (consumer.py, new_consumer.py):* Facilitate communication with clients + - *JavaScript Client Library (comms_manager.js):* Enables client-side interaction + +- **Application Interface:** + - *Robotics Python Application Interface (robotics_python_application_interface.py):* Defines methods for loading code, managing execution, monitoring status, and receiving updates + +- **Utility Functions:** + - *Process Utilities (process_utils.py):* Handle process management, class loading, and system state checks + - *Logging (log_manager.py):* Tracks application activity and potential issues + - *Docker Thread (docker_thread.py):* Runs Docker commands in separate threads for enhanced control + + **## Usage** + +1. **Prerequisites:** + - Python 3.x: [https://www.python.org/downloads/](https://www.python.org/downloads/) + - Required libraries (listed in `requirements.txt`) + +2. **Installation:** + ```bash + pip install -r requirements.txt + ``` + +3. **Starting the Manager:** + + Run the following command: + + ```bash + python manager.py + ``` + +4. **Connecting a Client:** + - Use the provided JavaScript client library to connect to the WebSocket server and interact with the Manager. + + +## Contributing + +### Organizational Guidelines: + + +**1. Fork:** +* Create a fork of this repository within the organization's GitHub account. + + +**2. Branch:** +* Create a descriptively named branch for your changes. + + +**3. Coding Style:** +* Adhere to the organization's coding style guidelines [link to guidelines](https://github.com/JdeRobot). + + +**4. Testing:** +* Write thorough unit tests for any new code or modifications. + + +**5. Code Review:** +* Request code reviews from appropriate team members before merging. + + +**6. Pull Request:** +* Create a pull request to merge your changes into the main repository. + + +**7. Address Feedback:** +* Responsively address comments and feedback from reviewers. + + +## Additional Contribution Tips: + +**1. Familiarize with Project Structure:** +* Review the repository structure to understand component relationships. + + +**2. Communicate:** +* Ask questions and discuss ideas with team members through issue trackers or designated channels. + + +**3. Document Changes:** +* Clearly explain the purpose and impact of your modifications in pull requests. + + +**4. Test Thoroughly:** +* Ensure your changes don't introduce regressions or unexpected behavior. + + +## License + +This project is licensed under the MIT License. See the [LICENSE](https://opensource.org/licenses/MIT) file for more details. [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8ee274a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,53 @@ +pipreqs-0.5.0 +asttokens-2.4.1 +attrs-23.2.0 +backcall-0.2.0 +beautifulsoup4-4.12.3 +bleach-6.1.0 +certifi-2024.2.2 +charset-normalizer-3.3.2 +colorama-0.4.6 +decorator-5.1.1 +defusedxml-0.7.1 +docopt-0.6.2 +executing-2.0.1 +fastjsonschema-2.19.1 +idna-3.6 +ipython-8.12.3 +jedi-0.19.1 +jinja2-3.1.3 +jsonschema-4.21.1 +jsonschema-specifications-2023.12.1 +jupyter-client-8.6.0 +jupyter-core-5.7.1 +jupyterlab-pygments-0.3.0 +markupsafe-2.1.5 +matplotlib-inline-0.1.6 +mistune-3.0.2 +nbclient-0.9.0 +nbconvert-7.16.2 +nbformat-5.9.2 +packaging-24.0 +pandocfilters-1.5.1 +parso-0.8.3 +pickleshare-0.7.5 +platformdirs-4.2.0 +prompt-toolkit-3.0.43 +pure-eval-0.2.2 +pygments-2.17.2 +python-dateutil-2.9.0.post0 +# pywin32-306 +pyzmq-25.1.2 +referencing-0.33.0 +requests-2.31.0 +rpds-py-0.18.0 +six-1.16.0 +soupsieve-2.5 +stack-data-0.6.3 +tinycss2-1.2.1 +tornado-6.4 +traitlets-5.14.1 +urllib3-2.2.1 +wcwidth-0.2.13 +webencodings-0.5.1 +yargs-0.1.9 \ No newline at end of file