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
- Community Slack: join
- Support: https://support.viam.com
Building and Using
Dependencies
- Install
make. - Run
make setupto install dev environment requirements.
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. Then visit http://localhost:8080 to access remote control.
Examples
- SimpleServer - example for creating a simple custom server.
- MySensor - example for creating a custom sensor.
- MyComponent - example for creating a custom resource subtype.
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
- Rust: Repository
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 lintandmake test. - Run
make buildand 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).
Frontend
To start the client development environment, first run the same go run command mentioned in Building and Using, but with the environmental variable ENV=development (e.g. ENV=development go run web/cmd/server/main.go -debug -config etc/configs/fake.json).
Then navigate to web/frontend and run npm start in a new terminal tab. Visit localhost:8080 to view the app, not localhost:5173. The latter is a hot module replacement server that rebuilds frontend asset changes.
Frontend against a remote host
See documentation in Direct Remote Control.
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 to verify that it can be used.
License
Copyright 2021-2022 Viam Inc.
AGPLv3 - See LICENSE file