rdk

package module
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Aug 19, 2022 License: AGPL-3.0 Imports: 0 Imported by: 0

README

RDK (Robot Development Kit)

PkgGoDev

API Documentation & more devices

To see more examples, check out the Wiki

Dependencies

  • Install make.
  • Run make setup to install a full dev environment.
    • Note that on Raspberry Pi, Nvidia Jetson, etc. only a minimal environment is installed.
First time run

Development

Conventions
  • Write tests!
  • Work in your own fork, not a fork of the company repository.
  • Follow this Go Style Guide
  • Always run make lint and test before pushing. make build should be run if control.js or proto files have changed. make setup should be run if any dependencies have changed, but does not need to be run otherwise.
  • If control.js, app.vue or proto files have changed, double check the UI still works through the instructions in here
  • Usually merge and squash your PRs and more rarely do merge commits with each commit being a logical unit of work.
  • If you add a new package, please add it to this README.
  • If you add a new sample or command, please add it to this README.
  • Experiments should go in samples or any subdirectory with /samples/ in it. As "good" pieces get abstracted, put into a real package command directory.
  • Use imperative mood for commits (see Git Documentation).
  • Try to avoid large merges unless you're really doing a big merge. Try to rebase (e.g. git pull --rebase).
  • Delete any non-release branches ASAP when done, or use a personal fork
  • 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).
Getting Started
  • Fork the main repository to your own account and create feature branch(es) there for any code you want to submit. Unless you have specific reasons, do not create branches on the company repository.
  • If you haven't already done so, run make setup to install development environment tools.
    • This is somewhat optional. See "Canon Tooling" below.
  • After making your changes, make sure to rebuild/lint/test before preparing to submit a Pull Request. Run make clean-all build lint test as a final check to build and test "from scratch."
    • Note that building and linting will often modify files or even create new ones. Always check git status to see if there are any automated modifications you need to commit. Only if this step passes without any modifications will your PR pass testing.
  • When ready, submit a PR from your branch against the "main" branch of the company repo.
  • Automated workflows in GitHub run tests against all PRs, and this will begin automatically on PR submission.
  • If you need to modify the code in your PR after submitting it, simply push your changes to your (source) branch and testing will automatically re-run, canceling any previously in-progress tests. There is no need to open a new PR or close your existing one.
  • If you'd like an AppImage (the distributable binary "viam-server") built for your PR, add the "appimage" label to the PR, and you'll get a notice/link when it's ready. You can use this in place of the normal viam-server binary to test your changes on real hardware.
    • This AppImage will also be set up to self-update to the same PR "build channel" so future pushes/builds on the PR require only an auto-update of the viam-server on any test machines.
  • Look over the file changes yourself, and make sure you've left no debugging or other unneeded statements behind.
  • When ready, add one or more reviewers to your PR (top left of the main PR page.) All reviewers added must approve before merging is allowed.
  • If reviewers request changes, or make comments, please work with them to resolve things, make any agreed upon changes and push them. When again ready, re-request review from your reviewer(s).
  • On full approval, and with all tests passing, you can merge. Best practice is to do a "squash and merge" and generally remove/clear the body of the commit message, leaving only the title/header for it (which defaults to the title of the PR itself.)
    • Make sure the commit message header is in imperative mood (see Conventions above.)
  • After merging, the PR will be automatically closed, and you can use the link to delete the now-merged source branch if you like.
  • Also after merging, tests will run directly against the main branch as a final caution, and if successful, new AppImages will be built for the "latest" build channel of viam server.
  • Note that after merging (or otherwise closing a PR) the build channel for the PR's AppImages will be deleted. Any in-use copies of the PR-specific viam-server will need to be replaced with a normal ("latest") build (which should now include your newly merged features.)
Troubleshooting make setup
Setup is hanging on brew update

If while running setup, you see brew hanging on update, you may be getting rate limited by GitHub while brew is inspecting taps via the GitHub public API. In this case, the only reasonable solution is to use a GitHub PAT (Personal Access Token) for brew. To do so, create a PAT with no scoped permissions following https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token. Then, in your ~/.bash_profile or ~/.zprofile, add export HOMEBREW_GITHUB_API_TOKEN=yourpat and try again.

Canon Tooling
  • To provide a consistent build environment, the same "canonical" docker images used by automated testing and building are available to use on your desktop environment as well.
  • To get started, make sure you have docker installed and working. https://docs.docker.com/get-docker/
    • On Mac, check settings>>experimental and enable the new virt framework to get a speed boost. Though emulation of Linux under Mac will be slower than native. (But it can still be faster than attempting to build on a Raspberry Pi or other SBC that requires linux.)
    • Also check the resource limits and make sure to allocate enough. Full builds can take 4GB or more of memory, and the more cpu the better.
  • The main entrypoint is to run make canon-shell which will drop you into an interactive bash shell where your working rdk directory is mounted as /host
    • There are also make canon-shell-arm64 and make canon-shell-amd64 to allow building/testing under specific architectures.
    • See canon.make for other related make targets.
  • From here, you can run any development tasks you need, without installing tooling to your outside environment.
    • Ex: You can run make build lint test here without ever having run make setup and when you exit, only changes made within the rdk codebase itself will persist. Nothing will be modified in the rest of your home directory or system.
    • This also has the benefit that all tools and such will have the exact same versions as will be used during automated PR testing.
