API gRPC/Protobuf que define los contratos de comunicación e interfaces de servicios entre la interfaz gráfica (rqtll-ide) y el motor de ejecución en segundo plano (rqtll-service).
Caution
Este es un repositorio núcleo. Cualquier cambio en la paleta o iconos se propagará a todos los módulos que lo consumen.
Este repositorio contiene los archivos de definición Protocol Buffers v3 (.proto) y los scripts necesarios para compilar y generar stubs tanto para Python como para Rust.
Rust(stable, 1.70+ recomendado)protoc(Protocol Buffers Compiler)Python 3con las libreríasgrpcio-toolsyprotobufinstaladas
rqtll_api = { git = "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/RQTLL/rqtll-api.git", rev = "<commit-sha>" }# Dentro del directorio del proyecto que va a consumir rqtll-api
git submodule add https://github.com/RQTLL/rqtll-api.git external/rqtll-api
git submodule update --init --recursiveEn el Cargo.toml de tu proyecto de Rust, añade la siguiente línea:
rqtll_api = { path = "external/rqtll-api" }El proceso se gestiona automáticamente mediante build.rs al compilar el proyecto:
cargo buildEjecuta el script bash para compilar las interfaces y guardarlas en el directorio py/:
bash ./py.shEl siguiente diagrama detalla cómo interactúan los controladores del Frontend con los servicios del Backend a través de los contratos gRPC de rqtll-api:
---
config:
layout: dagre
theme: dark
look: neo
fontFamily: '''Open Sans Variable'', sans-serif'
---
flowchart TB
subgraph Frontend["rqtll-ide: PySide6 / Python"]
UI["IDE UI & Controls"]
C_Editor["Code Editor Controller"]
C_Comp["Compiler/Launcher Controller"]
C_Graph["Node Graph Visualizer"]
C_Teleop["Teleop Twist Controller"]
C_Wiz["Installation Wizard"]
end
subgraph API["rqtll-api: gRPC / Protobuf"]
Proto["proto/*.proto Contracts"]
end
subgraph Backend["rqtll-service: Rust Server"]
R_Server["Tonic gRPC Server"]
S_FS["File Service"]
S_Build["Build Service"]
S_Exec["Execution Service"]
S_Introspect["Introspection Service"]
S_Stream["Data Stream Service"]
S_Install["ROS Installer Service"]
end
UI --> C_Editor & C_Comp & C_Graph & C_Teleop & C_Wiz
C_Editor -- "file_system.proto" --> Proto
C_Comp -- "build.proto / execution.proto" --> Proto
C_Graph -- "introspection.proto / data_stream.proto" --> Proto
C_Teleop -- "interactive_execution.proto / data_stream.proto" --> Proto
C_Wiz -- "installer.proto / packages.proto" --> Proto
Proto -- gRPC Channels --> R_Server
R_Server --> S_FS & S_Build & S_Exec & S_Introspect & S_Stream & S_Install
S_FS --> OS_FS[("System File System")]
S_Build --> Colcon["colcon build / cargo build"]
S_Exec --> PTY["portable-pty / Shell Execution"]
S_Introspect --> ROS_Graph["ROS 2 Graph / CLI"]
S_Stream --> ROS_Bridge["ros2 topic echo/hz/bw / image_bridge.py"]
S_Install --> Apt["apt / bash installer"]
./
├── proto/ # Contratos de servicios gRPC (.proto)
│ ├── file_system.proto # Gestión y lectura/escritura de archivos
│ ├── interactive_execution.proto # Sesiones interactivas sobre terminal PTY
│ ├── settings.proto # Configuración persistente del sistema
│ ├── system_utils.proto # Estadísticas del sistema y bibliotecas
│ ├── packages.proto # Gestión de instalación/remoción de paquetes
│ ├── types.proto # Tipos de mensajes comunes y estructuras vacías
│ ├── workspace.proto # Administración de directorios de workspaces
│ ├── terminal.proto # Virtualización de PTY/Consolas
│ ├── installer.proto # Control del asistente de instalación de ROS 2
│ ├── data_stream.proto # Canales de métricas y streams de ROS 2
│ ├── clone_ws.proto # Clonación asíncrona de espacios de trabajo
│ ├── introspection.proto # Listado e introspección de tópicos y nodos
│ ├── execution.proto # Lanzamiento no-interactivo de nodos
│ └── build.proto # Recetas de compilación y limpieza de colcon
├── py/ # Directorio de salida de stubs para Python
├── src/ # Módulos de carga en Rust para Tonic
├── build.rs # Script de compilación de Tonic para Rust
├── py.sh # Script de compilación de protoc para Python
├── Cargo.toml # Configuración del Crate de Rust
└── README.md
- Lee CONTRIBUTING.md antes de enviar un Pull Request.
- Para añadir o modificar una llamada de servicio, edita el archivo
.protocorrespondiente enproto/. - Mantén la retrocompatibilidad: no reutilices ni alteres los índices de campo existentes; utiliza
reservedpara campos en desuso. - Ejecuta
cargo buildy./py.shpara comprobar que los cambios compilan de manera correcta para ambos lenguajes.
Consulta SECURITY.md para conocer el procedimiento de reporte de vulnerabilidades.
Este proyecto está bajo la licencia MIT. Consulta el archivo LICENSE para más detalles.
- adnKSharp adnksharp@gmail.com