# HMI Components

You can find in this section details about **HMI components** and how they interact with robot functions and variables.&#x20;

<details>

<summary><img src="/files/pYghXwtsPHbeRquezLTq" alt=""> Label</summary>

Label components are used to display fixed text information.

</details>

<details>

<summary><img src="/files/Vg5GgSCnwbK8MjxRT11x" alt=""> Button</summary>

Buttons are used to let users trigger robot **actions**.

Actions are expressed as robot **commands**. Any valid robot command can be linked to a button.&#x20;

Valid command examples for Universal Robots:

* ```python
  movej([1.56, -1.93, 1.69, -1.33, -1.57, -0.01]) # robot function
  ```
* ```python
  my_function() # user defined function
  ```
* ```python
  x = 100 # assignment
  ```
* ```python
  c = c + 1 # command
  ```

Actions **scope** can be configured as **MAIN** or **BACKGROUND**.&#x20;

The scope parameter is used to determine how the action will be executed by the robot. **MAIN** option is used to execute the command in the main thread, while **BACKGROUND** is used to execute the command inside a new thread.&#x20;

Multiple **BACKGROUND** actions can be executed simultaneously, while **MAIN** actions can be executed just one at time.&#x20;

You can also give the action a **display name** that will be shown on the HMI panel while the action is running.

</details>

<details>

<summary><img src="/files/rnE1N8vOJ8XPU3gscERA" alt=""> Tab</summary>

Tabs can be used to split the HMI panel in multiple sections.

</details>

<details>

<summary><img src="/files/8nP2zlqAkfu4N04mLxmU" alt=""> Monitor</summary>

Monitors can be used to display live runtime values on the HMI panel.

Monitors can be linked with **robot variables** of any type or with commands returning a value.

Valid linking examples for Universal Robots:

* ```python
  my_variable # user defined variable
  ```
* ```python
  get_actual_joint_positions() # robot function
  ```
* ```python
  my_function() # user defined function
  ```
* ```python
  x + y # command with return value
  ```

</details>

<details>

<summary><img src="/files/xZYyLLoO4HxfrDvSd3Vh" alt=""> Input</summary>

Inputs compnents are used to let users set or change a value assigned to a **robot variable**.

Inputs can be linked with any robot variables with type Int, Float or String.

</details>

<details>

<summary><img src="/files/LjY13rzir9tKNls9mSxV" alt=""> Pose Input</summary>

Pose Input compnents are used to let users set or change a **robot position** value assigned to a variable.

Pose Inputs can be linked with any robot variables of type **Tool Pose** (cartesian pose) or **Joint Pose**.&#x20;

</details>

<details>

<summary><img src="/files/A2xTFOSBJ5LouNCW6Zj6" alt=""> Image</summary>

Image components are used to display a fixed picture on the HMI panel.

Like buttons images can be used by user trigger robot actions.&#x20;

Actions are expressed as robot **commands**. Any valid robot command can be linked to a button.&#x20;

Valid command examples for Universal Robots:

* ```python
  movej([1.56, -1.93, 1.69, -1.33, -1.57, -0.01]) # robot function
  ```
* ```python
  my_function() # user defined function
  ```
* ```python
  x = 100 # assignment
  ```
* ```python
  c = c + 1 # command
  ```

Actions **scope** can be configured as **MAIN** or **BACKGROUND**.&#x20;

The scope parameter is used to determine how the action will be executed by the robot. **MAIN** option is used to execute the command in the main thread, while **BACKGROUND** is used to execute the command inside a new thread.&#x20;

Multiple **BACKGROUND** actions can be executed simultaneously, while **MAIN** actions can be executed just one at time.&#x20;

You can also give the action a **display name** that will be shown on the HMI panel while the action is running.

</details>

<details>

<summary><img src="/files/87GC7Pnz0s2iIfWjtZLn" alt=""> DropDown</summary>

DropDown components are used to let users choose a value among a fixed list of elements.

DropDowns are linked to robot variables with type String.

</details>

<details>

<summary><img src="/files/FP9KzY1e4UfLO58uySE9" alt=""> CheckBox</summary>

CheckBox components are used to let use choose a ON/OFF value.

CheckBoxs are linked to robot variables with type Boolean or Integer.

</details>

<details>

<summary><img src="/files/ozHInv6NjbHyPhiVS8ou" alt=""> Slider</summary>

Slider components are used to let users choose a valued inside a fixed range.

Sliders are linked to robot variables with type Integer.

</details>

<details>

<summary><img src="/files/4RqtRKBGOIot7XtKIadr" alt=""> Chart</summary>

See [HMI Charts](/hmi-designer/hmi-charts.md) section.

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.robpod.cloud/hmi-designer/hmi-components.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