Resources

All resources implemented within the RDK follow the pattern of registering themselves within an func init() block. This requires the package they are implemented in be imported, but typically not explicitly used. The place where we currently put blank imports (_ "pkgpath") is in the corresponding resource's register package.

Protocol Buffers/gRPC

For API intercommunication, we use Protocol Buffers to serialize data and gRPC to communicate it. For more information on both technologies, see https://developers.google.com/protocol-buffers and https://grpc.io/.

Some guidelines on using these:

  1. Follow the Protobuf style guide.
  2. After making changes to a .proto file, make sure to run make buf to generate new files. Make sure protoc-gen-go-grpc and protoc-gen-go, usually located in ~/go/bin, are in your $PATH.
gRPC Language Samples
Frontend

To start the client development environment, first run the same go run command mentioned in getting started, but with the environmental variable ENV=development (like: ENV=development go run web/cmd/server/main.go robots/configs/fake.json). Then navigate to web/frontend and run npm start in a new terminal tab.

Note that you should still visit localhost:8080 to view the app, not localhost:5173. The latter is a hot module replacement server that rebuilds frontend asset changes.

Testing with big data

Let's assume big data is > 10KiB. This kind of data is annoying to slow to pull down with git and is typically not needed except for certain tests. In order to add large data test artifacts, you need to do the following:

# get ARTIFACT_GOOGLE_APPLICATION_CREDENTIALS by talking to Eliot or Eric
# export the path with the json file as an environment variable: 
export ARTIFACT_GOOGLE_APPLICATION_CREDENTIALS=/path/to/your/json/credentials
go install go.viam.com/utils/artifact/cmd/artifact
# place new artifacts in ./artifact/data
artifact push
git add .artifact
# commit the file at some point

General workflow:

  1. Add your file of interest to the .artifact/data directory, wherever you want. You can even make a new folder for it.
  2. artifact push to create an entry for it in .artfact/tree.json
  3. artifact pull to download all the files that are in the tree.json file

License

AGPLv3 - See LICENSE file

Documentation

Overview

Package rdk TODO

Directories

