README
¶
RDK (Robot Development Kit)
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
- Discord: https://discord.gg/viam
- Support: https://support.viam.com
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
- CustomResources - example for creating custom resources.
- SimpleServer - example for creating a simple custom server.
SDKs
Multiple SDKs are available for writing client applications that interface with the Viam RDK.
- Go: Provided by this repository here. Documentation can be found here
- Python: Docs, Repository
- Typescript: Docs, Repository
- C++: Docs, Repository
- Rust: Repository
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
- Write tests!
- Follow this Go Style Guide.
- Run
make lint
andmake test
. - Run
make build
and commit resulting frontend artifacts. - Use imperative mood for commits (see Git Documentation).
- Prefer metric SI prefixes where possible (e.g. millis) https://www.nist.gov/pml/weights-and-measures/metric-si-prefixes. The type of measurement (e.g. meters) is not necessary if it is implied (e.g. rulerLengthMillis).
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
- bash (from https://gitforwindows.org/ is good)
- gcc (from https://www.msys2.org/
mingw-w64-x86_64-toolchain
is good)
Support is not well tested yet.
Known Issues
- motion planning is not supported yet (https://viam.atlassian.net/browse/RSDK-1772).
- video streaming is not supported yet (https://viam.atlassian.net/browse/RSDK-1771).
- rpc: ICE between local connections found via ICE mDNS appear to be flaky in the establishment phase.
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. |
Package cli contains all business logic needed by the CLI command.
|
Package cli contains all business logic needed by the CLI command. |
module_generate/modulegen
Package modulegen contains defined types used for module generation
|
Package modulegen contains defined types used for module generation |
module_generate/scripts
Package scripts contains scripts that generate method stubs for modules
|
Package scripts contains scripts that generate method stubs for modules |
viam
Package main is the CLI command itself.
|
Package main is the CLI command itself. |
Package cloud contains app-related functionality.
|
Package cloud contains app-related functionality. |
components
|
|
arm
Package arm defines the arm that a robot uses to manipulate objects.
|
Package arm defines the arm that a robot uses to manipulate objects. |
arm/fake
Package fake implements a fake arm.
|
Package fake implements a fake arm. |
arm/register
Package register registers all relevant arms
|
Package register registers all relevant arms |
arm/universalrobots
Package universalrobots implements the UR arm from Universal Robots.
|
Package universalrobots implements the UR arm from Universal Robots. |
arm/wrapper
Package wrapper is a package that defines an implementation that wraps a partially implemented arm
|
Package wrapper is a package that defines an implementation that wraps a partially implemented arm |
audioinput
Package audioinput defines an audio capturing device.
|
Package audioinput defines an audio capturing device. |
audioinput/fake
Package fake implements a fake audio input.
|
Package fake implements a fake audio input. |
audioinput/microphone
Package microphone implements a microphone audio input.
|
Package microphone implements a microphone audio input. |
audioinput/register
Package register registers all relevant audio inputs and also API specific functions
|
Package register registers all relevant audio inputs and also API specific functions |
base
Package base defines the base that a robot uses to move around.
|
Package base defines the base that a robot uses to move around. |
base/fake
Package fake implements a fake base.
|
Package fake implements a fake base. |
base/kinematicbase
Package kinematicbase contains wrappers that augment bases with information needed for higher level control over the base
|
Package kinematicbase contains wrappers that augment bases with information needed for higher level control over the base |
base/register
Package register registers all relevant bases
|
Package register registers all relevant bases |
base/sensorcontrolled
Package sensorcontrolled base implements a base with feedback control from a movement sensor
|
Package sensorcontrolled base implements a base with feedback control from a movement sensor |
base/wheeled
Package wheeled implements some bases, like a wheeled base.
|
Package wheeled implements some bases, like a wheeled base. |
board
Package board defines the interfaces that typically live on a single-board computer such as a Raspberry Pi.
|
Package board defines the interfaces that typically live on a single-board computer such as a Raspberry Pi. |
board/esp32
Package esp32 exists for the sole purpose of exposing the esp32 as a micro-rdk configuration in app.viam.com The ESP32 is supported by the micro-rdk only (https://github.com/viamrobotics/micro-rdk)
|
Package esp32 exists for the sole purpose of exposing the esp32 as a micro-rdk configuration in app.viam.com The ESP32 is supported by the micro-rdk only (https://github.com/viamrobotics/micro-rdk) |
board/fake
Package fake implements a fake board.
|
Package fake implements a fake board. |
board/genericlinux
Package genericlinux implements a Linux-based board making heavy use of sysfs (https://en.wikipedia.org/wiki/Sysfs).
|
Package genericlinux implements a Linux-based board making heavy use of sysfs (https://en.wikipedia.org/wiki/Sysfs). |
board/genericlinux/buses
Package buses is for I2C and SPI boards that run Linux.
|
Package buses is for I2C and SPI boards that run Linux. |
board/mcp3008helper
Package mcp3008helper is shared code for hooking an MCP3008 ADC up to a board.
|
Package mcp3008helper is shared code for hooking an MCP3008 ADC up to a board. |
board/pinwrappers
Package pinwrappers implements interfaces that wrap the basic board interface and return types, and expands them with new methods and interfaces for the built in board models.
|
Package pinwrappers implements interfaces that wrap the basic board interface and return types, and expands them with new methods and interfaces for the built in board models. |
board/register
Package register registers all relevant Boards and also API specific functions
|
Package register registers all relevant Boards and also API specific functions |
button
Package button defines a button on your machine.
|
Package button defines a button on your machine. |
button/fake
Package fake implements a fake button.
|
Package fake implements a fake button. |
button/register
Package register registers all relevant buttons and also API specific functions
|
Package register registers all relevant buttons and also API specific functions |
camera
Package camera defines an image capturing device.
|
Package camera defines an image capturing device. |
camera/fake
Package fake implements a fake camera which always returns the same image with a user specified resolution.
|
Package fake implements a fake camera which always returns the same image with a user specified resolution. |
camera/ffmpeg
Package ffmpeg provides an implementation for an ffmpeg based camera
|
Package ffmpeg provides an implementation for an ffmpeg based camera |
camera/register
Package register registers all relevant cameras and also API specific functions
|
Package register registers all relevant cameras and also API specific functions |
camera/replaypcd
Package replaypcd implements a replay camera that can return point cloud data.
|
Package replaypcd implements a replay camera that can return point cloud data. |
camera/rtppassthrough
Package rtppassthrough defines a Source of RTP packets
|
Package rtppassthrough defines a Source of RTP packets |
camera/transformpipeline
Package transformpipeline defines image sources that apply transforms on images, and can be composed into an image transformation pipeline.
|
Package transformpipeline defines image sources that apply transforms on images, and can be composed into an image transformation pipeline. |
camera/videosource
Package videosource implements webcam.
|
Package videosource implements webcam. |
encoder
Package encoder implements the encoder component.
|
Package encoder implements the encoder component. |
encoder/fake
Package fake implements a fake encoder.
|
Package fake implements a fake encoder. |
encoder/incremental
Package incremental implements an incremental encoder
|
Package incremental implements an incremental encoder |
encoder/register
Package register registers all relevant MovementSensors
|
Package register registers all relevant MovementSensors |
encoder/single
Package single implements a single-wire odometer, such as LM393, as an encoder.
|
Package single implements a single-wire odometer, such as LM393, as an encoder. |
gantry
Package gantry contains a gRPC based gantry client.
|
Package gantry contains a gRPC based gantry client. |
gantry/fake
Package fake implements a fake gantry.
|
Package fake implements a fake gantry. |
gantry/multiaxis
Package multiaxis implements a multi-axis gantry.
|
Package multiaxis implements a multi-axis gantry. |
gantry/register
Package register registers all relevant gantries
|
Package register registers all relevant gantries |
gantry/singleaxis
Package singleaxis implements a single-axis gantry.
|
Package singleaxis implements a single-axis gantry. |
generic
Package generic contains a gRPC based generic client.
|
Package generic contains a gRPC based generic client. |
generic/fake
Package fake implements a fake generic component.
|
Package fake implements a fake generic component. |
generic/register
Package register registers the generic component
|
Package register registers the generic component |
gripper
Package gripper contains a gRPC based gripper client.
|
Package gripper contains a gRPC based gripper client. |
gripper/fake
Package fake implements a fake gripper.
|
Package fake implements a fake gripper. |
gripper/register
Package register registers all relevant grippers and also API specific functions
|
Package register registers all relevant grippers and also API specific functions |
input
Package input contains a gRPC based input controller client.
|
Package input contains a gRPC based input controller client. |
input/fake
Package fake implements a fake input controller.
|
Package fake implements a fake input controller. |
input/gamepad
Package gamepad implements a linux gamepad as an input controller.
|
Package gamepad implements a linux gamepad as an input controller. |
input/gpio
Package gpio implements a gpio/adc based input.Controller.
|
Package gpio implements a gpio/adc based input.Controller. |
input/mux
Package mux implements a multiplexed input controller.
|
Package mux implements a multiplexed input controller. |
input/register
Package register registers all relevant inputs
|
Package register registers all relevant inputs |
input/webgamepad
Package webgamepad implements a web based input controller.
|
Package webgamepad implements a web based input controller. |
motor
Package motor contains a gRPC bases motor client
|
Package motor contains a gRPC bases motor client |
motor/fake
Package fake implements a fake motor.
|
Package fake implements a fake motor. |
motor/gpio
Package gpio implements a GPIO based motor.
|
Package gpio implements a GPIO based motor. |
motor/gpiostepper
Package gpiostepper implements a GPIO based stepper motor
|
Package gpiostepper implements a GPIO based stepper motor |
motor/register
Package register registers all relevant motors
|
Package register registers all relevant motors |
movementsensor
Package movementsensor defines the interfaces of a MovementSensor.
|
Package movementsensor defines the interfaces of a MovementSensor. |
movementsensor/fake
Package fake is a fake MovementSensor for testing
|
Package fake is a fake MovementSensor for testing |
movementsensor/merged
Package merged implements a movementsensor combining movement data from other sensors
|
Package merged implements a movementsensor combining movement data from other sensors |
movementsensor/register
Package register registers all relevant MovementSensors
|
Package register registers all relevant MovementSensors |
movementsensor/replay
Package replay implements a replay movement sensor that can return motion data.
|
Package replay implements a replay movement sensor that can return motion data. |
movementsensor/wheeledodometry
Package wheeledodometry implements an odometery estimate from an encoder wheeled base.
|
Package wheeledodometry implements an odometery estimate from an encoder wheeled base. |
posetracker
Package posetracker contains the interface and gRPC infrastructure for a pose tracker component.
|
Package posetracker contains the interface and gRPC infrastructure for a pose tracker component. |
powersensor
Package powersensor defines the interfaces of a powersensor.
|
Package powersensor defines the interfaces of a powersensor. |
powersensor/fake
Package fake is a fake PowerSensor for testing
|
Package fake is a fake PowerSensor for testing |
powersensor/register
Package register registers all relevant motors
|
Package register registers all relevant motors |
register
Package register registers all components
|
Package register registers all components |
sensor
Package sensor contains a gRPC based sensor client.
|
Package sensor contains a gRPC based sensor client. |
sensor/fake
Package fake implements a fake Sensor.
|
Package fake implements a fake Sensor. |
sensor/register
Package register registers all relevant Sensors
|
Package register registers all relevant Sensors |
servo
Package servo contains a gRPC bases servo client
|
Package servo contains a gRPC bases servo client |
servo/fake
Package fake implements a fake servo.
|
Package fake implements a fake servo. |
servo/gpio
Package gpio implements a pin based servo
|
Package gpio implements a pin based servo |
servo/register
Package register registers all relevant servos
|
Package register registers all relevant servos |
switch
Package toggleswitch contains a gRPC based switch client.
|
Package toggleswitch contains a gRPC based switch client. |
switch/fake
Package fake implements fake switches with different position counts.
|
Package fake implements fake switches with different position counts. |
switch/register
Package register registers all relevant switches and also API specific functions
|
Package register registers all relevant switches and also API specific functions |
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. |
testutils
Package testutils helpers for testing the config retrievial.
|
Package testutils helpers for testing the config retrievial. |
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. |
testutils
Package data contains the code for automatically collecting readings from robots.
|
Package data contains the code for automatically collecting readings from robots. |
etc
|
|
analyzecoverage
Package main is a go test analyzer that publishes results to a MongoDB database.
|
Package main is a go test analyzer that publishes results to a MongoDB database. |
analyzetests
Package main is a go test analyzer that publishes results to a MongoDB database.
|
Package main is a go test analyzer that publishes results to a MongoDB database. |
subsystem_manifest
Package main implements the subsystem_manifest generator
|
Package main implements the subsystem_manifest generator |
Package examples contain a few examples of using the RDK.
|
Package examples contain a few examples of using the RDK. |
customresources/apis/gizmoapi
Package gizmoapi implements the acme:component:gizmo API, a demonstraction API showcasing the available GRPC method types.
|
Package gizmoapi implements the acme:component:gizmo API, a demonstraction API showcasing the available GRPC method types. |
customresources/apis/proto/api/component/gizmo/v1
Package v1 is a reverse proxy.
|
Package v1 is a reverse proxy. |
customresources/apis/proto/api/service/summation/v1
Package v1 is a reverse proxy.
|
Package v1 is a reverse proxy. |
customresources/apis/summationapi
Package summationapi defines a simple number summing service API for demonstration purposes.
|
Package summationapi defines a simple number summing service API for demonstration purposes. |
customresources/demos/complexmodule
Package main is a module, which serves all four custom model types in the customresources examples, including both custom APIs.
|
Package main is a module, which serves all four custom model types in the customresources examples, including both custom APIs. |
customresources/demos/complexmodule/client
Package main tests out all four custom models in the complexmodule.
|
Package main tests out all four custom models in the complexmodule. |
customresources/demos/multiplemodules/client
Package main tests out all 2 custom models in the multiplemodules.
|
Package main tests out all 2 custom models in the multiplemodules. |
customresources/demos/multiplemodules/gizmomodule
Package main is a module, which serves the mygizmosummer custom model type in the customresources examples.
|
Package main is a module, which serves the mygizmosummer custom model type in the customresources examples. |
customresources/demos/multiplemodules/summationmodule
Package main is a module, which serves the mysum custom model type in the customresources examples.
|
Package main is a module, which serves the mysum custom model type in the customresources examples. |
customresources/demos/remoteserver
Package main is a standalone server (for use as a remote) serving a demo Gizmo component.
|
Package main is a standalone server (for use as a remote) serving a demo Gizmo component. |
customresources/demos/remoteserver/client
Package main tests out a Gizmo client.
|
Package main tests out a Gizmo client. |
customresources/demos/rtppassthrough
Package main implements a fake passthrough camera module
|
Package main implements a fake passthrough camera module |
customresources/demos/simplemodule
Package main is a module with a built-in "counter" component model, that will simply track numbers.
|
Package main is a module with a built-in "counter" component model, that will simply track numbers. |
customresources/demos/simplemodule/client
Package main tests out all four custom models in the complexmodule.
|
Package main tests out all four custom models in the complexmodule. |
customresources/models/mybase
Package mybase implements a base that only supports SetPower (basic forward/back/turn controls.)
|
Package mybase implements a base that only supports SetPower (basic forward/back/turn controls.) |
customresources/models/mydiscovery
Package mydiscovery implements a discovery that returns some fake components.
|
Package mydiscovery implements a discovery that returns some fake components. |
customresources/models/mygizmo
Package mygizmo implements an acme:component:gizmo, a demonstration component that simply shows the various methods available in grpc.
|
Package mygizmo implements an acme:component:gizmo, a demonstration component that simply shows the various methods available in grpc. |
customresources/models/mygizmosummer
Package mygizmosummer implements an acme:component:gizmo and depends on another custom API.
|
Package mygizmosummer implements an acme:component:gizmo and depends on another custom API. |
customresources/models/mynavigation
Package mynavigation contains an example navigation service that only stores waypoints, and returns a fixed, configurable location.
|
Package mynavigation contains an example navigation service that only stores waypoints, and returns a fixed, configurable location. |
customresources/models/mysum
Package mysum implements an acme:service:summation, a demo service which sums (or subtracts) a given list of numbers.
|
Package mysum implements an acme:service:summation, a demo service which sums (or subtracts) a given list of numbers. |
simpleserver
Package main shows a simple server with a fake arm.
|
Package main shows a simple server with a fake arm. |
Package ftdc ...
|
Package ftdc ... |
cmd
main provides a CLI tool for viewing `.ftdc` files emitted by the `viam-server`.
|
main provides a CLI tool for viewing `.ftdc` files emitted by the `viam-server`. |
sys
Package sys provides functionality for gathering system metrics in an FTDC compliant API.
|
Package sys provides functionality for gathering system metrics in an FTDC compliant API. |
Package gostream implements a simple server for serving video streams over WebRTC.
|
Package gostream implements a simple server for serving video streams over WebRTC. |
codec
Package codec defines the encoder and factory interfaces for encoding video frames and audio chunks.
|
Package codec defines the encoder and factory interfaces for encoding video frames and audio chunks. |
codec/opus
Package opus contains the opus video codec.
|
Package opus contains the opus video codec. |
codec/x264
Package x264 contains the x264 video codec.
|
Package x264 contains the x264 video codec. |
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. |
modmanager
Package modmanager provides the module manager for a robot.
|
Package modmanager provides the module manager for a robot. |
modmanager/options
Package modmanageroptions provides Options for configuring a mod manager
|
Package modmanageroptions provides Options for configuring a mod manager |
modmaninterface
Package modmaninterface abstracts the manager interface to avoid an import cycle/loop.
|
Package modmaninterface abstracts the manager interface to avoid an import cycle/loop. |
multiversionmodule
Package main is a module designed to help build tests for reconfiguration logic between module versions
|
Package main is a module designed to help build tests for reconfiguration logic between module versions |
testmodule
Package main is a module for testing, with an inline generic component to return internal data and perform other test functions.
|
Package main is a module for testing, with an inline generic component to return internal data and perform other test functions. |
testmodule2
Package main is a module for testing, with an inline generic component to return internal data and perform other test functions.
|
Package main is a module for testing, with an inline generic component to return internal data and perform other test functions. |
Package motionplan is a motion planning library.
|
Package motionplan is a motion planning library. |
ik
Package ik contains tols for doing gradient-descent based inverse kinematics, allowing for the minimization of arbitrary metrics based on the output of calling `Transform` on the given frame.
|
Package ik contains tols for doing gradient-descent based inverse kinematics, allowing for the minimization of arbitrary metrics based on the output of calling `Transform` on the given frame. |
tpspace
Package tpspace defines an assortment of precomputable trajectories which can be used to plan nonholonomic 2d motion
|
Package tpspace defines an assortment of precomputable trajectories which can be used to plan nonholonomic 2d motion |
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. |
urdf
Package urdf provides functions which enable *.urdf files to be used within RDK
|
Package urdf provides functions which enable *.urdf files to be used within RDK |
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. |
depthadapter
Package depthadapter is a simple package that turns a DepthMap into a point cloud using intrinsic parameters of a camera.
|
Package depthadapter is a simple package that turns a DepthMap into a point cloud using intrinsic parameters of a camera. |
transform
Package transform provides image transformation utilities relying on camera parameters.
|
Package transform provides image transformation utilities relying on camera parameters. |
transform/cmd/depth_to_color
Get the coordinates of a depth pixel in the depth map in the reference frame of the color image $./depth_to_color -conf=/path/to/intrinsics/extrinsic/file X Y Z
|
Get the coordinates of a depth pixel in the depth map in the reference frame of the color image $./depth_to_color -conf=/path/to/intrinsics/extrinsic/file X Y Z |
transform/cmd/extrinsic_calibration
Given at least 4 corresponding points, and the intrinsic matrices of both cameras, computes the rigid transform (rotation + translation) that would be the extrinsic transformation from camera 1 to camera 2.
|
Given at least 4 corresponding points, and the intrinsic matrices of both cameras, computes the rigid transform (rotation + translation) that would be the extrinsic transformation from camera 1 to camera 2. |
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. |
client
Package client contains a gRPC based robot.Robot client.
|
Package client contains a gRPC based robot.Robot client. |
framesystem
Package framesystem defines the frame system service which is responsible for managing a stateful frame system
|
Package framesystem defines the frame system service which is responsible for managing a stateful frame system |
impl
Package robotimpl defines implementations of robot.Robot and robot.LocalRobot.
|
Package robotimpl defines implementations of robot.Robot and robot.LocalRobot. |
packages
Package packages contains utilities and manager to sync Viam packages defined in the RDK config from the Viam app to the local robot.
|
Package packages contains utilities and manager to sync Viam packages defined in the RDK config from the Viam app to the local robot. |
packages/testutils
Package testutils is test helpers for packages.
|
Package testutils is test helpers for packages. |
server
Package server contains a gRPC based robot.Robot server implementation.
|
Package server contains a gRPC based robot.Robot server implementation. |
web
Package web provides gRPC/REST/GUI APIs to control and monitor a robot.
|
Package web provides gRPC/REST/GUI APIs to control and monitor a robot. |
web/options
Package weboptions provides Options for configuring a web server
|
Package weboptions provides Options for configuring a web server |
web/stream
Package webstream provides controls for streaming from the web server.
|
Package webstream provides controls for streaming from the web server. |
web/stream/camera
Package camera provides utilities for working with camera resources in the context of streaming.
|
Package camera provides utilities for working with camera resources in the context of streaming. |
web/stream/state
Package state controls the source of the RTP packets being written to the stream's subscribers and ensures there is only one active at a time while there are peer connections to receive RTP packets.
|
Package state controls the source of the RTP packets being written to the stream's subscribers and ensures there is only one active at a time while there are peer connections to receive RTP packets. |
Package ros implements functionality that bridges the gap between `rdk` and ROS
|
Package ros implements functionality that bridges the gap between `rdk` and ROS |
rosbag_parser/cmd
Package main is a rosbag parser.
|
Package main is a rosbag parser. |
services
|
|
baseremotecontrol
Package baseremotecontrol implements a remote control for a base.
|
Package baseremotecontrol implements a remote control for a base. |
baseremotecontrol/builtin
Package builtin implements a remote control for a base.
|
Package builtin implements a remote control for a base. |
baseremotecontrol/register
Package register registers all relevant baseremotecontrol models and also API specific functions
|
Package register registers all relevant baseremotecontrol models and also API specific functions |
datamanager
Package datamanager contains a gRPC based datamanager service server
|
Package datamanager contains a gRPC based datamanager service server |
datamanager/builtin
Package builtin captures data from a robot's components, persists the captured data to disk and sync it to the cloud when possible.
|
Package builtin captures data from a robot's components, persists the captured data to disk and sync it to the cloud when possible. |
datamanager/builtin/capture
Package capture implements datacapture for the builtin datamanger
|
Package capture implements datacapture for the builtin datamanger |
datamanager/builtin/cmd
package main prints a disk summary of the builtin data manager's capture directory or additional sync paths It exists purely as a convenience utilty for viam developers & solutions engineers.
|
package main prints a disk summary of the builtin data manager's capture directory or additional sync paths It exists purely as a convenience utilty for viam developers & solutions engineers. |
datamanager/builtin/sync
Package sync implements datasync for the builtin datamanger
|
Package sync implements datasync for the builtin datamanger |
datamanager/register
Package register registers all relevant datamanager models and also API specific functions
|
Package register registers all relevant datamanager models and also API specific functions |
discovery
Package discovery implements the discovery service, which lets users surface resource configs for their machines to use.
|
Package discovery implements the discovery service, which lets users surface resource configs for their machines to use. |
discovery/fake
Package fake implements a fake discovery service.
|
Package fake implements a fake discovery service. |
discovery/register
Package register registers all relevant discovery models and also API specific functions
|
Package register registers all relevant discovery models and also API specific functions |
generic
Package generic contains a gRPC based generic client.
|
Package generic contains a gRPC based generic client. |
generic/fake
Package fake implements a fake generic service.
|
Package fake implements a fake generic service. |
generic/register
Package register registers the generic service
|
Package register registers the generic service |
mlmodel
Package mlmodel defines the client and server for a service that can take in a map of input tensors/arrays, pass them through an inference engine, and then return a map output tensors/arrays.
|
Package mlmodel defines the client and server for a service that can take in a map of input tensors/arrays, pass them through an inference engine, and then return a map output tensors/arrays. |
mlmodel/register
Package register registers all relevant ML model services
|
Package register registers all relevant ML model services |
motion
Package motion is the service that allows you to plan and execute movements.
|
Package motion is the service that allows you to plan and execute movements. |
motion/builtin
Package builtin implements a motion service.
|
Package builtin implements a motion service. |
motion/builtin/state
Package state provides apis for motion builtin plan executions and manages the state of those executions
|
Package state provides apis for motion builtin plan executions and manages the state of those executions |
motion/register
Package register registers all relevant motion services and API specific functions.
|
Package register registers all relevant motion services and API specific functions. |
navigation
Package navigation is the service that allows you to navigate along waypoints.
|
Package navigation is the service that allows you to navigate along waypoints. |
navigation/builtin
Package builtin implements a navigation service.
|
Package builtin implements a navigation service. |
navigation/register
Package register registers all relevant navigation models and API specific functions.
|
Package register registers all relevant navigation models and API specific functions. |
register
Package register registers all services
|
Package register registers all services |
shell
Package shell contains a shell service, along with a gRPC server and client
|
Package shell contains a shell service, along with a gRPC server and client |
shell/builtin
Package builtin contains a shell service, along with a gRPC server and client
|
Package builtin contains a shell service, along with a gRPC server and client |
shell/register
Package register registers all relevant shell models and also API specific functions
|
Package register registers all relevant shell models and also API specific functions |
shell/testutils
Package shelltestutils contains test utilities for working with the shell service like test file system directories and comparison tools.
|
Package shelltestutils contains test utilities for working with the shell service like test file system directories and comparison tools. |
slam
Package slam implements simultaneous localization and mapping.
|
Package slam implements simultaneous localization and mapping. |
slam/fake
Package fake implements a fake slam service
|
Package fake implements a fake slam service |
slam/register
Package register registers all relevant slam models and also API specific functions
|
Package register registers all relevant slam models and also API specific functions |
vision
Package vision is the service that allows you to access various computer vision algorithms (like detection, segmentation, tracking, etc) that usually only require a camera or image input.
|
Package vision is the service that allows you to access various computer vision algorithms (like detection, segmentation, tracking, etc) that usually only require a camera or image input. |
vision/colordetector
Package colordetector uses a heuristic based on hue and connected components to create bounding boxes around objects of a specified color.
|
Package colordetector uses a heuristic based on hue and connected components to create bounding boxes around objects of a specified color. |
vision/detectionstosegments
Package detectionstosegments uses a 2D segmenter and a camera that can project its images to 3D to project the bounding boxes to 3D in order to created a segmented point cloud.
|
Package detectionstosegments uses a 2D segmenter and a camera that can project its images to 3D to project the bounding boxes to 3D in order to created a segmented point cloud. |
vision/fake
Package fake implements a fake vision service which always returns the user specified detections/classifications.
|
Package fake implements a fake vision service which always returns the user specified detections/classifications. |
vision/mlvision
Package mlvision uses an underlying model from the ML model service as a vision model, and wraps the ML model with the vision service methods.
|
Package mlvision uses an underlying model from the ML model service as a vision model, and wraps the ML model with the vision service methods. |
vision/obstaclesdepth
Package obstaclesdepth uses an underlying depth camera to fulfill GetObjectPointClouds, projecting its depth map to a point cloud, an then applying a point cloud clustering algorithm
|
Package obstaclesdepth uses an underlying depth camera to fulfill GetObjectPointClouds, projecting its depth map to a point cloud, an then applying a point cloud clustering algorithm |
vision/obstaclesdistance
Package obstaclesdistance uses an underlying camera to fulfill vision service methods, specifically GetObjectPointClouds, which performs several queries of NextPointCloud and returns a median point.
|
Package obstaclesdistance uses an underlying camera to fulfill vision service methods, specifically GetObjectPointClouds, which performs several queries of NextPointCloud and returns a median point. |
vision/obstaclespointcloud
Package obstaclespointcloud uses the 3D radius clustering algorithm as defined in the RDK vision/segmentation package as vision model.
|
Package obstaclespointcloud uses the 3D radius clustering algorithm as defined in the RDK vision/segmentation package as vision model. |
vision/register
Package register registers all relevant vision models and also API specific functions
|
Package register registers all relevant vision models and also API specific functions |
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. |
inject
Package inject provides dependency injected structures for mocking interfaces.
|
Package inject provides dependency injected structures for mocking interfaces. |
robottestutils
Package robottestutils provides helper functions in testing
|
Package robottestutils provides helper functions in testing |
vcamera
Package vcamera creates and streams video to virtual V4L2 capture devices on Linux.
|
Package vcamera creates and streams video to virtual V4L2 capture devices on Linux. |
vcamera/cmd
This package creates two virtual cameras and streams test video to them until the program halts (with ctrl-c for example).
|
This package creates two virtual cameras and streams test video to them until the program halts (with ctrl-c for example). |
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. |
contextutils
Package contextutils provides utilities for dealing with contexts such as adding and retrieving metadata to/from a context, and handling context timeouts.
|
Package contextutils provides utilities for dealing with contexts such as adding and retrieving metadata to/from a context, and handling context timeouts. |
diskusage
Package diskusage is used to get platform specific file system usage information.
|
Package diskusage is used to get platform specific file system usage information. |
test_detector
package main: this is called by the utils test suite to confirm the Testing() test is false in prod.
|
package main: this is called by the utils test suite to confirm the Testing() test is false in prod. |
Package vision implements computer vision algorithms.
|
Package vision implements computer vision algorithms. |
classification
Package classification implements a classifier for use as a visModel in the vision service
|
Package classification implements a classifier for use as a visModel in the vision service |
delaunay
Package delaunay implements 2d Delaunay triangulation
|
Package delaunay implements 2d Delaunay triangulation |
keypoints
Package keypoints contains the implementation of keypoints in an image.
|
Package keypoints contains the implementation of keypoints in an image. |
objectdetection
Package objectdetection defines a functional way to create object detection pipelines by feeding in images from a gostream.VideoSource source.
|
Package objectdetection defines a functional way to create object detection pipelines by feeding in images from a gostream.VideoSource source. |
segmentation
Package segmentation implements object segmentation algorithms.
|
Package segmentation implements object segmentation algorithms. |
viscapture
Package viscapture implements VisCapture struct returned by the CaptureAllFromCamera vision service method
|
Package viscapture implements VisCapture struct returned by the CaptureAllFromCamera vision service method |
web
|
|
cmd/droid
Package droid is the entrypoint for gomobile.
|
Package droid is the entrypoint for gomobile. |
cmd/server
Package main provides a server offering gRPC/REST/GUI APIs to control and monitor a robot.
|
Package main provides a server offering gRPC/REST/GUI APIs to control and monitor a robot. |
server
Package server implements the entry point for running a robot web server.
|
Package server implements the entry point for running a robot web server. |