Build and Installation

From RidgeRun Developer Wiki

Follow Us On Twitter LinkedIn Email Share this page








This section describes how to build RidgeRun Immersive Teleoperation from source. It assumes that a valid license has been obtained and that access to the source code has already been granted. If you have not yet received access, refer to the Getting the Code section for instructions.

How to build

RidgeRun Immersive Teleoperation provides a Dockerfile and Docker Compose configuration to simplify the build, installation, and usage of the platform. Using Docker ensures a consistent and reproducible environment that bundles the robot-side runtime, streaming components, and operator interfaces into a single container. This approach reduces host-side dependencies and streamlines development and evaluation workflows.

Requirements

The project relies on several RidgeRun software components to enable video streaming, GPU-accelerated video processing, and panoramic image generation on NVIDIA Jetson platforms. These components are required to build and run the system as described in this documentation.

The required components are:

To obtain access to these components, request licenses, or receive additional information, please contact RidgeRun.

Build and Run

The following instructions describe how to build and run the provided Docker image. They assume that all required source repositories are available locally and that Docker and Docker Compose are already installed on the host system.

1. Ensure the build context includes the required sources next to `docker-compose.yaml` and the `docker/` directory:

# rr-teleop/
# ├─ docker-compose.yaml
# ├─ docker/
# ├─ docker-compose.perf.yaml
# ├─ gst-rtsp-sink/         # gst-rtspsink sources used in Dockerfile
# ├─ gst-cuda/              # RidgeRun gst-cuda sources (copied in Dockerfile)
# ├─ cuda-stitching/        # RidgeRun cuda-stitching sources (copied in Dockerfile)
# ├─ gst-rr-projector/      # RidgeRun gst-rr-projector sources (copied in Dockerfile)
# ├─ rr-workspace/          # ROS 2 workspace copied into the image
# └─ src/ ...               # Web interface sources

2. Export the host user and group IDs to ensure correct file ownership inside the container:

export HOST_UID=$(id -u)
export HOST_GID=$(id -g)

3. Build the Docker image:

docker compose build

4. Start the container in detached mode:

The docker compose file defines several environment variables that will be used by the application.

TELEOP_COMMAND_CONFIG: "${TELEOP_COMMAND_CONFIG:-/rr-workspace/src/robot_command/rr_ugv_command/config.yaml}"
TELEOP_ADVERTISED_IP: "${TELEOP_ADVERTISED_IP:-192.168.86.27}"
TELEOP_COMMAND_PORT: "${TELEOP_COMMAND_PORT:-8081}"
TELEOP_RTSP_ENABLE: "${TELEOP_RTSP_ENABLE:-true}"
TELEOP_RTSP_PORT: "${TELEOP_RTSP_PORT:-5555}"
TELEOP_RTSP_MAPPING: "${TELEOP_RTSP_MAPPING:-stream}"
TELEOP_RTSP_FRAMERATE: "${TELEOP_RTSP_FRAMERATE:-30/1}"

You can override them as needed. Usually, the defaults are enough; the only variable that needs to be overridden is the TELEOP_ADVERTISED_IP which corresponds to the robot IP address. A typical command would be:

TELEOP_ADVERTISED_IP=<Your robot IP address> docker compose up -d

5. Open a shell inside the running container as the `admin` user:

docker compose exec --user admin rr_teleop bash

6. Start the robot application by running:

/usr/local/bin/teleop-launch.sh


Info
The same env variables are available when running the teleop-launch.sh script, you can override them at any time.