Module reference · Downlink

Operator Presentation

The final operator-side stage. It receives released or assisted feedback and maps it to the operator's visual, auditory, or haptic output. It presents available information without changing its semantic content.

LayerUnite.Kernel
DirectionDownlink · robot → operator
Base typeOperatorPresentationModule
SelectionRequired when the feedback pipeline is selected
Demo implementationRoverViewPresentation
Paper§5.11 · DR3

What

The Operator Presentation Module turns operator-side feedback into output. It may update a video surface, draw a predicted path, animate a timeline, play audio, or drive a haptic device. The paper treats these as presentation choices: the module determines what the operator sees or feels, not how the remote robot moved or how communication was delayed.

It receives output from Operator-side Assistance (downlink) when that module is selected. With no downlink assistance, it receives released feedback directly from Downlink Communication.

Why

Presentation needs its own module because a study may change the operator interface without changing the feedback it receives. A delayed camera frame can be shown full-screen, placed beside a map, or combined with a haptic cue. A predicted path can be rendered as a line or an uncertainty region. Keeping those choices here makes the interface part of the study configuration rather than hidden inside transport or assistance code.

The shipped demo is visual. RoverViewPresentation shows the delayed remote video and routes the Network, Path, and Envelope assistance packages to their configured visualisation sources. The paper's module is broader and also supports auditory and haptic output.

How

Operator Presentation receives released or assisted feedback, maps each package to a local source, and updates those sources for the operator.

Downlink Communicationreleased feedback
Operator-side Assistance (downlink)optional preserve · transform · supplement
Operator Presentationselects sources and updates output

The presentation module queues packages and processes them in release order. It then updates local presentation sources once per kernel step. A package handler should route or apply the package; it should not add communication delay or consult authoritative remote state.

  • Package arrival. PresentPackage gives the implementation each released or assisted package.
  • Source update. UpdatePresentation advances time-based output such as animations, throttled mesh refreshes, and delayed video surfaces.
  • Source registry. Each OperatorPresentationSource has a unique id and owns its local camera, texture, mesh, audio, or haptic target.

Boundary

Owns

  • Mapping released or assisted feedback to configured local output sources.
  • Updating visual, auditory, or haptic presentation for the operator.
  • Deciding how a received path, timeline, video, or other package is rendered.

Does not own

  • Applying communication delay or releasing feedback — Downlink Communication's job.
  • Reconstructing remote state or calculating study-specific assistance.
  • Reading live authoritative robot state or changing the meaning of a package.

Contract

The base module owns the package queue and validates the configured source registry. Your implementation provides the two hooks that receive packages and update the local output.

C#
public abstract class OperatorPresentationModule
    : TeleroboticsModule, IPackageConsumer
{
    protected abstract void PresentPackage(
        Package package,
        double timestampSeconds);

    protected virtual void UpdatePresentation(
        double timestampSeconds)
    {
    }
}
  • PresentPackage handles a released package or passes it to a source.
  • UpdatePresentation runs every presentation step, including ticks with no new package.
  • OperatorPresentationSource is the extension point for a concrete output target.
  • The module should preserve package meaning; display transformations belong in the selected presentation source.

Examples

The four conditions keep delayed video fixed while changing the timeline, path, and envelope overlays.

RoverViewPresentation reads the delayed frame from EveryMoveStateReconstruction. The live remote camera is not consulted, so the operator continues to see the latest frame that has crossed the downlink.

C#
public sealed partial class RoverViewPresentation : OperatorPresentationModule
{
    private void PresentReconstructedVideo()
    {
        ViewFramePackage view = stateReconstruction.LatestViewFrame;
        if (view == null || !view.Frame)
            return;

        operatorVideoImage.texture = view.Frame;
        operatorVideoImage.color = Color.white;
        predictionCamera.worldToCameraMatrix =
            view.WorldToCameraMatrix;
        predictionCamera.projectionMatrix =
            view.ProjectionMatrix;
    }
}

Config

  1. Implement OperatorPresentationModule in the study's Runtime assembly.
  2. Attach one presentation implementation to the TeleroboticsAgent and assign its OperatorPresentationSource components.
  3. Give every source a unique id. The base module validates the source registry before the trial starts.
  4. Keep presentation targets local to the source: cameras, canvases, meshes, textures, audio outputs, or haptic devices.
  5. Do not read the live Vehicle / Robot Model from presentation code. Use Operator-side State Reconstruction or the released package data that the study has made available.