robot-operator

command module
v0.1.31 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 18, 2022 License: Apache-2.0 Imports: 23 Imported by: 0

README

robolaunch Kubernetes Robot Operator

robolaunch Kubernetes Robot Operator manages lifecycle of ROS 2 based robots and enables defining, deploying and distributing robots declaratively.

kubectl-get-robots kubectl-describe-robot

Table of Contents

Idea

The main idea of this project is to manage robots as Kubernetes custom resources. As a custom resource, a robot's lifecycle contains following operations and benefits.

  • Robot Lifecycle Management
    • Deployment
    • Update
    • Upgrade
    • Vertical Scaling
      • Adjusting robot's resources
  • Robot Observability
    • ROS observability tools (eg. rViz, Foxglove, ROS Tracker)
    • Exporting ROS nodes, topics, services, actions and bandwidth
  • GPU Acceleration
    • Simulation (Gazebo, Ignition)
    • VDI
  • Geoghraphic Distribution
    • Cloud-powered robot
    • Cloud-connected robot
  • Software development lifecycle
    • Cloud IDE
  • Connectivity
    • Robot-to-Robot Discovery
    • Node-to-Node Discovery

Refer robolaunch.io and project wiki for more architectural details and documentations.

Quick Start

Installation

Make sure your Kubernetes cluster meets prerequisites here.

Label one of your Kubernetes nodes.

kubectl label node <NODE> robolaunch.io/platform=true

Apply release YAML.

Deploy Your First Robot

You can try example robots under config/samples/. For example, to deploy Linorobot 2, apply the YAML below.

# linorobot2.yaml
apiVersion: robot.roboscale.io/v1alpha1
kind: Robot
metadata:
  name: linorobot2
spec:
  robot:
    nodeSelector:
      robolaunch.io/platform: "true"
    distro: foxy
    state: Launched
    tools:
      tracker:
        enabled: true
      cloudIDE:
        enabled: true
      bridge:
        enabled: false
      foxglove:
        enabled: false
      vdi:
        enabled: false
    mode: Single
    resources:
      storage: 15000
      cpuPerContainer: 800m
      memoryPerContainer: 512Mi
    namespacing: false
    workspaces:
    - name: linorobot-ws
      repositories:
      - name: master_br
        url: https://github.com/tunahanertekin/linorobot2
        branch: tuna
        launch:
          launchFilePath: linorobot2_gazebo/launch/gazebo.launch.py
          env:
          - name: LINOROBOT2_BASE
            value: 2wd
      build: Standard
kubectl apply -f linorobot2.yaml

After applying YAML, check robot's status by using:

watch "kubectl get robot linorobot2"

To see events and other robot-specific configurations, run:

kubectl describe robot linorobot2

Aims & Roadmap

  • Extending validation rules
  • Adding more ROS 2 robots
  • Supporting ROS GEMs
  • Extending simulation options
  • Comprehensive integration tests
  • Supporting older ROS distros
  • Supporting ROS topic encryption
  • Developing fleet interfaces for robot
  • Supporting storage classes that supports ReadWriteMany access mode

Contributing

Please see this guide if you want to contribute.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
apis
roboscale.io/v1alpha1
Package v1alpha1 contains API Schema definitions for the robot v1alpha1 API group +kubebuilder:object:generate=true +groupName=robot.roboscale.io
Package v1alpha1 contains API Schema definitions for the robot v1alpha1 API group +kubebuilder:object:generate=true +groupName=robot.roboscale.io
client
generated/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
generated/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
generated/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
generated/clientset/versioned/typed/roboscale.io/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
generated/clientset/versioned/typed/roboscale.io/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
controllers
vdi

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL