knowgo-vehicle-simulator

An interactive multi-platform Connected Car simulator for generating and streaming realistic vehicle telemetry.

https://github.com/knowgoio/knowgo-vehicle-simulator

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.9%) to scientific vocabulary

Keywords

connected-car digital-twin flutter-app flutter-desktop flutter-mac flutter-web flutter-windows iso20078 knowgo sae-j3016 simulation-model vehicle-dynamics vehicle-simulator
Last synced: 6 months ago · JSON representation ·

Repository

An interactive multi-platform Connected Car simulator for generating and streaming realistic vehicle telemetry.

Basic Info
Statistics
  • Stars: 35
  • Watchers: 3
  • Forks: 7
  • Open Issues: 8
  • Releases: 3
Topics
connected-car digital-twin flutter-app flutter-desktop flutter-mac flutter-web flutter-windows iso20078 knowgo sae-j3016 simulation-model vehicle-dynamics vehicle-simulator
Created over 5 years ago · Last pushed almost 4 years ago
Metadata Files
Readme License Citation

README.md

KnowGo Vehicle Simulator Logo

knowgo-vehicle-simulator

Build Status GitHub issues GitHub GitHub release (latest by date) knowgo-vehicle-simulator DOI

An interactive multi-platform Connected Car simulator for generating and streaming realistic vehicle telemetry.

Overview

knowgo-vehicle-simulator has been developed to aid in the development and validation of data-driven Connected Car services and models that require easy access to realistic synthetic driving data, both for static and streaming applications. It was originally designed for generating event records for the KnowGo Car platform, but has been generalized so that it may be useful both to Connected Car service developers and researchers.

The vehicle simulator generates a single unique vehicle, which can be controlled either directly through the UI or through an optional REST API. This may be further interfaced with OEM-specific external data sources and models in order to permit the simulation state to act as an automotive digital twin. For fleet simulation workloads, multiple instances of the simulator may be run in parallel, with each generated vehicle being manually joined to a specified fleet.

Live Demo

A live demonstration of the Simulator is available here.

Installation

Installation from a binary release is recommended. Regular releases are made to various app stores, please refer to the one appropriate for your platform:

Get it from the Snap Store Get it from Microsoft Get it on Google Play

Releases can also be obtained directly from GitHub.

Deployment

For deployment of a self-contained web-based instance of the simulator, a number of deployment options have been provided:

Docker

Multi-arch images are provided under knowgo/knowgo-vehicle-simulator. The image can be run directly as:

$ docker run -p 8086:8086 knowgo/knowgo-vehicle-simulator

Kubernetes

To create a Kubernetes Deployment including a single instance of the simulator:

$ kubectl apply -f https://raw.githubusercontent.com/knowgoio/knowgo-vehicle-simulator/simulator-deployment.yaml

An optional Service exposing the simulator port on the cluster can also be applied:

$ kubectl apply -f https://raw.githubusercontent.com/knowgoio/knowgo-vehicle-simulator/simulator-service.yaml

Simulator UI

KnowGo Vehicle Simulator Screenshot

Documentation

For additional documentation and tutorials, please refer to the documentation.

Postman Collection for Simulator REST API

A Postman Collection and pre-configured environment for interacting with the Simulator REST API in a local simulation environment is available here.

Architecture

The Simulator itself consists of several different components: - The Vehicle Simulation model - An Event loop for generating vehicle events, run as either an Isolate or Web Worker depending upon the target platform. - An optional HTTP Server isolate for exposing a REST API with basic vehicle controls - starting/stopping the vehicle, updating the vehicle state, handling vehicle notifications, and querying vehicle events.

As the simulation state can not be shared directly across the isolates, the simulation model in the main isolate acts as the source of truth across the system: - Updates from the Event loop are applied to the simulation model periodically, in line with the event generation frequency: once per second by default. - The HTTP Server isolate maintains its own cached copy of the simulation state, which is updated with changes from the Event isolate, UI interaction, and the REST API. Changes received through the REST API are cached in the HTTP Server isolate and proxied back to the simulation model directly. - The UI in the main isolate is redrawn based on changes to the simulation model, triggered by UI interaction and updates from the Event loop or HTTP Server isolate.

An overview of the overall interactivity patterns for the different target platforms is provided in the table below:

Flutter Web | Other Target Platforms :--------------------------------:|:----------------------------------: Web Worker-driven Simulation Flow | Isolate-driven Simulation Flow

Implementation Status

  • [x] Linux desktop
  • [x] Windows desktop
  • [x] macOS desktop
  • [x] Web
  • [x] Android
  • [x] iOS

Event Publication

By default, generated events are only logged in the console. Events can be published to a custom notification endpoint, a KnowGo API backend, as well as MQTT and Kafka brokers (as well as any combination thereof). The specific configuration for each is outlined below.

Configuration

Configuration of the simulator can be tuned through a config.yaml file, which will be parsed and updated by configuration changes within the UI. The format of the file is:

```yaml sessionLogging: true eventLogging: true

Allow unauthenticated requests to REST API

allowUnauthenticated: true

Optional endpoint to post generated events to

notificationUrl: http://myserver.com/endpoint

Optional KnowGo Backend Configuration

knowgo: server: apiKey:

Optional Kafka Broker Configuration

kafka: broker: topic:

Optional MQTT Broker Configuration

mqtt: broker: topic: ```

A number of environment variables can also be set:

Environment Variable | Description | Default value :-------------------|:-----------|:------------- KNOWGOVEHICLESIMULATOR_CONFIG | Path to config file | <appDocDir>/knowgo_vehicle_simulator/config.yaml KNOWGOVEHICLESIMULATOR_LOGS | Path to log directory | <appDocDir>/knowgo_vehicle_simulator/logs KNOWGOVEHICLESIMULATOR_IP | IP address to bind for REST API | 0.0.0.0 KNOWGOVEHICLESIMULATOR_PORT | HTTP port to bind for REST API | 8086 KNOWGOSIGNINGKEY | Signing and validation secret for API keys | secret-key

Features and bugs

Please file feature requests and bugs at the issue tracker.

License

Licensed under the terms of the MIT license, the full version of which can be found in the LICENSE file included in the distribution.

Owner

  • Name: KnowGoIO
  • Login: knowgoio
  • Kind: organization
  • Email: labs@adaptant.io
  • Location: Munich, Germany

Adaptive Privacy-Preserving Data Services & Solutions for Connected Cars

Citation (CITATION.cff)

# This file is a citation metadata file in the Citation File Format
# (http://citation-file-format.github.io/).
# 
# It provides citation metadata for this version of knowgo-vehicle-simulator.

cff-version: 1.0.3
message: "If you use knowgo-vehicle-simulator in your work, please cite it using the following metadata"
title: knowgo-vehicle-simulator
authors:
  - family-names: Mundt
    given-names: Paul
    orcid: https://orcid.org/0000-0003-0315-290X
version: 1.2.0
doi: 10.5281/zenodo.5111925
date-released: 2021-07-18

GitHub Events

Total
  • Watch event: 5
  • Issue comment event: 1
  • Fork event: 1
Last Year
  • Watch event: 5
  • Issue comment event: 1
  • Fork event: 1

Committers

Last synced: about 2 years ago

All Time
  • Total Commits: 236
  • Total Committers: 1
  • Avg Commits per committer: 236.0
  • Development Distribution Score (DDS): 0.0
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Paul Mundt p****t@a****o 236
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 14
  • Total pull requests: 1
  • Average time to close issues: 16 days
  • Average time to close pull requests: 3 minutes
  • Total issue authors: 8
  • Total pull request authors: 1
  • Average comments per issue: 1.14
  • Average comments per pull request: 0.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • omarzia88 (6)
  • pmundt (2)
  • efrenlopezm (1)
  • Transmitt0r (1)
  • airtoncarini (1)
  • Vickpire (1)
  • Cat2794 (1)
  • farhang19948 (1)
Pull Request Authors
  • pmundt (1)
Top Labels
Issue Labels
bug (4) enhancement (2)
Pull Request Labels

Dependencies

ios/Podfile.lock cocoapods
  • Flutter 1.0.0
  • path_provider 0.0.1
macos/Podfile.lock cocoapods
  • FlutterMacOS 1.0.0
  • path_provider_macos 0.0.1