Path Synopsis
cli
Package cli contains all business logic needed by the CLI command.
Package cli contains all business logic needed by the CLI command.
cmd
cmd
component
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/eva
Package eva implements the Eva robot from Automata.
Package eva implements the Eva robot from Automata.
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/trossen
Package trossen implements arms from Trossen Robotics.
Package trossen implements arms from Trossen Robotics.
arm/universalrobots
Package universalrobots implements the UR arm from Universal Robots.
Package universalrobots implements the UR arm from Universal Robots.
arm/varm
Package varm implements versions of the Viam arm.
Package varm implements versions of the Viam arm.
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
arm/xarm
Package xarm implements some xArms.
Package xarm implements some xArms.
arm/yahboom
Package yahboom implements a yahboom based robot.
Package yahboom implements a yahboom based robot.
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/agilex
Package limo implements the AgileX Limo base
Package limo implements the AgileX Limo base
base/boat
Package boat implements a base for a boat with support for N motors in any position or angle
Package boat implements a base for a boat with support for N motors in any position or angle
base/fake
Package fake implements a fake base.
Package fake implements a fake base.
base/register
Package register registers all relevant bases
Package register registers all relevant bases
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/arduino
Package arduino implements the arduino board and some peripherals.
Package arduino implements the arduino board and some peripherals.
board/commonsysfs
Package commonsysfs implements a sysfs (https://en.wikipedia.org/wiki/Sysfs) based board.
Package commonsysfs implements a sysfs (https://en.wikipedia.org/wiki/Sysfs) based board.
board/fake
Package fake implements a fake board.
Package fake implements a fake board.
board/hat/pca9685
Package pca9685 implements a PCA9685 HAT.
Package pca9685 implements a PCA9685 HAT.
board/jetson
Package jetson implements a jetson based board.
Package jetson implements a jetson based board.
board/numato
Package numato is for numato IO boards.
Package numato is for numato IO boards.
board/pi
Package pi implements a Board and its related interfaces for a Raspberry Pi.
Package pi implements a Board and its related interfaces for a Raspberry Pi.
board/pi/common
Package picommon contains shared information for supported and non-supported pi boards.
Package picommon contains shared information for supported and non-supported pi boards.
board/register
Package register registers all relevant Boards and also subtype specific functions
Package register registers all relevant Boards and also subtype specific functions
board/ti
Package ti implements a ti based board.
Package ti implements a ti based board.
camera
Package camera defines a frame capturing device.
Package camera defines a frame capturing device.
camera/fake
Package fake implements a fake camera.
Package fake implements a fake camera.
camera/ffmpeg
Package ffmpeg provides an implementation for an ffmpeg based camera
Package ffmpeg provides an implementation for an ffmpeg based camera
camera/imagesource
Package imagesource defines various image sources typically registered as cameras in the API.
Package imagesource defines various image sources typically registered as cameras in the API.
camera/imagetransform
Package imagetransform defines cameras that apply transforms for images in an image transformation pipeline.
Package imagetransform defines cameras that apply transforms for images in an image transformation pipeline.
camera/register
Package register registers all relevant cameras and also subtype specific functions
Package register registers all relevant cameras and also subtype specific functions
camera/velodyne
Package velodyne implements a general velodyne LIDAR as a camera.
Package velodyne implements a general velodyne LIDAR as a camera.
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.
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/oneaxis
Package oneaxis implements a one-axis gantry.
Package oneaxis implements a one-axis gantry.
gantry/register
Package register registers all relevant gantries
Package register registers all relevant gantries
generic
Package generic contains a gRPC based generic client.
Package generic contains a gRPC based generic client.
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 subtype specific functions
Package register registers all relevant grippers and also subtype specific functions
gripper/robotiq
Package robotiq implements the gripper from robotiq.
Package robotiq implements the gripper from robotiq.
gripper/softrobotics
Package softrobotics implements the vacuum gripper from Soft Robotics.
Package softrobotics implements the vacuum gripper from Soft Robotics.
gripper/trossen
Package trossen implements a trossen gripper.
Package trossen implements a trossen gripper.
gripper/vgripper/v1
Package vgripper implements versions of the Viam gripper.
Package vgripper implements versions of the Viam gripper.
gripper/yahboom
Package yahboom implements a yahboom based gripper.
Package yahboom implements a yahboom based gripper.
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/dmc4000
Package dmc4000 implements stepper motors behind a Galil DMC4000 series motor controller
Package dmc4000 implements stepper motors behind a Galil DMC4000 series motor controller
motor/ezopmp
Package ezopmp is a motor driver for the hydrogarden pump
Package ezopmp is a motor driver for the hydrogarden pump
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
motor/roboclaw
Package roboclaw is the driver for the roboclaw motor drivers
Package roboclaw is the driver for the roboclaw motor drivers
motor/tmcstepper
Package tmcstepper implements a TMC stepper motor.
Package tmcstepper implements a TMC stepper motor.
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/imuvectornav
Package imuvectornav implement vectornav imu
Package imuvectornav implement vectornav imu
movementsensor/imuwit
Package imuwit implements a wit IMU.
Package imuwit implements a wit IMU.
movementsensor/nmea
Package nmea implements an NMEA serial gps.
Package nmea implements an NMEA serial gps.
movementsensor/register
Package register registers all relevant MovementSensors
Package register registers all relevant MovementSensors
movementsensor/rtk
Package rtk defines the rtk correction receiver which sends rtcm data to child gps's
Package rtk defines the rtk correction receiver which sends rtcm data to child gps's
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
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/ds18b20
Package ds18b20 implements a 1-wire temperature sensor
Package ds18b20 implements a 1-wire temperature sensor
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
sensor/ultrasonic
Package ultrasonic implements an ultrasonic sensor based of the yahboom ultrasonic sensor
Package ultrasonic implements an ultrasonic sensor based of the yahboom ultrasonic sensor
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/register
Package register registers all relevant servos
Package register registers all relevant servos
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
Package control package for feedback loop controls
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.
Package discovery implements types to support robot component discovery.
Package discovery implements types to support robot component discovery.
Package grpc provides grpc utilities.
Package grpc provides grpc utilities.
client
Package client contains a gRPC based robot.Robot client.
Package client contains a gRPC based robot.Robot client.
server
Package server contains a gRPC based robot.Robot server implementation.
Package server contains a gRPC based robot.Robot server implementation.
ml
Package ml provides some fundamental machine learning primitives.
Package ml provides some fundamental machine learning primitives.
inference
package inference allows users to do inference through tflite (tf, pytorch, etc in the future)
package inference allows users to do inference through tflite (tf, pytorch, etc in the future)
Package motionplan is a motion planning library.
Package motionplan is a motion planning library.
visualization
Package visualization provides a minimal way to see from robot's perspective
Package visualization provides a minimal way to see from robot's perspective
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.
proto
api/component/arm/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/base/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/board/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/camera/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/gantry/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/generic/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/gripper/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/inputcontroller/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/motor/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/movementsensor/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/posetracker/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/sensor/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/component/servo/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/robot/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/service/datamanager/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/service/motion/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/service/navigation/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/service/sensors/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/service/shell/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/service/slam/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
api/service/vision/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
protoutils are a collection of util methods for using proto in rdk
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 registry operates the global registry of robotic parts.
Package registry operates the global registry of robotic parts.
Package resource contains a Resource type that can be used to hold information about a robot component or service.
Package resource contains a Resource type that can be used to hold information about a robot component or service.
Package rimage defines fundamental image and color processing primitives.
Package rimage defines fundamental image and color processing primitives.
calibrate
Package calibrate uses Zhang's method to estimate intrinsic parameters of a camera.
Package calibrate uses Zhang's method to estimate intrinsic parameters of a camera.
cmd/stream_camera
Package main streams a specific camera over WebRTC.
Package main streams a specific camera over WebRTC.
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 rlog defines common logging utilities.
Package rlog defines common logging utilities.
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.
framesystem
Package framesystem defines and implements the concept of a frame system.
Package framesystem defines and implements the concept of a frame system.
framesystem/parts
Package framesystemparts provides functionality around a list of framesystem parts
Package framesystemparts provides functionality around a list of framesystem parts
impl
Package robotimpl defines implementations of robot.Robot and robot.LocalRobot.
Package robotimpl defines implementations of robot.Robot and robot.LocalRobot.
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.
Package robots defines actual implementations of robots in the real/simulated world.
Package robots defines actual implementations of robots in the real/simulated world.
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
Package samples is a scratch space for in progress projects that are not subject to all standards in the codebase.
Package samples is a scratch space for in progress projects that are not subject to all standards in the codebase.
chess
Package main is a chess game featuring a robot versus a human.
Package main is a chess game featuring a robot versus a human.
minirover
Package main is the work-in-progress robotic land rover from Viam.
Package main is the work-in-progress robotic land rover from Viam.
mycomponent/component
Package component implements MyComponent.
Package component implements MyComponent.
mycomponent/proto/api/component/mycomponent/v1
Package v1 is a reverse proxy.
Package v1 is a reverse proxy.
mycomponent/server
Package main is a sample of a user defined and implemented component type
Package main is a sample of a user defined and implemented component type
resetbox
Package main is a remote client to coordinate a resetbox (robot play area.)
Package main is a remote client to coordinate a resetbox (robot play area.)
simpleserver
Package main shows a simple server with a fake arm.
Package main shows a simple server with a fake arm.
services
baseremotecontrol
Package baseremotecontrol implements a remote control for a base.
Package baseremotecontrol implements a remote control for a base.
datamanager
Package datamanager contains a gRPC based datamanager service server
Package datamanager contains a gRPC based datamanager service server
datamanager/datacapture
Package datacapture contains tools for interacting with Viam datacapture files.
Package datacapture contains tools for interacting with Viam datacapture files.
datamanager/datasync
Package datasync contains interfaces for syncing data from robots to the app.viam.com cloud.
Package datasync contains interfaces for syncing data from robots to the app.viam.com cloud.
datamanager/internal
Package internal implements a data manager service definition with additional exported functions for the purpose of testing
Package internal implements a data manager service definition with additional exported functions for the purpose of testing
motion
Package motion contains a gRPC based motion client
Package motion contains a gRPC based motion client
navigation
Package navigation contains a navigation service, along with a gRPC server and client
Package navigation contains a navigation service, along with a gRPC server and client
register
Package register registers all services
Package register registers all services
sensors
Package sensors contains a gRPC based sensors service client
Package sensors contains a gRPC based sensors service client
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
slam
Package slam implements simultaneous localization and mapping
Package slam implements simultaneous localization and mapping
slam/internal
Package internal implements a slam service definition with additional exported functions for the purpose of testing
Package internal implements a slam service definition with additional exported functions for the purpose of testing
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.
Package spatialmath defines spatial mathematical operations.
Package spatialmath defines spatial mathematical operations.
Package subtype contains a Service type that can be used to hold all resources of a certain subtype.
Package subtype contains a Service type that can be used to hold all resources of a certain subtype.
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
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.
chess
Package chess implements computer vision algorithms useful in chess.
Package chess implements computer vision algorithms useful in chess.
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.ImageSource source.
Package objectdetection defines a functional way to create object detection pipelines by feeding in images from a gostream.ImageSource source.
odometry
Package odometry implements functions for visual odometry
Package odometry implements functions for visual odometry
segmentation
Package segmentation implements object segmentation algorithms.
Package segmentation implements object segmentation algorithms.
web
Package web contains the root of a web server.
Package web contains the root of a web server.
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.

Jump to

Keyboard shortcuts

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