roboco


Nameroboco JSON
Version 0.0.4 PyPI version JSON
download
home_pageNone
SummaryA tool to generate Dockerfiles for use in robotics, as well as a script to build and enter these containers, with support for graphical applications, GPU passthrough, realtime scheduling, host networking and full device access.
upload_time2023-05-30 02:54:14
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseNone
keywords containers robotics
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# Robot Containers
This repository contains Dockerfiles for building containers for [various robots](#available-containers).
It also includes a python script `run.py` that wraps the `docker` command to enable:

- building, starting and entering the container in one step
- graphical applications
- nvidia GPU passthrough
- realtime scheduling
- host networking
- full external device access (USB, cameras, etc.)

Finally, it includes `roboco`, a script for generating a new project from the included Dockerfiles.

[![CI - Test](https://github.com/monashrobotics/robot_containers/actions/workflows/ci.yml/badge.svg)](https://github.com/monashrobotics/robot_containers/actions/workflows/ci.yml)
[![CI - Docker Images](https://github.com/monashrobotics/robot_containers/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/monashrobotics/robot_containers/actions/workflows/docker-publish.yml)
[![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v0.json)](https://github.com/charliermarsh/ruff) 
[![code style - Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) 
[![types - Mypy](https://img.shields.io/badge/types-Mypy-blue.svg)](https://github.com/python/mypy) [![License - MIT](https://img.shields.io/badge/license-MIT-9400d3.svg)](https://spdx.org/licenses/)
[![image](https://img.shields.io/pypi/v/roboco.svg)](https://pypi.python.org/pypi/roboco)
[![image](https://img.shields.io/pypi/pyversions/roboco.svg)](https://pypi.python.org/pypi/roboco)

## Table of Contents

  * [Requirements](#requirements)
  * [Installation](#installation)
  * [Usage](#usage)
    * [Adding a container to your project](#adding-a-container-to-your-project)
    * [Running the container](#running-the-container)
    * [Customising the container](#customising-the-container)
* [Available Dockerfile Templates](#available-dockerfile-templates)
  * [Hardware Drivers](#hardware-drivers)
  * [Software Snippets](#software-snippets)
* [Contributing](#contributing)
* [Troubleshooting](#troubleshooting)

## Requirements

### Docker
- Tested with Docker 20.10.23. 

- Install on Ubuntu using `sudo apt install docker.io` (other installation methods may not play well with the nvidia-docker2 runtime.)

- Follow "Manage Docker as a non-root user" at https://docs.docker.com/engine/install/linux-postinstall/

### nvidia-docker2 (for GPU support, optional)
- Install nvidia-docker2 by following https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit

### VSCode - Dev Containers Extension (Optional)
- Tested with v0.292.0 of Dev Containers extension https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers

## Installation

### Using pip
```
pip install roboco
```

### Using git
```
git clone https://github.com/monashrobotics/robot_containers.git
cd robot_containers
pip install .
```

## Usage
### Adding a container to your project
```
roboco init
```

Follow the prompts to select the robot type and additional features.

Once completed, there will be two new files in your current directory: `Dockerfile` and `run.py`.

### Running the container

Build the image and run the container using:
```
./run.py
```

### Customising the container

The `Dockerfile` can be edited to add additional dependencies or change the base image.

When you make changes to the `Dockerfile`, you will need to rebuild the image using:
```
./run.py build
```
Then remove the old container and start a new one:
```
./run.py rm
./run.py
```

## Available Dockerfile Templates

Dockerfile templates are available for the following robot / ROS / Ubuntu combinations.

| Robot / ROS Distro (Ubuntu OS) | ROS 1 Noetic (20.04) | ROS 2 Foxy (20.04) | ROS 2 Humble (22.04)
| --- | :---: | :---: | :---: |
| ABB YuMi | WIP | ❌ | ❌ |
| Baxter | WIP | ❌ | ❌ |
| Fetch | WIP | ❌ | ❌ |
| Jackal | WIP | WIP | WIP |
| Panda | WIP | ❌ | ❌ |
| Ridgeback | WIP | ❌ | ❌ |
| UR5 | ✅ | ❌ | WIP |

Generic ROS 1 and ROS 2 Dockerfile templates for the following distributions are also available:

- ROS 1 Kinetic (16.04)
- ROS 1 Melodic (18.04)
- ROS 1 Noetic (20.04)

- ROS 2 Foxy (20.04)
- ROS 2 Galactic (20.04)
- ROS 2 Humble (22.04)

### Hardware Drivers

Snippets are available for these hardware drivers and ROS distro combinations:

| Driver / ROS Distro (Ubuntu OS) | ROS 1 Noetic (20.04) | ROS 2 Foxy (20.04) | ROS 2 Humble (22.04)
| --- | :---: | :---: | :---: |
| RealSense Camera | WIP | WIP | WIP |
| Velodyne LiDAR | WIP | WIP | WIP |
| Robotiq 2F-85 Gripper | WIP | ❌ | ❌ |
| Robotiq FT-300 Force-Torque Sensor | WIP | ❌ | ❌ |

### Software Snippets

Snippets are available for the following software packages:

| Software | ROS 1 Noetic (20.04) | ROS 2 Foxy (20.04) | ROS 2 Humble (22.04)
| --- | :---: | :---: | :---: |
| pytorch | WIP | WIP | WIP |

## Contributing
If there's a robot, or hardware driver that you'd like to see supported, please open an issue or pull request.
See [CONTRIBUTING.md](CONTRIBUTING.md)

## Troubleshooting
See [docs/troubleshooting.md](docs/troubleshooting.md)
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "roboco",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "containers,robotics",
    "author": null,
    "author_email": "Owen Brooks <owen.h.brooks@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/9e/a8/bca4c0cf78fc5404ce3bda658a9dd3200dde6097e6835f327cf9ee955e2c/roboco-0.0.4.tar.gz",
    "platform": null,
    "description": "\n# Robot Containers\nThis repository contains Dockerfiles for building containers for [various robots](#available-containers).\nIt also includes a python script `run.py` that wraps the `docker` command to enable:\n\n- building, starting and entering the container in one step\n- graphical applications\n- nvidia GPU passthrough\n- realtime scheduling\n- host networking\n- full external device access (USB, cameras, etc.)\n\nFinally, it includes `roboco`, a script for generating a new project from the included Dockerfiles.\n\n[![CI - Test](https://github.com/monashrobotics/robot_containers/actions/workflows/ci.yml/badge.svg)](https://github.com/monashrobotics/robot_containers/actions/workflows/ci.yml)\n[![CI - Docker Images](https://github.com/monashrobotics/robot_containers/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/monashrobotics/robot_containers/actions/workflows/docker-publish.yml)\n[![linting - Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v0.json)](https://github.com/charliermarsh/ruff) \n[![code style - Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) \n[![types - Mypy](https://img.shields.io/badge/types-Mypy-blue.svg)](https://github.com/python/mypy) [![License - MIT](https://img.shields.io/badge/license-MIT-9400d3.svg)](https://spdx.org/licenses/)\n[![image](https://img.shields.io/pypi/v/roboco.svg)](https://pypi.python.org/pypi/roboco)\n[![image](https://img.shields.io/pypi/pyversions/roboco.svg)](https://pypi.python.org/pypi/roboco)\n\n## Table of Contents\n\n  * [Requirements](#requirements)\n  * [Installation](#installation)\n  * [Usage](#usage)\n    * [Adding a container to your project](#adding-a-container-to-your-project)\n    * [Running the container](#running-the-container)\n    * [Customising the container](#customising-the-container)\n* [Available Dockerfile Templates](#available-dockerfile-templates)\n  * [Hardware Drivers](#hardware-drivers)\n  * [Software Snippets](#software-snippets)\n* [Contributing](#contributing)\n* [Troubleshooting](#troubleshooting)\n\n## Requirements\n\n### Docker\n- Tested with Docker 20.10.23. \n\n- Install on Ubuntu using `sudo apt install docker.io` (other installation methods may not play well with the nvidia-docker2 runtime.)\n\n- Follow \"Manage Docker as a non-root user\" at https://docs.docker.com/engine/install/linux-postinstall/\n\n### nvidia-docker2 (for GPU support, optional)\n- Install nvidia-docker2 by following https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit\n\n### VSCode - Dev Containers Extension (Optional)\n- Tested with v0.292.0 of Dev Containers extension https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers\n\n## Installation\n\n### Using pip\n```\npip install roboco\n```\n\n### Using git\n```\ngit clone https://github.com/monashrobotics/robot_containers.git\ncd robot_containers\npip install .\n```\n\n## Usage\n### Adding a container to your project\n```\nroboco init\n```\n\nFollow the prompts to select the robot type and additional features.\n\nOnce completed, there will be two new files in your current directory: `Dockerfile` and `run.py`.\n\n### Running the container\n\nBuild the image and run the container using:\n```\n./run.py\n```\n\n### Customising the container\n\nThe `Dockerfile` can be edited to add additional dependencies or change the base image.\n\nWhen you make changes to the `Dockerfile`, you will need to rebuild the image using:\n```\n./run.py build\n```\nThen remove the old container and start a new one:\n```\n./run.py rm\n./run.py\n```\n\n## Available Dockerfile Templates\n\nDockerfile templates are available for the following robot / ROS / Ubuntu combinations.\n\n| Robot / ROS Distro (Ubuntu OS) | ROS 1 Noetic (20.04) | ROS 2 Foxy (20.04) | ROS 2 Humble (22.04)\n| --- | :---: | :---: | :---: |\n| ABB YuMi | WIP | \u274c | \u274c |\n| Baxter | WIP | \u274c | \u274c |\n| Fetch | WIP | \u274c | \u274c |\n| Jackal | WIP | WIP | WIP |\n| Panda | WIP | \u274c | \u274c |\n| Ridgeback | WIP | \u274c | \u274c |\n| UR5 | \u2705 | \u274c | WIP |\n\nGeneric ROS 1 and ROS 2 Dockerfile templates for the following distributions are also available:\n\n- ROS 1 Kinetic (16.04)\n- ROS 1 Melodic (18.04)\n- ROS 1 Noetic (20.04)\n\n- ROS 2 Foxy (20.04)\n- ROS 2 Galactic (20.04)\n- ROS 2 Humble (22.04)\n\n### Hardware Drivers\n\nSnippets are available for these hardware drivers and ROS distro combinations:\n\n| Driver / ROS Distro (Ubuntu OS) | ROS 1 Noetic (20.04) | ROS 2 Foxy (20.04) | ROS 2 Humble (22.04)\n| --- | :---: | :---: | :---: |\n| RealSense Camera | WIP | WIP | WIP |\n| Velodyne LiDAR | WIP | WIP | WIP |\n| Robotiq 2F-85 Gripper | WIP | \u274c | \u274c |\n| Robotiq FT-300 Force-Torque Sensor | WIP | \u274c | \u274c |\n\n### Software Snippets\n\nSnippets are available for the following software packages:\n\n| Software | ROS 1 Noetic (20.04) | ROS 2 Foxy (20.04) | ROS 2 Humble (22.04)\n| --- | :---: | :---: | :---: |\n| pytorch | WIP | WIP | WIP |\n\n## Contributing\nIf there's a robot, or hardware driver that you'd like to see supported, please open an issue or pull request.\nSee [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## Troubleshooting\nSee [docs/troubleshooting.md](docs/troubleshooting.md)",
    "bugtrack_url": null,
    "license": null,
    "summary": "A tool to generate Dockerfiles for use in robotics, as well as a script to build and enter these containers, with support for graphical applications, GPU passthrough, realtime scheduling, host networking and full device access.",
    "version": "0.0.4",
    "project_urls": {
        "Documentation": "https://github.com/monashrobotics/robot_containers#readme",
        "Issues": "https://github.com/monashrobotics/robot_containers/issues",
        "Source": "https://github.com/monashrobotics/robot_containers"
    },
    "split_keywords": [
        "containers",
        "robotics"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8390704a75e1379a68bf33042c5118bbc6e748dab696258365214f0f10fe633e",
                "md5": "312d6e2fe6255b8a8ee9ac926f00faeb",
                "sha256": "e7fca253a3f9d81a9f282650dc123100a7e0c450541250b95562794f0b3fcda4"
            },
            "downloads": -1,
            "filename": "roboco-0.0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "312d6e2fe6255b8a8ee9ac926f00faeb",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 23170,
            "upload_time": "2023-05-30T02:54:16",
            "upload_time_iso_8601": "2023-05-30T02:54:16.801385Z",
            "url": "https://files.pythonhosted.org/packages/83/90/704a75e1379a68bf33042c5118bbc6e748dab696258365214f0f10fe633e/roboco-0.0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9ea8bca4c0cf78fc5404ce3bda658a9dd3200dde6097e6835f327cf9ee955e2c",
                "md5": "9173df6a1dd3b62a0ec0a68e45fbb649",
                "sha256": "c33fc958f7b04908b73417ab4eb68aa0718a7f5360cb141ff7c41d8c91f18d65"
            },
            "downloads": -1,
            "filename": "roboco-0.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "9173df6a1dd3b62a0ec0a68e45fbb649",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 46054,
            "upload_time": "2023-05-30T02:54:14",
            "upload_time_iso_8601": "2023-05-30T02:54:14.636622Z",
            "url": "https://files.pythonhosted.org/packages/9e/a8/bca4c0cf78fc5404ce3bda658a9dd3200dde6097e6835f327cf9ee955e2c/roboco-0.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-30 02:54:14",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "monashrobotics",
    "github_project": "robot_containers#readme",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "roboco"
}
        
Elapsed time: 0.07422s