diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 18f8dbd..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2026 QunYu - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md index 0d3c0e9..e348663 100644 --- a/README.md +++ b/README.md @@ -1,199 +1,111 @@ -# SwarmPlug +# SwarmPlug ver0.1 -**SwarmPlug** is a plug-and-play connectivity layer for **ROS1-based multi-agent systems**, -designed to enable decentralized **association, introspection, and coordination** across heterogeneous robotic swarms. - -> 🚩 This repository is a **public demo & timestamp anchor** for **SwarmPlug ver0.1**. -> It demonstrates core capabilities and interfaces, **without exposing the commercial core implementation**. -![MyVideo_1](https://github.com/user-attachments/assets/b9444de8-d616-4299-8397-fcf16fdf4df1) - ---- - -## 1. What does SwarmPlug do? - -SwarmPlug focuses on one fundamental problem in swarm robotics: - -> **How can multiple ROS-based agents, running independent ROS masters on different devices, discover each other and share selected ROS interfaces in a decentralized way?** - -SwarmPlug provides: - -- A lightweight **association layer** between devices - -- Unified **introspection** of swarm-wide ROS entities - -- A simple **CLI interface** to inspect swarm state - - -No cloud, no central server, no monolithic ROS master. +**Host Attachment Specification** --- -## 2. What ver0.1 proves +## Statement -This ver0.1 demo validates the following capabilities: +SwarmPlug ver0.1 defines a deterministic host attachment specification +between SwarmPlug and a ROS runtime environment. -- βœ… Cross-device association between multiple ROS1 nodes - -- βœ… Swarm-wide discovery of: - - - ROS nodes - - - ROS topics - - - ROS parameters - -- βœ… Command-line introspection of swarm state - -- βœ… End-to-end β€œhello world” topic exchange across devices - +It does not normalize. +It does not snapshot. +It does not coordinate. -This version focuses on **connectivity and observability**, not on control or task logic. +**It attaches.** --- -## 3. Repository scope +## Problem -### Included in this repository +Before semantic abstraction or coordination can occur, +a reliable host attachment layer must exist. -- πŸ“„ Documentation and usage examples - -- 🧩 High-level architecture description - -- πŸ–₯ CLI command demonstrations - -- πŸ•’ Public release timestamp (ver0.1) - +A ROS runtime exposes its operational surface through: -### Not included in this repository +- ROS Master (XMLRPC) +- Topics +- Services +- Parameters -- ❌ Core synchronization algorithms - -- ❌ Commercial SwarmPlug implementation - -- ❌ Protocol adapters and internal optimizations - -- ❌ Appliance / firmware images - - -> This separation is intentional and aligns with the commercial roadmap. +**A sidecar infrastructure must attach and discover these interfaces consistently.** --- -## 4. Architecture overview (high level) - -SwarmPlug runs **locally on each device**, alongside the local ROS master. +## Position -Each instance: +SwarmPlug ver0.1 defines the host attachment boundary. -- Interfaces with its local ROS graph - -- Participates in a decentralized association process - -- Exposes a unified swarm view through a CLI - +`ROS Runtime β†’ SwarmPlug Attachment` -``` -ROS Nodes β†’ Local ROS Master - β”‚ - β–Ό - SwarmPlug Module - β”‚ - ── Association Layer ── - β”‚ - Swarm-wide View - β”‚ - β–Ό - swarmplug CLI +**ver0.1 completes the connection and discovery layer.** -``` --- -## 5. CLI demo (ver0.1) - -The following commands illustrate the ver0.1 demo behavior. - -### List swarm members - -``` -swarmplug nodes -``` - -### List visible ROS topics across the swarm +## Architecture (Conceptual) -``` -swarmplug topics -``` +```mermaid +flowchart TB -### Echo a topic from the swarm -``` -swarmplug echo /topic1 -``` + subgraph L1["Host Runtime"] + A1["ROS Master"] + A2["Topics / Services / Params"] + end -### List ROS parameters discovered in the swarm + subgraph L2["SwarmPlug ver0.1"] + B1["Connection Layer"] + B2["Discovery Interface"] + end + A1 --> B1 + A2 --> B2 ``` -swarmplug parameters -``` +## Determinism -### Read a specific parameter +Given a reachable ROS master, +ver0.1 deterministically discovers: -``` -swarmplug echo /turtlesim/background_b -``` +- Topics +- Nodes +- Services +- Parameters -These commands allow developers to **inspect swarm state without manually logging into each device**. +**No transformation, mutation, or interception is performed.** ---- - -## 6. Typical demo scenario - -A minimal demonstration setup may include: - -- Device A: ROS1 node publishing `/topic1` - -- Device B: SwarmPlug-enabled node associated with A - -- Device C: Another ROS1 node joining later - +## Scope Limitation -After association: +SwarmPlug ver0.1 does not include: -- All participating devices can observe selected ROS entities - -- CLI commands return a **swarm-consistent view** - +- Canonical naming +- Semantic abstraction +- Snapshot generation +- Communication transport +- Coordination logic -This validates decentralized discovery and visibility. +## Version Context +| Version | Responsibility | +|---------|----------------------| +| ver0.1 | Host attachment | +| ver0.2 | Canonical naming | +| ver0.3 | Semantic snapshot | ---- - -## 7. Current status +## Principle -- **Public demo release:** ver0.1 - -- **Focus:** association & introspection - -- **Next milestone:** ver0.2 (feature expansion & stability improvements) - +Attachment precedes abstraction. +Discovery precedes normalization. -The roadmap prioritizes robustness, modularity, and compatibility with heterogeneous robotic platforms. +ver0.1 establishes the attachment layer. ---- -## 8. License & usage +## License -This repository is provided **for demonstration and evaluation purposes only**. +This version specification is part of the SwarmPlug documentation. -- Commercial use of SwarmPlug core requires authorization - -- Internal implementations are not open-sourced in this repository - +Licensed under the **SwarmPlug Documentation License v1.0**. ---- +See the **main LICENSE** file for details. -## 9. Contact -For collaboration, evaluation, or commercial inquiries: -πŸ“§ **qyswarm@163.com** diff --git a/docs/architecture.md b/docs/architecture.md deleted file mode 100644 index 7607a57..0000000 --- a/docs/architecture.md +++ /dev/null @@ -1,11 +0,0 @@ -## High-level architecture (ver0.1) - -```mermaid -flowchart LR - A[ROS Device A
roscore + app nodes] -->|local ROS| B[SwarmPlug Module A] - C[ROS Device B
roscore + app nodes] -->|local ROS| D[SwarmPlug Module B] - - B <-->|association link| D - - B -->|CLI introspection| E[swarmplug CLI] - D -->|CLI introspection| E