Viam provides support for a wide variety of hardware. A component represents a physical piece of hardware in your machine, and the software that directly supports that hardware.

Diagram with various components and services on a smart machine. This machine employs the vision, navigation, and data capture services, which run within viam-server on the machine's single-board computer.

Viam groups categories of hardware together, with a standardized API for all models in each grouping. For example, xarm7 and ur5e are different arm models, which provide software support for xArm7 arms and UR5e arms, respectively. Though the hardware is different, you use the same Viam SDK commands to control both models, for example MoveToPosition.

You need to configure a component to represent each piece of hardware your machine controls. Configuration is the process of editing the file that indicates to viam-server what hardware is available to it, how to communicate with that hardware, and how the pieces of hardware relate to each other (for example, which board a motor is connected to).

Viam provides built-in support for the following component types. You can also add support for additional component types using modular resources.

If you are connecting components to a microcontroller instead of a 64-bit single-board computer, find component configuration information in the micro-RDK documentation.

Have questions, or want to meet other people working on robots? Join our Community Discord.

If you notice any issues with the documentation, feel free to file an issue or edit this file.