Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions docs/core/examples/guides/abb-hardware-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ ABB permits remote control of its manipulator range using the Externally Guided
provides external devices with the ability to send commands and control ABB robotic arms, using Google's Protocol
Buffers (Protobuf) serialization library to transport information through UDP sockets. For more information, check out
the
[official product documentation](https://library.e.abb.com/public/344f15f0f43341eb944fe35279d9fa2e/3HAC073319+AM+Externally+Guided+Motion+RW6-en.pdf?x-sign=WlxgV7Vao27KV3d3hlsfaoykgctYqoA0F98ch89S%2FPEaGwQg47ou%2FioylQtzvLaV).
[official product documentation](https://library.e.abb.com/public/344f15f0f43341eb944fe35279d9fa2e/3HAC073319+AM+Externally+Guided+Motion+RW6-en.pdf?x-sign=WlxgV7Vao27KV3d3hlsfaoykgctYqoA0F98ch89S%2FPEaGwQg47ou%2FioylQtzvLaV).

:::warning

EGM is an optional add-in and has to be purchased separately.
EGM is an optional add-in and has to be purchased separately.

:::

Expand All @@ -68,8 +68,8 @@ steps, which will be explained in the following sections. More information can b
### RAPID

RAPID is the programming language of ABB robots. Users can utilize RAPID to set up and execute their workflows and
processes. This is enabled by user-defined libraries called *Modules*, that contain variables and functions or
processes (*PROCs*). Modules can then be loaded in controller *Tasks*, and called as required.
processes. This is enabled by user-defined libraries called _Modules_, that contain variables and functions or
processes (_PROCs_). Modules can then be loaded in controller _Tasks_, and called as required.

## Connecting to a robot

Expand All @@ -93,7 +93,7 @@ virtual machine.
Setting up a virtual workstation and controller can be achieved by following the next steps:

1. In RobotStudio, navigate to the **Add-Ins** tab and go to **Gallery**. There is a list of all available robot models
and RobotWare versions, the internal controller software. To ensure consistency between simulation and reality, make
and RobotWare versions, the internal controller software. To ensure consistency between simulation and reality, make
sure to install the versions matching the real robot controller, if one is available.
<div class="text--center">
<img src={abbInstallAddins} alt="Install necessary addins in RobotStudio." />
Expand All @@ -109,14 +109,14 @@ Setting up a virtual workstation and controller can be achieved by following the
controller. Then select **Apply and Reset** to finalize.
:::note
The **3119-1 RobotStudio Connect** add-in is required to connect a controller to RobotStudio over a public network.
For more information, see the RobotStudio instruction manual.
For more information, see the RobotStudio instruction manual.
:::
<div class="text--center">
<img src={abbAdditionalOptions} alt="Additional options in the RobotStudio project." />
</div>
7. Disable the Windows firewall on the network where the PC running AICA Core is connected to.
8. Finally, the PC running AICA Core has to be whitelisted to communicate with RobotStudio. As explained
[here](https://forums.robotstudio.com/discussion/12082/using-robotwebservices-to-access-a-remote-virtual-controller),
[here](https://forums.robotstudio.com/discussion/12082/using-robotwebservices-to-access-a-remote-virtual-controller),
create a file called `vcconf.xml` under `C:/Users/<user>/AppData/Roaming/ABB Industrial IT/Robotics IT/RobVC` with
the content below. Replace `<user>` in the path above with your Windows user and the IP address in the snippet below with
the IP of the PC running AICA Core (in this example 192.168.137.100).
Expand Down Expand Up @@ -387,24 +387,24 @@ robot. The majority of the hardware interface parameters enable connection to EG
<img src={abbHIParameters} alt="ABB Hardware interface parameters" />
</div>

- RWS IP & port: the address and port of the RWS server, e.g. the address of the real robot or the RobotStudio device
- **RWS IP & port**: the address and port of the RWS server, e.g. the address of the real robot or the RobotStudio device
:::note
OmniCore controllers and RobotWare 7.x versions by default listen on HTTPS and port 80 for RobotStudio and 443 for the
real robot. If necessary, the port numbers can be modified by following the instructions in this
[forum post](https://forums.robotstudio.com/discussion/12177/how-to-change-the-listening-port-of-the-virtual-controller-robotware-6-x-and-7-x).
:::
- EGM port: the port of the EGM server, e.g. the *Remote Port Number* of the UDPUC device defined in RobotStudio above
- Connection timeout: the amount of time the hardware interface tries to connect to the RWS and EGM servers before
- **EGM port**: the port of the EGM server, e.g. the _Remote Port Number_ of the UDPUC device defined in RobotStudio above
- **Connection timeout**: the amount of time the hardware interface tries to connect to the RWS and EGM servers before
reporting an error
- Controller Task and Main Module name: Depends on the controller configuration and usually defaults to `T_ROB1` and
- **Controller Task and Main Module name**: Depends on the controller configuration and usually defaults to `T_ROB1` and
`AICA_EGM`, respectively.
- Uc Device: The name of the UDPUC device configured above.
- **Uc Device**: The name of the UDPUC device configured above.

Before starting an application with an ABB hardware interface in AICA Studio, the motors and RAPID program on the robot
must be started manually through the teach pendant or RobotStudio. After that, running the application will connect to
the robot and get information about the mechanical setup of the robot being used.

<!-- TODO: link example -->
<!-- TODO: link example -->

<!-- <div class="text--center">
<img src={abbRSSuccessfulConnection} alt="Connected to RobotStudio successfully." />
Expand Down
36 changes: 19 additions & 17 deletions docs/core/examples/guides/fanuc-hardware-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ FANUC is one of the largest and most established industrial robotic manipulator
technology and robust performance for a wide range of automation tasks.

FANUC is one of the first major robot brands that enables accelerating Physical AI implementation through an official
first-party ROS driver in the `ros2_control` framework
first-party ROS driver in the `ros2_control` framework
([article from Dec 2025](https://www.fanuc.co.jp/en/product/new_product/2025/202512_robot_physicalai.html)). This allows
advanced programming platforms like the AICA System to control the robots in real-time and deploy complex behaviors
without custom implementations.
Expand All @@ -27,6 +27,7 @@ hardware compatibility. The minimum robot controller software versions are:
- R-50iA series: V10.10P/26

Additionally, one of the following software options are required:

- J519 Stream Motion and R912 Remote Motion
- S636 External Control Package, which includes the previous

Expand Down Expand Up @@ -67,16 +68,16 @@ robot:
<img src={fanucHI} alt="FANUC hardware interface." style={{ borderRadius: "8px" }} />
</div>

- Robot IP: the IP address of the robot
- RMI port: the port of the Remote Motion Interface (keep default unless otherwise configured on the robot controller)
- Stream Motion Port: the port of Stream Motion (keep default unless otherwise configured on the robot controller)
- GPIO configuration (v1.1.0 and above): an absolute path to a YAML file containing the GPIOs that should be configured
- **Robot IP**: the IP address of the robot
- **RMI port**: the port of the Remote Motion Interface (keep default unless otherwise configured on the robot controller)
- **Stream Motion Port**: the port of Stream Motion (keep default unless otherwise configured on the robot controller)
- **GPIO configuration (v1.1.0 and above)**: an absolute path to a YAML file containing the GPIOs that should be configured
(see more information below)
- Payload Schedule: the number of the payload to be set on the robot
- Out Cmd Interp Buff Target: Output command interpolation buffer target size for stream motion control
- Force Sensor Type (v1.1.0 and above): The type of force torque sensor to configure (see more information below)
- **Payload Schedule**: the number of the payload to be set on the robot
- **Out Cmd Interp Buff Target**: Output command interpolation buffer target size for stream motion control
- **Force Sensor Type (v1.1.0 and above)**: The type of force torque sensor to configure (see more information below)

Click **Start** to start the application and connect to the robot.
Click **Start** to start the application and connect to the robot.

### GPIO configuration

Expand All @@ -90,14 +91,14 @@ the driver starts. For detailed description, refer to the relevant sections in t
The official documentation states the behavior as follows:

> When outputs or numeric registers are added to the command section of the GPIO configuration YAML file, once the ROS 2
driver is launched those output and numeric register values in the controller will be set to false or zero.
> driver is launched those output and numeric register values in the controller will be set to false or zero.

However, the version of the driver provided by AICA takes additional care **not** to overwrite the value of the GPIOs on startup,
and instead persists the initial value set on the robot controller.

:::

A example configuration of a GPIO configuration file could look as follows:
An example configuration of a GPIO configuration file could look as follows:

```yaml
gpio_topic_config:
Expand All @@ -115,10 +116,12 @@ gpio_topic_config:
```

This configuration claims reads interfaces

- DI[101], DI[102], and DI[103] (`start` is 101 and `length` is 3)
- DO[101] (`start` is 101 and `length` is 1)

and writes to interfaces

- DO[101] and DO[102] (`start` is 101 and `length` is 2)

In order for this configuration to be accepted by the hardware interface, it is necessary to add matching state and
Expand All @@ -143,21 +146,20 @@ command interfaces to the `ros2_control` section of the URDF as follows:

### Force torque sensor configuration

Starting with driver version `collections/fanuc:v1.1.0` and robot controller software V9.40/P85, it is possible to read
force torque sensor values directly from the robot. The type of force sensor can be configured through the `force_sensor_type`
Starting with driver version `collections/fanuc:v1.1.0` and robot controller software V9.40/P85, it is possible to read force torque sensor values directly from the robot. The type of force sensor can be configured through the `force_sensor_type`

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The formatting might be off here.

@MithraGhlm MithraGhlm Jun 12, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll update with Prettier.

update: I checked visually and didn't notice what has changed there, except for bolding the numbers. So it would be nice if we could double check it together when your back in the office.

hardware parameter. Available types are:

- 0: Unselected
- 1: Embedded: for all CRX models with inbuilt sensor
- 2: External: for robots with an external FANUC force torque sensor mounted at the flange
- **0**: Unselected
- **1**: Embedded: for all CRX models with inbuilt sensor
- **2**: External: for robots with an external FANUC force torque sensor mounted at the flange

:::note

Users without software V9.40/P85 should keep the type at 0 to be able to start the hardware interface.

:::

When the `force_sensor_type` is set to 1 or 2, the URDF must include the following `sensor` interfaces within the `ros2_control`
When the `force_sensor_type` is set to 1 or 2, the URDF must include the following `sensor` interfaces within the `ros2_control`
element.

```xml
Expand Down
50 changes: 25 additions & 25 deletions docs/core/examples/guides/orbbec-component.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@ These commands will download and apply the udev rules. To ensure that the rules

Start the AICA Launcher and add the `orbbec` package to your configuration.

<div style={{ display: "flex", justifyContent: "center" }}>
<video autoPlay loop muted playsInline style={{ maxWidth: "100%", borderRadius: "8px" }}>
<source src={orbbecPackage} type="video/webm" />
Adding the Orbbec package.
</video>
</div>
<br/>
<div style={{ display: "flex", justifyContent: "center" }}>
<video autoPlay loop muted playsInline style={{ maxWidth: "100%", borderRadius: "8px" }}>
<source src={orbbecPackage} type="video/webm" />
Adding the Orbbec package.
</video>
</div>
<br/>

Select **Launch AICA Studio** to proceed.

Expand All @@ -70,22 +70,22 @@ Start by creating a new application.
2. In the **Add components** section of the **Scene** tab, locate the **Orbbec Camera** component. Click to add to the
graph.
3. Next, connect the component to the start block.
<div style={{ display: "flex", justifyContent: "center" }}>
<video autoPlay loop muted playsInline style={{ maxWidth: "100%", borderRadius: "8px" }}>
<source src={orbbecNewApp} type="video/webm" />
Creating a new Orbbec Camera component.
</video>
</div>
<div style={{ display: "flex", justifyContent: "center" }}>
<video autoPlay loop muted playsInline style={{ maxWidth: "100%", borderRadius: "8px" }}>
<source src={orbbecNewApp} type="video/webm" />
Creating a new Orbbec Camera component.
</video>
</div>
4. Press **Start** to start the application.
5. To see the live camera feed, click on the gear icon on the bottom right and select **Launch RViz**.
6. In RViz, select _Add > By topic > /orbbec_camera/color_image > Image_. This adds a panel that shows the live color
image. The depth image can also be found under _/orbbec_camera/depth_image > Image_.
<div style={{ display: "flex", justifyContent: "center" }}>
<video autoPlay loop muted playsInline style={{ maxWidth: "100%", borderRadius: "8px" }}>
<source src={orbbecRvizColor} type="video/webm" />
Starting and checking camera live stream.
</video>
</div>
<div style={{ display: "flex", justifyContent: "center" }}>
<video autoPlay loop muted playsInline style={{ maxWidth: "100%", borderRadius: "8px" }}>
<source src={orbbecRvizColor} type="video/webm" />
Starting and checking camera live stream.
</video>
</div>

:::tip

Expand All @@ -103,14 +103,14 @@ still encounter problems getting the video stream, contact the AICA support team

Click on the `Orbbec Camera` component block to view and edit the available parameters.

<div class="text--center">
<img src={orbbecCameraParameters} alt="Basic Orbbec camera parameters" />
</div>
<div class="text--center">
<img src={orbbecCameraParameters} alt="Basic Orbbec camera parameters" />
</div>

Hovering over the exclamation marks next to the names shows a detailed description of the corresponding parameter. Let's
explain some of these here:

- `Color/Depth Width/Height/FPS`: these refer to the resolution and frame rate of the color and depth images. Keep in
- **Color/Depth Width/Height/FPS**: these refer to the resolution and frame rate of the color and depth images. Keep in
mind that only specific pairs of integer values apply here. For more information check the camera's documentation.

:::tip
Expand All @@ -119,9 +119,9 @@ explain some of these here:

:::

- `Enable Alignment`: flag that activates the spatial alignment of the depth image to the corresponding color image.
- **Enable Alignment**: flag that activates the spatial alignment of the depth image to the corresponding color image.
Generates a depth image with the same size as the color, with depth expressed in the color camera coordinate system.
- `Enable Threshold Filter`: flag that activates a threshold filter in the depth image. If activated, corresponding
- **Enable Threshold Filter**: flag that activates a threshold filter in the depth image. If activated, corresponding
filter parameters can be directly defined in the YAML editor to configure the filter behavior. To see what parameters
can be defined, read the description by hovering over the exclamation mark.
<div class="text--center">
Expand Down
20 changes: 10 additions & 10 deletions docs/core/examples/guides/realsense-component.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ Start by creating a new application.
2. In the **Add components** section of the **Scene** tab, locate the **RealSense Camera** component. Click to add to
the graph.
3. Next, connect the component to the start block.
<div style={{ display: "flex", justifyContent: "center" }}>
<video autoPlay loop muted playsInline style={{ maxWidth: "100%", borderRadius: "8px" }}>
<source src={realsenseNewApp} type="video/webm" />
Creating a new RealSense Camera component.
</video>
</div>
<div style={{ display: "flex", justifyContent: "center" }}>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here

<video autoPlay loop muted playsInline style={{ maxWidth: "100%", borderRadius: "8px" }}>
<source src={realsenseNewApp} type="video/webm" />
Creating a new RealSense Camera component.
</video>
</div>
4. Press **Start** to start the application.
5. To see the live camera feed, click on the gear icon on the bottom right and select **Launch RViz**.
6. In RViz, select _Add > By topic > /realsense_camera/color_image_raw > Image_. This adds a panel that shows the live
Expand All @@ -83,11 +83,11 @@ Click on the `RealSense Camera` component block to view and edit the available p
Hovering over the exclamation marks next to the names shows a detailed description of the corresponding parameter. Let's
explain some of these here:

- `Color/Depth profile`: these refer to the resolution and frame rate of the color and depth images. Keep in mind that
- **Color/Depth profile**: these refer to the resolution and frame rate of the color and depth images. Keep in mind that
only specific pairs of values apply here. For more information check the camera's documentation.
- `Enable alignment`: flag that activates the alignment of the depth image to the corresponding color image. Enables the
**Aligned depth image** output, containing a depth image with the same size as the color.
- `Enable temporal filter`: flag that activates a temporal filter which improves depth data persistency by manipulating
- **Enable alignment**: flag that activates the alignment of the depth image to the corresponding color image. Enables the
`Aligned depth image` output, containing a depth image with the same size as the color.
- **Enable temporal filter**: flag that activates a temporal filter which improves depth data persistency by manipulating
per-pixel values based on previous frames. If activated, corresponding filter parameters can be directly defined in
the YAML editor to configure the filter behavior. To see what parameters can be defined, read the description by
hovering over the exclamation mark.
Expand Down
8 changes: 4 additions & 4 deletions docs/core/examples/guides/ur-harware-interface.md
Original file line number Diff line number Diff line change
Expand Up @@ -474,15 +474,15 @@ with the `Headless mode` set to false, other features of the `UR Dashboard Contr

The controller provides four services:

- Hand back control: See [the example above](#run-an-aica-application-as-one-node-of-a-program).
- Zero FT sensor: Triggering this service zeros the built-in force torque sensor.
- Set payload: If the payload of the robot changes during the application, for example by picking up an object, this
- **Hand back control**: See [the example above](#run-an-aica-application-as-one-node-of-a-program).
- **Zero FT sensor**: Triggering this service zeros the built-in force torque sensor.
- **Set payload**: If the payload of the robot changes during the application, for example by picking up an object, this
service can be used to update the payload setting on the robot. Given the mass and center of gravity, call the service
with
```json
{mass: 1.2, cog: [0.15, 0.1, 0.05]}
```
- Resend robot program: In case the hardware interface was launched with `Headless Mode` set to true and the UR program
- **Resend robot program**: In case the hardware interface was launched with `Headless Mode` set to true and the UR program
has been stopped for some reason, this service can be triggered to restart the external control to be able to send
commands to the robot again.

Expand Down
2 changes: 1 addition & 1 deletion docs/core/examples/guides/ur-sim-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ For a detailed description of the available arguments, use:
./run.sh -h
```

Successfull execution of the command will produce an output such as the following:
Successful execution of the command will produce an output such as the following:

```bash
ROBOT_MODEL: ur5e
Expand Down
Loading