## **13. `README.md`**
# Robocore
**Robocore** is a pure Python middleware for robotic communication, emphasizing simplicity, customizability, and ease of use. It enables high-bandwidth, low-latency communication suitable for streaming data like RGB-D arrays.
## Philosophy
Robocore aims to lower the barrier to entry for robotic communication by providing an easy-to-use and highly customizable framework. The goal is to make sure that you can focus on your methods without worrying about the underlying communication complexities.
## Features
- **Publish/Subscribe Paradigm**: Simple string-based topics with support for multiple publishers and subscribers.
- **Centralized Key-Value Store**: A database-like system for storing and retrieving key-value pairs.
- **Automatic Server Initiation**: Servers for topic registry and key-value store start automatically in the background.
- **Visualization Tools**: Real-time data inspection and visualization using `rerun-sdk`.
- **Configuration Files**: Use `.yaml` files to specify topic types and additional info.
## Installation
```bash
pip install robocore
```
## Getting Started
### Simple Publish/Subscribe
```python
import robocore as rc
def publisher():
pub = rc.Publisher(topic="camera_feed")
pub.publish(data) # Replace 'data' with your data
pub.close()
def subscriber():
sub = rc.Subscriber(topic="camera_feed")
data = sub.receive()
sub.close()
```
### Multiple Subscribers
Check out the example in the `examples` folder:
```bash
python examples/multiple_subscribers.py
```
### Robotic Manipulator Example
Simulate a robotic manipulator with multiple publishers and subscribers:
```bash
python examples/robotic_manipulator.py
```
### Cross-Device Communication
Use Tailscale for networking across devices:
- Install Tailscale on both devices.
- Run the publisher on one device and the subscriber on the other.
- Modify the `connect` method to use the Tailscale IP address.
## Configuration
Use a `.yaml` file to specify topic types and visualization settings:
```yaml
topics:
- name: camera_feed
type: image
visualize: true
```
## Visualization
Integrate with `rerun-sdk` for real-time visualization:
```python
visualizer = rc.Visualizer(topics=["camera_feed"])
visualizer.start()
```
## Contributing
Contributions are welcome! Please refer to the documentation and follow the coding standards.
---
For more examples and detailed usage, please refer to the `examples` folder.
Raw data
{
"_id": null,
"home_page": "https://github.com/pthangeda/robocore",
"name": "robocore",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "robotics communication middleware",
"author": "Pranay Thangeda",
"author_email": "contact@prny.me",
"download_url": "https://files.pythonhosted.org/packages/d0/8f/d364b831dfcb759f927fae361f66a21e2564df6415e38ac7d3609ba26707/robocore-0.0.1.tar.gz",
"platform": null,
"description": "## **13. `README.md`**\n\n# Robocore\n\n**Robocore** is a pure Python middleware for robotic communication, emphasizing simplicity, customizability, and ease of use. It enables high-bandwidth, low-latency communication suitable for streaming data like RGB-D arrays.\n\n## Philosophy\n\nRobocore aims to lower the barrier to entry for robotic communication by providing an easy-to-use and highly customizable framework. The goal is to make sure that you can focus on your methods without worrying about the underlying communication complexities.\n\n## Features\n\n- **Publish/Subscribe Paradigm**: Simple string-based topics with support for multiple publishers and subscribers.\n- **Centralized Key-Value Store**: A database-like system for storing and retrieving key-value pairs.\n- **Automatic Server Initiation**: Servers for topic registry and key-value store start automatically in the background.\n- **Visualization Tools**: Real-time data inspection and visualization using `rerun-sdk`.\n- **Configuration Files**: Use `.yaml` files to specify topic types and additional info.\n\n## Installation\n\n```bash\npip install robocore\n```\n\n## Getting Started\n\n### Simple Publish/Subscribe\n\n```python\nimport robocore as rc\n\ndef publisher():\n pub = rc.Publisher(topic=\"camera_feed\")\n pub.publish(data) # Replace 'data' with your data\n pub.close()\n\ndef subscriber():\n sub = rc.Subscriber(topic=\"camera_feed\")\n data = sub.receive()\n sub.close()\n```\n\n### Multiple Subscribers\n\nCheck out the example in the `examples` folder:\n\n```bash\npython examples/multiple_subscribers.py\n```\n\n### Robotic Manipulator Example\n\nSimulate a robotic manipulator with multiple publishers and subscribers:\n\n```bash\npython examples/robotic_manipulator.py\n```\n\n### Cross-Device Communication\n\nUse Tailscale for networking across devices:\n\n- Install Tailscale on both devices.\n- Run the publisher on one device and the subscriber on the other.\n- Modify the `connect` method to use the Tailscale IP address.\n\n## Configuration\n\nUse a `.yaml` file to specify topic types and visualization settings:\n\n```yaml\ntopics:\n - name: camera_feed\n type: image\n visualize: true\n```\n\n## Visualization\n\nIntegrate with `rerun-sdk` for real-time visualization:\n\n```python\nvisualizer = rc.Visualizer(topics=[\"camera_feed\"])\nvisualizer.start()\n```\n\n## Contributing\n\nContributions are welcome! Please refer to the documentation and follow the coding standards.\n\n---\n\nFor more examples and detailed usage, please refer to the `examples` folder.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A Python middleware for robotic communication.",
"version": "0.0.1",
"project_urls": {
"Homepage": "https://github.com/pthangeda/robocore"
},
"split_keywords": [
"robotics",
"communication",
"middleware"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "944690e66faae3560e622ee900958cad0cdd8df404d37d9d47bcddb1986c71da",
"md5": "23377135ba603974064bd02684ff87d1",
"sha256": "410f0e04cd19b50620c8efe67a98a58890794c5048194ef6946ed7555c4b9fdf"
},
"downloads": -1,
"filename": "robocore-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "23377135ba603974064bd02684ff87d1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 7413,
"upload_time": "2024-10-21T00:15:27",
"upload_time_iso_8601": "2024-10-21T00:15:27.479326Z",
"url": "https://files.pythonhosted.org/packages/94/46/90e66faae3560e622ee900958cad0cdd8df404d37d9d47bcddb1986c71da/robocore-0.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d08fd364b831dfcb759f927fae361f66a21e2564df6415e38ac7d3609ba26707",
"md5": "aefcae021319fb7ccaaf9c220918334b",
"sha256": "1790c08b7ae52afffa5a44c17a2accc4229de1821202cde38acdc34405edbf7c"
},
"downloads": -1,
"filename": "robocore-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "aefcae021319fb7ccaaf9c220918334b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 6710,
"upload_time": "2024-10-21T00:15:29",
"upload_time_iso_8601": "2024-10-21T00:15:29.496660Z",
"url": "https://files.pythonhosted.org/packages/d0/8f/d364b831dfcb759f927fae361f66a21e2564df6415e38ac7d3609ba26707/robocore-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-21 00:15:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pthangeda",
"github_project": "robocore",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "robocore"
}