lrvd


Namelrvd JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryLRV Daemon: LeRobo-Vous - Peer2Peer robot telepresence for LeRobot
upload_time2025-07-21 23:31:08
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords robotics robots teleoperation telepresence lerobot webrtc remote-control p2p
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## LeRobo-Vous Daemon (LRVD) - The Robot Rendezvous 
Welcome to the web of robots.  

> Connect your robot to the world.

This little daemon is how robots find and meet each other across the internet.  Running `lrvd` will connect your robot and enable you to participate in peer-to-peer robotic telepresence. Simply spin up the daemons and your robots will auto-discover and auto-connect. You'll be given a URL to see the live video feed.   

*Le Robot Rendezvous* is an homage to the LeRobot project by Hugging Face πŸ€—. Viva la open source! Thank you to the team for teaching us so much about robotics and AI.  

## Features
- 🌐 Global network - connect with robots worldwide
- πŸ“‘ Real-time telepresence control
- πŸš€ Easy setup and operation
- πŸ”„ One-time device registration, automatic discovery, automatic pairing
- πŸ”’ Secure peer-to-peer connections 

LeRobo-Vous connects you to a network of robots and teleoperators. This package only supports [LeRobot](https://github.com/huggingface/lerobot) robots.

LRV is designed for simplicity, allowing you to connect with just a single command. The first time you start the daemon there's a quick one-time registration. After that you will be automatically connected to a matching robot anytime you run the service. Default behavior restricts connectivity to your own robots.

> Why the name "LeRobo-Vous"?

β€œRendezvous” is the French word for "meet"  
LeRobot Robots + Rendezvous = **LeRobo-Vous**

## Limitations 
Currently restricted to SO101 arms. I expect this will work with all LeRobot arms but I'd like to test it first before turning it on for everyone. If you're willing to be the first to try then please contact me on the LeRobot Discord ([I am LeDaniel](https://discord.com/users/769583125579169812)).

## Pre-Requisite Requirements
- [LeRobot](https://github.com/huggingface/lerobot) already installed and working with compatible robot hardware such as the [SO101](https://github.com/TheRobotStudio/SO-ARM100)  

That's it! LeRobot is all you need.  

## Installation

Before you start you'll need to activate your LeRobot Python environment. If you followed the [official instructions](https://huggingface.co/docs/lerobot/en/getting_started_real_world_robot) then you will run `conda activate lerobot`, but you may have also setup your environment differently using `uv venv lerobot`, `.venv/bin/activate`, `poetry shell`, etc..  

**STEP 1: Install this package:**  
```bash
pip install lrvd
```

**STEP 2: Run the LeRobo-Vous daemon and connect the station of your choosing:**   
```bash
# OPTION 1 - TELEOPERATOR (leader)
lrvd \
  --poste=teleop \
  --teleop.type=so101_leader \
  --teleop.port=<YOUR-TELEOP-PORT>
```   

```bash
# OPTION 2 - ROBOT (follower)
lrvd \
  --poste=robot \
  --robot.type=so101_follower \
  --robot.port=<YOUR-ROBOT-PORT> \
  --robot.cameras='{"front": {"index_or_path": "/dev/video0"}}'
```

## What happens next?
1. The first time you run the daemon you will need to [claim your robot](http://brainwavecollective.ai/lrv/robots?claim=)
2. Your device will pair with an available robot or teleoperator, and telepresence will begin automatically (currently locked to your telops/robots only)
3. With the session established you will be able to control the remote robot, or watch the remote teleoperation
4. When you want to disconnect, simply stop the `lrvd` daemon process 

You can view your connected robots and navigate to your active sessions at:  
[http://brainwavecollective.ai/lrv/robots](http://brainwavecollective.ai/lrv/robots)

Only you can see your connected robots.  Connected partners will only see your location and robot name.  

## Design Notes
Connecting two robots across the world (or across the room) requires a complex multi-step negotiation process.  

The robots can't just dial each other directly. Devices aren't aware that each other exists, let alone know who to connect to, or how to connect. In order to make all of this happen intermediate services are necessary to exchange contact information, identify connection paths, and ensure both sides have what they need to communicate directly with each other.  

This daemon is tightly integrated with that process. It abstracts the underlying complexity of matching, NAT traversal and signaling protocols.  It's the best of both worlds; you don't need to know or care how the complicated things happen, but you get to see exactly what code is running locally.  At this time relay servers are not provided but can be made avaialable if you have more complex networking needs.  

![LeRobo-Vous Overview](lrvd_overview.png)  

## Misc.

Although I think this version is ready to be released to the world, please keep in mind that this is a BRAND NEW approach and there is still a ton to be learned. This is NOT a mature process and you should be aware that you are connecting to an experiment in progress. I'll update all the formalities as we make more progess but in the meantime, feel free to contact me or submit issues if you encounter any problems.    

If you think this project is fun please leave a star ⭐ and tell your friends!  

Daniel  
The Brain Wave Collective    

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "lrvd",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "robotics, robots, teleoperation, telepresence, lerobot, webrtc, remote-control, p2p",
    "author": null,
    "author_email": "Daniel Ritchie <daniel@brainwavecollective.ai>",
    "download_url": "https://files.pythonhosted.org/packages/a9/b9/db43128dc624768ed0b8589b2dd2520723224da1c7fdf236887f627894c6/lrvd-0.2.0.tar.gz",
    "platform": null,
    "description": "## LeRobo-Vous Daemon (LRVD) - The Robot Rendezvous \nWelcome to the web of robots.  \n\n> Connect your robot to the world.\n\nThis little daemon is how robots find and meet each other across the internet.  Running `lrvd` will connect your robot and enable you to participate in peer-to-peer robotic telepresence. Simply spin up the daemons and your robots will auto-discover and auto-connect. You'll be given a URL to see the live video feed.   \n\n*Le Robot Rendezvous* is an homage to the LeRobot project by Hugging Face \ud83e\udd17. Viva la open source! Thank you to the team for teaching us so much about robotics and AI.  \n\n## Features\n- \ud83c\udf10 Global network - connect with robots worldwide\n- \ud83d\udce1 Real-time telepresence control\n- \ud83d\ude80 Easy setup and operation\n- \ud83d\udd04 One-time device registration, automatic discovery, automatic pairing\n- \ud83d\udd12 Secure peer-to-peer connections \n\nLeRobo-Vous connects you to a network of robots and teleoperators. This package only supports [LeRobot](https://github.com/huggingface/lerobot) robots.\n\nLRV is designed for simplicity, allowing you to connect with just a single command. The first time you start the daemon there's a quick one-time registration. After that you will be automatically connected to a matching robot anytime you run the service. Default behavior restricts connectivity to your own robots.\n\n> Why the name \"LeRobo-Vous\"?\n\n\u201cRendezvous\u201d is the French word for \"meet\"  \nLeRobot Robots + Rendezvous = **LeRobo-Vous**\n\n## Limitations \nCurrently restricted to SO101 arms. I expect this will work with all LeRobot arms but I'd like to test it first before turning it on for everyone. If you're willing to be the first to try then please contact me on the LeRobot Discord ([I am LeDaniel](https://discord.com/users/769583125579169812)).\n\n## Pre-Requisite Requirements\n- [LeRobot](https://github.com/huggingface/lerobot) already installed and working with compatible robot hardware such as the [SO101](https://github.com/TheRobotStudio/SO-ARM100)  \n\nThat's it! LeRobot is all you need.  \n\n## Installation\n\nBefore you start you'll need to activate your LeRobot Python environment. If you followed the [official instructions](https://huggingface.co/docs/lerobot/en/getting_started_real_world_robot) then you will run `conda activate lerobot`, but you may have also setup your environment differently using `uv venv lerobot`, `.venv/bin/activate`, `poetry shell`, etc..  \n\n**STEP 1: Install this package:**  \n```bash\npip install lrvd\n```\n\n**STEP 2: Run the LeRobo-Vous daemon and connect the station of your choosing:**   \n```bash\n# OPTION 1 - TELEOPERATOR (leader)\nlrvd \\\n  --poste=teleop \\\n  --teleop.type=so101_leader \\\n  --teleop.port=<YOUR-TELEOP-PORT>\n```   \n\n```bash\n# OPTION 2 - ROBOT (follower)\nlrvd \\\n  --poste=robot \\\n  --robot.type=so101_follower \\\n  --robot.port=<YOUR-ROBOT-PORT> \\\n  --robot.cameras='{\"front\": {\"index_or_path\": \"/dev/video0\"}}'\n```\n\n## What happens next?\n1. The first time you run the daemon you will need to [claim your robot](http://brainwavecollective.ai/lrv/robots?claim=)\n2. Your device will pair with an available robot or teleoperator, and telepresence will begin automatically (currently locked to your telops/robots only)\n3. With the session established you will be able to control the remote robot, or watch the remote teleoperation\n4. When you want to disconnect, simply stop the `lrvd` daemon process \n\nYou can view your connected robots and navigate to your active sessions at:  \n[http://brainwavecollective.ai/lrv/robots](http://brainwavecollective.ai/lrv/robots)\n\nOnly you can see your connected robots.  Connected partners will only see your location and robot name.  \n\n## Design Notes\nConnecting two robots across the world (or across the room) requires a complex multi-step negotiation process.  \n\nThe robots can't just dial each other directly. Devices aren't aware that each other exists, let alone know who to connect to, or how to connect. In order to make all of this happen intermediate services are necessary to exchange contact information, identify connection paths, and ensure both sides have what they need to communicate directly with each other.  \n\nThis daemon is tightly integrated with that process. It abstracts the underlying complexity of matching, NAT traversal and signaling protocols.  It's the best of both worlds; you don't need to know or care how the complicated things happen, but you get to see exactly what code is running locally.  At this time relay servers are not provided but can be made avaialable if you have more complex networking needs.  \n\n![LeRobo-Vous Overview](lrvd_overview.png)  \n\n## Misc.\n\nAlthough I think this version is ready to be released to the world, please keep in mind that this is a BRAND NEW approach and there is still a ton to be learned. This is NOT a mature process and you should be aware that you are connecting to an experiment in progress. I'll update all the formalities as we make more progess but in the meantime, feel free to contact me or submit issues if you encounter any problems.    \n\nIf you think this project is fun please leave a star \u2b50 and tell your friends!  \n\nDaniel  \nThe Brain Wave Collective    \n",
    "bugtrack_url": null,
    "license": null,
    "summary": "LRV Daemon: LeRobo-Vous - Peer2Peer robot telepresence for LeRobot",
    "version": "0.2.0",
    "project_urls": {
        "Homepage": "https://brainwavecollective.ai/",
        "Issues": "https://github.com/brainwavecollective/lrv/issues",
        "Repository": "https://github.com/brainwavecollective/lrv"
    },
    "split_keywords": [
        "robotics",
        " robots",
        " teleoperation",
        " telepresence",
        " lerobot",
        " webrtc",
        " remote-control",
        " p2p"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a0bc40a6e8572bc839df94ec95162332636aa543a3ef715fc39e5a150faebc95",
                "md5": "6bcf063864369a80f6e277ab1a6f7323",
                "sha256": "d485bb1ab34913b046ce788bb3110f8198e156949e90ac9a06c7cd017ed2b7fe"
            },
            "downloads": -1,
            "filename": "lrvd-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6bcf063864369a80f6e277ab1a6f7323",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 29579,
            "upload_time": "2025-07-21T23:31:07",
            "upload_time_iso_8601": "2025-07-21T23:31:07.135852Z",
            "url": "https://files.pythonhosted.org/packages/a0/bc/40a6e8572bc839df94ec95162332636aa543a3ef715fc39e5a150faebc95/lrvd-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a9b9db43128dc624768ed0b8589b2dd2520723224da1c7fdf236887f627894c6",
                "md5": "6212567ebc9a8bf178a2fdfd5176aaa7",
                "sha256": "65bd5f4c4f3475746ebc7506f99ade1cf93b03bb3336cbdd03b63ccedf3ddd27"
            },
            "downloads": -1,
            "filename": "lrvd-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "6212567ebc9a8bf178a2fdfd5176aaa7",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 30711,
            "upload_time": "2025-07-21T23:31:08",
            "upload_time_iso_8601": "2025-07-21T23:31:08.514732Z",
            "url": "https://files.pythonhosted.org/packages/a9/b9/db43128dc624768ed0b8589b2dd2520723224da1c7fdf236887f627894c6/lrvd-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-21 23:31:08",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "brainwavecollective",
    "github_project": "lrv",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "lrvd"
}
        
Elapsed time: 0.40172s