{"id":19019841,"url":"https://github.com/knowgoio/knowgo-vehicle-simulator","last_synced_at":"2025-09-25T21:23:16.138Z","repository":{"id":54170547,"uuid":"274369996","full_name":"knowgoio/knowgo-vehicle-simulator","owner":"knowgoio","description":"An interactive multi-platform Connected Car simulator for generating and streaming realistic vehicle telemetry.","archived":false,"fork":false,"pushed_at":"2022-05-12T08:19:35.000Z","size":19540,"stargazers_count":35,"open_issues_count":8,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-12T19:07:44.231Z","etag":null,"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"],"latest_commit_sha":null,"homepage":"https://knowgoio.github.io/knowgo-vehicle-simulator/docs","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/knowgoio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-06-23T09:54:20.000Z","updated_at":"2025-02-18T19:40:04.000Z","dependencies_parsed_at":"2022-08-13T08:11:02.116Z","dependency_job_id":null,"html_url":"https://github.com/knowgoio/knowgo-vehicle-simulator","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knowgoio%2Fknowgo-vehicle-simulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knowgoio%2Fknowgo-vehicle-simulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knowgoio%2Fknowgo-vehicle-simulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/knowgoio%2Fknowgo-vehicle-simulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/knowgoio","download_url":"https://codeload.github.com/knowgoio/knowgo-vehicle-simulator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250375029,"owners_count":21420043,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"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"],"created_at":"2024-11-08T20:14:42.706Z","updated_at":"2025-09-25T21:23:11.119Z","avatar_url":"https://github.com/knowgoio.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"![KnowGo Vehicle Simulator Logo](docs/images/logo.png)\n\n# knowgo-vehicle-simulator\n\n[![Build Status](https://travis-ci.com/knowgoio/knowgo-vehicle-simulator.svg?branch=master)](https://travis-ci.com/knowgoio/knowgo-vehicle-simulator)\n![GitHub issues](https://img.shields.io/github/issues/knowgoio/knowgo-vehicle-simulator)\n![GitHub](https://img.shields.io/github/license/knowgoio/knowgo-vehicle-simulator)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/knowgoio/knowgo-vehicle-simulator)\n[![knowgo-vehicle-simulator](https://snapcraft.io/knowgo-vehicle-simulator/badge.svg)](https://snapcraft.io/knowgo-vehicle-simulator)\n[![DOI](https://zenodo.org/badge/274369996.svg)](https://zenodo.org/badge/latestdoi/274369996)\n\n\nAn interactive multi-platform Connected Car simulator for generating\nand streaming realistic vehicle telemetry.\n\n## Overview\n\n``knowgo-vehicle-simulator`` has been developed to aid in the\ndevelopment and validation of data-driven Connected Car services and\nmodels that require easy access to realistic synthetic driving data,\nboth for static and streaming applications. It was originally designed\nfor generating event records for the [KnowGo Car] platform, but has\nbeen generalized so that it may be useful both to Connected Car service\ndevelopers and researchers.\n\nThe vehicle simulator generates a single unique vehicle, which can\nbe controlled either directly through the UI or through an optional\n[REST API]. This may be further interfaced with OEM-specific external\ndata sources and models in order to permit the simulation state to act\nas an automotive digital twin. For fleet simulation workloads, multiple\ninstances of the simulator may be run in parallel, with each generated\nvehicle being manually joined to a specified fleet.\n\n### Live Demo\n\nA live demonstration of the Simulator is available [here][live-demo].\n\n[live-demo]: https://knowgoio.github.io/knowgo-vehicle-simulator\n\n### Installation\n\nInstallation from a binary release is recommended. Regular releases are\nmade to various app stores, please refer to the one appropriate for\nyour platform:\n\n[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/knowgo-vehicle-simulator)\n[\u003cimg src=\"https://developer.microsoft.com/store/badges/images/English_get-it-from-MS.png\" alt=\"Get it from Microsoft\" width=\"182\" height=56/\u003e](https://www.microsoft.com/store/apps/9N70DBN4ZX3W?ocid=badge)\n\u003ca href='https://play.google.com/store/apps/details?id=io.knowgo.vehicle.simulator\u0026pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'\u003e\u003cimg alt='Get it on Google Play' src='https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Google_Play_Store_badge_EN.svg/1280px-Google_Play_Store_badge_EN.svg.png' width=190/\u003e\u003c/a\u003e\n\nReleases can also be obtained directly from [GitHub][releases].\n\n[releases]: https://github.com/knowgoio/knowgo-vehicle-simulator/releases\n\n### Deployment\n\nFor deployment of a self-contained web-based instance of the simulator,\na number of deployment options have been provided:\n\n#### Docker\n\nMulti-arch images are provided under [knowgo/knowgo-vehicle-simulator].\nThe image can be run directly as:\n\n```\n$ docker run -p 8086:8086 knowgo/knowgo-vehicle-simulator\n```\n\n[knowgo/knowgo-vehicle-simulator]: https://hub.docker.com/repository/docker/knowgo/knowgo-vehicle-simulator\n\n#### Kubernetes\n\nTo create a Kubernetes `Deployment` including a single instance of the\nsimulator:\n\n```\n$ kubectl apply -f https://raw.githubusercontent.com/knowgoio/knowgo-vehicle-simulator/simulator-deployment.yaml\n```\n\nAn optional `Service` exposing the simulator port on the cluster can\nalso be applied:\n\n```\n$ kubectl apply -f https://raw.githubusercontent.com/knowgoio/knowgo-vehicle-simulator/simulator-service.yaml\n```\n\n### Simulator UI\n\n![KnowGo Vehicle Simulator Screenshot](docs/images/simulator.png)\n\n## Documentation\n\nFor additional documentation and tutorials, please refer to the [documentation].\n\n[documentation]: https://knowgoio.github.io/knowgo-vehicle-simulator/docs\n\n### Postman Collection for Simulator REST API\n\nA Postman Collection and pre-configured environment for interacting\nwith the Simulator [REST API] in a local simulation environment is\navailable [here][postman-collections].\n\n[postman-collections]: https://github.com/knowgoio/knowgo-postman-collections\n\n## Architecture \nThe Simulator itself consists of several different components:\n- The Vehicle Simulation model\n- An `Event loop` for generating vehicle events, run as either\n  an Isolate or Web Worker depending upon the target platform.\n- An optional `HTTP Server isolate` for exposing a REST API with basic\n  vehicle controls - starting/stopping the vehicle, updating the\n  vehicle state, handling vehicle notifications, and querying vehicle\n  events.\n\nAs the simulation state can not be shared directly across the isolates,\nthe simulation model in the main isolate acts as the source of truth\nacross the system:\n- Updates from the `Event loop` are applied to the simulation model\n  periodically, in line with the event generation frequency: once\n  per second by default.\n- The `HTTP Server isolate` maintains its own cached copy of the\n  simulation state, which is updated with changes from the Event\n  isolate, UI interaction, and the REST API. Changes received through\n  the REST API are cached in the `HTTP Server isolate` and proxied back\n  to the simulation model directly.\n- The UI in the `main isolate` is redrawn based on changes to the\n  simulation model, triggered by UI interaction and updates from the\n  `Event loop` or `HTTP Server isolate`.\n\nAn overview of the overall interactivity patterns for the different\ntarget platforms is provided in the table below:\n\nFlutter Web                       | Other Target Platforms\n:--------------------------------:|:----------------------------------:\n![Web Worker-driven Simulation Flow](docs/images/overview-web.png) | ![Isolate-driven Simulation Flow](docs/images/overview.png)\n\n## Implementation Status\n\n- [x] Linux desktop\n- [x] Windows desktop\n- [x] macOS desktop\n- [x] Web\n- [x] Android\n- [x] iOS\n\n## Event Publication\n\nBy default, generated events are only logged in the console. Events can\nbe published to a custom notification endpoint, a KnowGo API backend,\nas well as MQTT and Kafka brokers (as well as any combination thereof).\nThe specific configuration for each is outlined below.\n\n## Configuration\n\nConfiguration of the simulator can be tuned through a `config.yaml`\nfile, which will be parsed and updated by configuration changes within\nthe UI. The format of the file is:\n\n```yaml\nsessionLogging: true\neventLogging: true\n\n# Allow unauthenticated requests to REST API\nallowUnauthenticated: true\n\n# Optional endpoint to post generated events to\nnotificationUrl: http://myserver.com/endpoint\n\n# Optional KnowGo Backend Configuration\nknowgo:\n  server: \u003cknowgo-API-server\u003e\n  apiKey: \u003cknowgo-API-Key\u003e\n\n# Optional Kafka Broker Configuration\nkafka:\n  broker: \u003ckafka-broker-address\u003e\n  topic: \u003ckafka-topic\u003e\n\n# Optional MQTT Broker Configuration\nmqtt:\n  broker: \u003cMQTT-broker-address\u003e\n  topic: \u003cMQTT-topic\u003e\n```\n\nA number of environment variables can also be set:\n\nEnvironment Variable | Description | Default value\n:-------------------|:-----------|:-------------\n*KNOWGO_VEHICLE_SIMULATOR_CONFIG* | Path to config file | `\u003cappDocDir\u003e/knowgo_vehicle_simulator/config.yaml`\n*KNOWGO_VEHICLE_SIMULATOR_LOGS* | Path to log directory | `\u003cappDocDir\u003e/knowgo_vehicle_simulator/logs`\n*KNOWGO_VEHICLE_SIMULATOR_IP* | IP address to bind for REST API | 0.0.0.0\n*KNOWGO_VEHICLE_SIMULATOR_PORT* | HTTP port to bind for REST API | 8086\n*KNOWGO_SIGNING_KEY* | Signing and validation secret for API keys | secret-key\n\n## Features and bugs\n\nPlease file feature requests and bugs at the [issue tracker][tracker].\n\n[tracker]: https://github.com/knowgoio/knowgo-vehicle-simulator/issues\n\n## License\n\nLicensed under the terms of the MIT license, the full version of which\ncan be found in the [LICENSE][license] file included in the distribution.\n\n[KnowGo Car]: https://knowgo.io\n[REST API]: https://knowgoio.github.io/knowgo-vehicle-simulator/docs/rest-api/\n[license]: https://raw.githubusercontent.com/knowgoio/knowgo-vehicle-simulator/master/LICENSE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknowgoio%2Fknowgo-vehicle-simulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fknowgoio%2Fknowgo-vehicle-simulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknowgoio%2Fknowgo-vehicle-simulator/lists"}