Control Machines

Once you have configured components and services for your machine, you can test, monitor, and remotely operate them from the CONTROL tab in the Viam app or the Viam mobile app.

Control interface in the Viam app

The CONTROL tab in the Viam app gives you the ability to test, monitor, and operate the machines in your fleet. The CONTROL tab provides a control interface for each component and service that you have configured for you machine.

For example, if you have configured a base with wheels, you can move your machine’s with an arrow pad and control the base’s speed by setting its power with a slider. If you have configured a camera component, a window in the CONTROL tab displays the camera output.

If you use remote control in the Viam app UI, all communication to the machine uses WebRTC. For local communication between parts Viam uses gRPC or WebRTC.

You can also switch between different machine parts and control the selected machine part directly from the CONTROL tab.

The expanded Machine part dropdown menu with the main part selected on the Control tab.

For more information on configuring and controlling machine parts, see Machine Architecture.

Components

For more detailed information on how to operate and test your resources, expand the relevant resource below:

Arm

Test the arm

Once your arm is configured and connected, go to the CONTROL tab and click on the arm’s dropdown panel.

Use the buttons to move the end position or the joints and check whether it moves as expected.

Arm control panel.

If the arm does not appear on the CONTROL tab, or if you notice unexpected behavior, check your machine’s LOGS tab for errors, and review the configuration.

Base

Test analogs

Once you have configured your analogs, navigate to the CONTROL tab to monitor analog values. The numbers displayed next to each analog name represent the digital signal received from the analog inputs.

Analogs in the control tab.

Test digital_interrupts

After you configure the base, go to the CONTROL tab and expand the base component to view the controls to enable keyboard or discrete control over your machine’s movement. If your base makes use of a camera component, the CONTROL tab for your base will also display a Live Feeds section. This section contains buttons to toggle cameras on or off and to arrange how you view the camera feeds.

The base component in control tab

On the Keyboard tab, you can toggle the keyboard control to active. With the Keyboard toggle active, use W and S to go forward and back, and A and D to arc and spin.

Try driving your base around using the WASD keyboard controls.

If you navigate to the Discrete tab, you can use movement modes such as Straight and Spin and different movement types such as Continuous and Discrete and directions such as Forwards and Backwards.

If you do not see the base card in the CONTROL tab, check the LOGS tab for possible setup or configuration errors.

Board

Once you have configured your digital interrupts, navigate to the CONTROL tab to monitor interrupt activity. The value displayed next to each interrupt name represents the total count of interrupts triggered by the corresponding digital interrupt.

Digital interrupts in the control tab.

Camera

Once your camera is configured and connected, go to the CONTROL tab, and click on the camera’s dropdown menu. Then toggle the camera or the Point Cloud Data view to ON. If everything is configured correctly, you will see the live video feed from your camera. You can change the refresh frequency as needed to change bandwidth.

Example Camera view inside Viam app
Encoder

Test the encoder

Once your encoder is configured and connected, go to the CONTROL tab and click on the encoder’s dropdown panel. The ticks count is displayed. Try moving the encoder (for example, by turning a motor it is attached to) and check whether the count increases as expected.

Encoder control panel.

If the encoder does not appear on the CONTROL tab, or if you notice unexpected behavior, check your machine’s LOGS tab for errors, and review the configuration.

Gantry

Test the gantry

Once your gantry is configured and connected, go to the CONTROL tab and click on the gantry’s dropdown panel.

Use the panel to adjust the position of the actuator on the axis and check whether it moves as expected.

Gantry control panel.

If the gantry does not appear on the CONTROL tab, or if you notice unexpected behavior, check your machine’s LOGS tab for errors, and review the configuration.

Generic component

Test the generic component

After you configure your generic component, navigate to the CONTROL tab and select the dropdown panel dedicated to the generic component. Use the card to send arbitrary commands to the resource with DoCommand().

The generic component in the control tab.

Gripper

Test the gripper

After you configure your gripper, navigate to the CONTROL tab and select the dropdown panel dedicated to the gripper. Use the buttons to open and close the gripper.

The gripper component in the control tab
Input controller

Test the input controller

After you configure your input controller, navigate to the CONTROL tab and select the dropdown panel dedicated to the input controller. View the current value of each input on your controller.

The input controller component in the control tab of the Viam app.

Motor

Once your motor is configured and connected, go to the CONTROL tab and click on the motor’s dropdown panel. Use the buttons to try turning your motor forwards or backwards at different power levels and check whether it moves as expected.

Motor control panel.

If the motor does not appear on the CONTROL tab, or if you notice unexpected behavior, check your machine’s LOGS tab for errors, and review the configuration.

Movement sensor (GPS)

Test the movement sensor

After you configure your movement sensor, navigate to the CONTROL tab and select the dedicated movement sensor dropdown panel. This panel presents the data collected by the movement sensor. The sections in the panel include the position, linear velocity and compass heading.

The movement sensor component in the control tab
Movement sensor (IMU)

Test the movement sensor

After you configure your movement sensor, navigate to the CONTROL tab and select the dedicated movement sensor dropdown panel. This panel presents the data collected by the movement sensor. The sections in the panel include the orientation, angular velocity and linear acceleration.

The movement sensor component in the control tab
Power sensor

Test the power sensor

After you configure your power sensor, navigate to the CONTROL tab and select the dropdown panel dedicated to your power sensor. The panel contains readings for your voltage, current, and power.

An instance of the power sensor component in the control tab with voltage, current, and power readings

Sensor

Test the sensor

After you configure your sensor, navigate to the CONTROL tab and select the Sensors dropdown panel. If you have multiple sensors configured, your sensor will be listed here among others. To access detailed readings from your sensor, click on the Get Readings button.

The sensor component in the control tab
Servo

Test the servo

After you establish the connection to your servo motor, navigate to the CONTROL tab and select the dropdown panel dedicated to the servo. Use the buttons to move the servo motor to the desired angle.

The servo component in the control tab

Services

The following services also provide control interfaces:

  • SLAM: for creating a new SLAM map and for using the motion service to move a machine on a SLAM map
  • Navigation: for moving a machine to waypoints on a map

Control interface in the Viam mobile app

The Viam mobile app gives you the ability to test, monitor and remotely operate machines in your fleet. The mobile app provides a control interface for each component and service that you have configured for you machine.

For example, you can view live camera feeds, adjust components’ runtime parameters, and switch between controllable components.

Additionally, the machine control interface provides a menu for:

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.