Sim-VT (Simulate Vehicle Teleoperation) is a simulation environment originally created for a university research project about teleoperation in 2020 (See here for more info). The software was then/now modified to be used in a user study for my bachelor thesis. The project is build on electron/nodeJS and includes a webclient, a webserver (to serve the client) and a backend build on nodeJS/javascript. Communication happens in realtime via websockets.
The webclient acts as the cars infotainment screen. It can be used to request remote driving assistance or display alerts on problematic driving behaviour. The backend provides a one-man teleoperation call center.
- (Mocked) Car Infotainment-Screen for requesting & offering teleoperation
- a really basic webapp to test websockets functionallity
- buildin web server for hosting previously the webclient and a rest api
- buildin websockets server is used for sending commands and request signals from/to webclient/backend
- an Admin-UI for the backend in an electron provided (local) window
The code in this repository was quickly hacked together and should not be used (directly or as reference) for any serious production work. Testing was only done within the parameters of our study setup (which is not documented here). You can still use this code if you want though. (You have been warned!)
No binaries are provided. You will therefore have to setup a full development workspace.
Make sure you have NodeJS + npm installed before you start!
- Clone this project to the preferred location
- Run
npm install
to install the required nodejs modules
-
just run
npm start
and you should be good to go:- The local Admin-UI for the Teleoperator Call Center will open in a new window
- The buildin webserver should be available at
http://localhost:8080
locally and over the network (using the computers ip adress)- The Car Infotainment is located at
http://server_ip:8080/car
- The WebSockets-Test-Client is locates at
http://server_ip:8080/ws-test
. It will by default point to the websockets server atws://server_ip:8081
- The Car Infotainment is located at
-
"terminating" the software. (But you can for sure do so by just hitting
ctrl+c
inside your console window). The proper way to do this would be to right-click the programs´s icon in you systems menubar and choosing 'Quit' form the context-menu.
- Nod4JS v14 LTS(and npm)
- ElectronJS / 'electron' 8
- Pure (vanilla) javascript (yep, no fancy typescript stuff here)
- ExpressJS (as buildin webserver / for rest api)
- WS (Websocket) module for nodeJS
The project structure may not be self explanatory. Therefore we would like to give you a quick overview:
/frontend
contains the (electron based) frontend for the Admin-UI/server
contains the server code.- The main
index.js
file just acts as a service controller for the actual server-modules inside the./services
directory:contentService.js
- static webserver (using expressjs) that exposes the subdirectory./data/clients
via (insecure) http on port8080
. This exposed clients directory contains:./car/*
the (mocked) "Car-Infortainment" Screen./ws-test/*
the websockets test client./shared/assets/*
contains assets that are reused in different webapps like./css
-stylesheets (and fonts-stylesheets),./images
../javascript
-fileswebui.js
that contains the mainapp
code for the mocked clients. Their individual app.js files will implement/overwrite certain functions in this file./lib
contains additional libraries/frameworks (like jQuery) from other vendors
signalService.js
- websockets server (using ws module) that runs on port8081
- The main
appController.js
is the main script/controller for the entire simulation environment. It contains "glue code" for the backends Admin-UI, starts/stops the services and acts as delegate for incomming (websocket) signals/messages.main.js
is the entry/startup script to the simulation environment.
- Samuel Schreiber aka. samyLS UXD (User Experience Design) Student at University of Applied Sciences Ingolstadt (THI)
No descicion has been made
-
Icons are from from Icons8
-
Stock photos from Pixabay as driver-personas:
- https://pixabay.com/photos/beautiful-girl-smiling-young-woman-1687955/ (-> "Elenor Kaiser")
- https://pixabay.com/photos/beard-face-man-model-mustache-1845166/ (-> "Jan Mayer")
-
Sound-files (mp3) were produced by me