pubspec.lock pub
  • archive 3.2.2
  • args 2.3.0
  • async 2.8.2
  • auth_header 3.0.1
  • auto_size_text 3.0.0
  • basic_utils 3.9.4
  • boolean_selector 2.1.0
  • characters 1.2.0
  • charcode 1.3.1
  • cli_dialog 0.5.0
  • cli_util 0.3.5
  • clock 1.1.0
  • collection 1.15.0
  • convert 3.0.1
  • crypto 3.0.1
  • csv 5.0.1
  • dart_console 1.0.0
  • event_bus 2.0.0
  • fake_async 1.2.0
  • ffi 1.1.2
  • file 6.1.2
  • flutter 0.0.0
  • flutter_native_splash 2.0.4
  • flutter_picker 2.0.3
  • flutter_test 0.0.0
  • font_awesome_flutter 10.0.0
  • get_it 7.2.0
  • http 0.13.4
  • http_methods 1.1.0
  • http_parser 4.0.0
  • image 3.1.3
  • intl 0.17.0
  • jaguar_jwt 3.0.0
  • js 0.6.4
  • json_annotation 4.4.0
  • kafka 0.1.0
  • knowgo 1.1.0
  • logging 1.0.2
  • matcher 0.12.11
  • material_color_utilities 0.1.3
  • meta 1.7.0
  • mqtt_client 9.6.5
  • msix 3.4.0
  • nested 1.0.0
  • package_config 2.0.2
  • path 1.8.0
  • path_provider 2.0.9
  • path_provider_android 2.0.12
  • path_provider_ios 2.0.8
  • path_provider_linux 2.1.5
  • path_provider_macos 2.0.5
  • path_provider_platform_interface 2.0.3
  • path_provider_windows 2.0.5
  • path_to_regexp 0.4.0
  • petitparser 4.4.0
  • platform 3.1.0
  • plugin_platform_interface 2.1.2
  • pointycastle 3.5.2
  • pool 1.5.0
  • process 4.2.4
  • prometheus_client 1.0.0
  • prometheus_client_shelf 1.0.0
  • provider 6.0.2
  • pub_semver 2.1.1
  • quiver 3.0.1+1
  • random_string 2.3.1
  • shelf 1.2.0
  • shelf_router 1.1.2
  • shelf_web_socket 1.0.1
  • sky_engine 0.0.99
  • source_span 1.8.1
  • stack_trace 1.10.0
  • stream_channel 2.1.0
  • string_scanner 1.1.0
  • term_glyph 1.2.0
  • test_api 0.4.8
  • typed_data 1.3.0
  • universal_io 2.0.4
  • universal_platform 1.0.0+1
  • uuid 3.0.6
  • vector_math 2.1.1
  • vin_decoder 0.2.1-nullsafety
  • web_socket_channel 2.1.0
  • win32 2.4.2
  • xdg_directories 0.2.0+1
  • xml 5.3.1
  • yaml 3.1.0
pubspec.yaml pub
  • flutter_native_splash ^2.0.4 development
  • flutter_test --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess sdk: flutter development
  • msix ^3.4.0 development
  • args ^2.3.0
  • auto_size_text ^3.0.0
  • csv ^5.0.0
  • flutter --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess sdk: flutter
  • flutter_picker ^2.0.0
  • font_awesome_flutter ^10.0.0
  • get_it ^7.2.0
  • http ^0.13.3
  • intl ^0.17.0
  • jaguar_jwt ^3.0.0
  • js ^0.6.3
  • kafka --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess git: !ruby/hash:ActiveSupport::HashWithIndifferentAccess url: https://github.com/adaptant-labs/kafka ref: kafka-0.10-nullsafety
  • knowgo --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess git: !ruby/hash:ActiveSupport::HashWithIndifferentAccess url: https://github.com/knowgoio/knowgo-client-dart
  • mqtt_client ^9.6.5
  • path_provider ^2.0.2
  • path_to_regexp ^0.4.0
  • prometheus_client_shelf ^1.0.0
  • provider ^6.0.1
  • random_string ^2.1.0
  • shelf_router ^1.1.2
  • shelf_web_socket ^1.0.1
  • universal_platform ^1.0.0+1
  • uuid ^3.0.6
  • vector_math ^2.0.8
  • vin_decoder ^0.2.1-nullsafety
  • yaml ^3.1.0