Viam provides a single interface to configure robots and expose APIs. Common hardware is abstracted into types such as ‘motor’ or ‘arm’. Hardware engineers simply select the model they’re using, and Viam automatically configures their robot. Viam supports hundreds of common drivers and provides an SDK to easily create additional drivers. Each piece of hardware can be independently changed, and every robot automatically updates its configuration. Once configured, you can test hardware in Viam’s control UI, and software engineers immediately have intuitive APIs to start writing code.
Software engineers can write predictable, reliable, and consistent code in any programming language from anywhere. Viam’s API exposes intuitive methods through gRPC for each type of hardware. For example,‘MoveToJointPosition’ moves any arm, and ‘SetPower’ turns on any motor. Your software can run locally on the robot, or remotely from anywhere via WebRTC. Viam natively supports higher-level services such as Computer Vision, SLAM, and Motion Planning.
Organizations can centrally manage and secure every robot from anywhere. You can organize robots by organization and location, view every robot’s status, remotely control any robot, and Viam will support fine-grained control over access to robots – down to distinct API methods. For example, you can prevent remote access to cameras deployed in sensitive environments. Viam is SOC2 type I compliant and all communication between robots, to client applications, and with the cloud is encrypted end-to-end.
Viam lets you synchronize data from each robot to the cloud, combine and analyze data, and then deploy changes to every robot. Viam can collect images, sensor readings, and hardware metrics even through challenging network conditions and limited bandwidth. Once uploaded, you can explore your data, export it to run predictive analytics, and train machine learning models. Viam will support pushing trained models, or any other data, back down to your robots.