rdk

package module
v0.67.0-rc0 Latest Latest
Warning

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

Go to latest
Published: Mar 14, 2025 License: AGPL-3.0 Imports: 0 Imported by: 0

README

RDK (Robot Development Kit)

PkgGoDev

Viam provides an open source robot architecture that provides robotics functionality via simple APIs

Website: viam.com

Documentation: docs.viam.com

Cloud App: app.viam.com

Contact

If you have a bug or an idea, please open an issue here.

Building and Using

Dependencies
  • Install make.
  • Run make setup to install dev environment requirements.
    • This also installs some client side git hooks.
Build and Run
  • Build: make server. Then run ./bin/<your architecture>/server [parameters]
  • Run without building: go run web/cmd/server/main.go [parameters]

Example with a dummy configuration: go run web/cmd/server/main.go -config etc/configs/fake.json.

Examples
SDKs

Multiple SDKs are available for writing client applications that interface with the Viam RDK.

Environment Variable Settings
Environment Variable Behavior Default Value
VIAM_RESOURCE_CONFIGURATION_TIMEOUT Duration for which resources are allowed to (re)configure. 1 minute
VIAM_MODULE_STARTUP_TIMEOUT Duration for which modules are allowed to startup. 5 minutes

Development

Sign the Contribution Agreement before submitting pull requests.

API

The API is defined with Protocol Buffers/gRPC which can be found at https://github.com/viamrobotics/api.

Conventions
Committing
  • Follow git's guidance on commit messages:

Describe your changes in imperative mood, e.g. "make xyzzy do frotz" instead of "[This patch] makes xyzzy do frotz" or "[I] changed xyzzy to do frotz", as if you are giving orders to the codebase to change its behavior. Try to make sure your explanation can be understood without external resources. Instead of giving a URL to a mailing list archive, summarize the relevant points of the discussion.

License check

We run LicenseFinder in CI to verify 3rd-party libraries have approved software licenses. If you add a 3rd-party library to this project, please run make license-check to verify that it can be used.

For maintainers, here is how to make some common license policy changes:

Permit a new license (e.g. MIT):

https://github.com/pivotal/LicenseFinder#permitting-licenses

license_finder permitted_licenses add MIT
Associate a license with a dependency that is not automatically detected or incorrect:

https://github.com/pivotal/LicenseFinder#setting-licenses

license_finder licenses add my_new_dependency MIT
Approve a dependency outright - please include a reason if you do this!

https://github.com/pivotal/LicenseFinder#approving-dependencies

license_finder approvals add my_new_dependency --why="valid reason"

Please refer to the README at https://github.com/pivotal/LicenseFinder for information on how to make other license policy changes.

Windows Support (Experimental)

Windows 10 22H2 and up.

Development Dependencies

Support is not well tested yet.

Known Issues

License

Copyright 2021-2024 Viam Inc.

AGPLv3 - See LICENSE file

Documentation

Overview

Package rdk defines the Robot Development Kit. This is the open-source, on-robot portion of the Viam platform, providing viam-server and the Go SDK.

Directories

Path Synopsis
Package app contains the interfaces that manage a machine fleet with code instead of with the graphical interface of the Viam App.
Package app contains the interfaces that manage a machine fleet with code instead of with the graphical interface of the Viam App.
cli
Package cli contains all business logic needed by the CLI command.
Package cli contains all business logic needed by the CLI command.
Package cloud contains app-related functionality.
Package cloud contains app-related functionality.
components
button
Package button defines a button on your machine.
Package button defines a button on your machine.
Package config defines the structures to configure a robot and its connected parts.
Package config defines the structures to configure a robot and its connected parts.
Package control package for feedback loop controls This is an Experimental package
Package control package for feedback loop controls This is an Experimental package
Package data contains the code involved with Viam's Data Management Platform for automatically collecting component readings from robots.
Package data contains the code involved with Viam's Data Management Platform for automatically collecting component readings from robots.
etc
Package examples contain a few examples of using the RDK.
Package examples contain a few examples of using the RDK.
Package ftdc ...
Package ftdc ...
Package gostream implements a simple server for serving video streams over WebRTC.
Package gostream implements a simple server for serving video streams over WebRTC.
Package grpc provides grpc utilities.
Package grpc provides grpc utilities.
internal
Package logging package contains functionality for viam-server logging.
Package logging package contains functionality for viam-server logging.
Package ml provides some fundamental machine learning primitives.
Package ml provides some fundamental machine learning primitives.
Package module provides services for external resource and logic modules.
Package module provides services for external resource and logic modules.
Package motionplan is a motion planning library.
Package motionplan is a motion planning library.
Package operation manages operation ids
Package operation manages operation ids
Package pointcloud defines a point cloud and provides an implementation for one.
Package pointcloud defines a point cloud and provides an implementation for one.
Package protoutils are a collection of util methods for using proto in rdk
Package protoutils are a collection of util methods for using proto in rdk
Package referenceframe defines the api and does the math of translating between reference frames Useful for if you have a camera, connected to a gripper, connected to an arm, and need to translate the camera reference frame to the arm reference frame, if you've found something in the camera, and want to move the gripper + arm to get it.
Package referenceframe defines the api and does the math of translating between reference frames Useful for if you have a camera, connected to a gripper, connected to an arm, and need to translate the camera reference frame to the arm reference frame, if you've found something in the camera, and want to move the gripper + arm to get it.
Package resource contains types that help identify and classify resources (components/services) of a robot.
Package resource contains types that help identify and classify resources (components/services) of a robot.
Package rimage defines fundamental image and color processing primitives.
Package rimage defines fundamental image and color processing primitives.
Package robot defines the robot which is the root of all robotic parts.
Package robot defines the robot which is the root of all robotic parts.
ros
Package ros implements functionality that bridges the gap between `rdk` and ROS
Package ros implements functionality that bridges the gap between `rdk` and ROS
services
Package session provides support for robot session management.
Package session provides support for robot session management.
Package spatialmath defines spatial mathematical operations.
Package spatialmath defines spatial mathematical operations.
Package testutils implements test utilities.
Package testutils implements test utilities.
Package tunnel contains helpers for a traffic tunneling implementation
Package tunnel contains helpers for a traffic tunneling implementation
Package utils contains all utility functions that currently have no better home than here.
Package utils contains all utility functions that currently have no better home than here.
Package vision implements computer vision algorithms.
Package vision implements computer vision algorithms.
web

Jump to

Keyboard shortcuts

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