> For the complete documentation index, see [llms.txt](https://docs.robpod.cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.robpod.cloud/hmi-designer/hmi-components.md).

# 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>
