Skip to content

Architecture

WIP

Components

graph LR
  User((🙂))       <-->  Dial[Dial]
  LCM>LCM Sources]  -.->  LWS
  LWS               -.->  Dial
  LWS               -.->  RRWS
  RRWS              -.->  Dial
  Dial              <--->  db[(/share)]
  MolaRS            -.->  LWS
  MolaRS            <-->  Dial

  classDef noFrame fill:none,stroke:none,font-size:20pt;

  classDef dial stroke-width:3px;
  class User noFrame;
  class Dial dial

LCM sources

  • Instruments generating LCM messages
  • LCM log files being played (lcm-logplayer)

LWS

LCM websocket server that relays LCM messages over websockets

RRWS

Rerun websocket server:

  • Subscribes to a LWS to relay the messages to Rerun Viewer instances

Dial

By Dial, we refer to both the UI webapp and its server counterpart.

  • Connects to a selected LWS with associated channel subscription restricted to the channels specified in the deployment2
  • Connects to RRWS corresponding to the selected LWS, with received messages displayed in the embedded Rerun Viewer
  • Has controls to start/stop the RRWS associated with the selected LWS3

Share

Dial can expose the contents of a host directory1 to the UI so the user can perform a number of actions:

  • Select deployment for the current session in Dial
  • Select LCM log files for playback
  • ( ) Select mission script associated with the active deployment
  • ...

MolaRS

TODO


  1. In the Dial installation on compaslabdev we use this mechanism to expose the contents of the /compas share. 

  2. Except when the "Monitor" view is selected, in which case Dial subscribes to all channels. 

  3. There are no authorization checks in place at the moment.