Previous
Start a new machine
Viam supports a wide variety of sensors, cameras, and other physical hardware, with APIs for each of the following types of hardware:
These standardized APIs are implemented by modules that provide drivers for specific models of hardware.
Any hardware that is not already supported by a Viam module can be added into Viam’s system of modular resources by creating a new module that provides a driver for the hardware.
Viam also supports various software services such as data capture and computer vision, designed to integrate seamlessly with the hardware driver modules.
Many modules are designed to run alongside the full version of viam-server
, which runs on 64-bit architectures such as single-board computers and laptop/desktop computers running 64-bit Linux, as well as macOS.
Other modules are designed to run on microcontrollers alongside viam-micro-server
.
The following modular components are available for computers and SBCs running viam-server
.
Search for the name, model number, or manufacturer name of your hardware to see if there is already a hardware driver (component model) for it. Also try searching by broader category name, for example “webcam” or “motor,” since some components do not require drivers that are specific to their exact make and model.
Some components are supported by drivers built into viam-server
.
The list above contains both modular components and built-in components.
You can also browse these same built-in and modular registry components on your machine’s configuration page in the Viam app.
The Viam Registry is the storage and distribution system for not just hardware modules but also software modules (called services), ML models, and ML model training scripts. You can browse the Viam Registry in the Viam app.
Modules in the list above are officially supported and maintained by Viam if and only if they are marked as “built-in,” or if the first part of their model triplet is viam
.
The following is a selection of components (some built-ins and some modules) written for use with viam-micro-server
.
To use any of the built-in components, configure them according to their readmes.
To use a module with viam-micro-server
, you need to build firmware that combines viam-micro-server
with one or more modules.
Model | Description | Built-in |
---|---|---|
gpio | A servo controlled by GPIO pins. Configuration info. | Yes |
two_wheeled_base | A robotic base with differential steering. Configuration info. | Yes |
free_heap_sensor | Ships with viam-micro-server . GitHub repo. | No |
wifi_rssi_sensor | Ships with viam-micro-server . GitHub repo. | No |
moisture_sensor | GitHub repo. | No |
water_pump | GitHub repo. | No |
After installing viam-server
or viam-micro-server
on your computer or microcontroller, you can configure hardware components on your machine’s page in the Viam app:
Click the + button on your machine’s CONFIGURE tab.
Click Component, then select from available components from the Viam Registry (as well as built-in resources).
Use the link to the module README to find information on configuring that specific component.
When you add a modular resource from the registry, the module that provides it is automatically added at the same time, generating a configuration card for the modular resource and a separate one for the module. If you add a built-in component, there will only be a configuration card for the component.
For details on configuring versioning and environment variables for modules, see Modular Resource and Module Configuration Details.
In addition to physical hardware, there are “virtual” hardware modules that do not directly drive any physical hardware, but rather augment physical hardware with another layer of abstraction, or add other functionality, for example:
These software-only “hardware” modules implement the same component APIs as physical hardware modules, and are configured in the same way as other components.
In addition to hardware driver components and abstracted “virtual hardware” components, Viam offers services to provide higher-level software capabilities. You can read more about the Viam-maintained services and how to configure them in their respective documentation:
To add a service to your machine:
Modules run alongside viam-server
as separate processes, communicating with viam-server
over UNIX sockets.
When a module initializes, it registers its model or models and associated APIs with viam-server
, making the new model available for use.
viam-server
manages the dependencies, start-up, reconfiguration, data management, and shutdown behavior of your modular resource.
Was this page helpful?
Glad to hear it! If you have any other feedback please let us know:
We're sorry about that. To help us improve, please tell us what we can do better:
Thank you!