Skip to content

YuqiHuai/SORA-SVL

Repository files navigation

SORA-SVL-Server: Local Cloud built for SVL Simulator

GitHub contributors


About the Project

LGSVL Simulator has been a powerful simulator that made many research projects possible. Unfortunately, LG has made the difficult decision to suspend active development of SVL Simulator, as of January 1, 2022. The official statement says the cloud will be up and running through at least Thursday, June 30, 2022.

The current version of the SVL Simulator cannot be used without a cloud that provides necessary information (e.g. assetGuid) and download endpoints for the SVL client. As an effort to keep the tool available for future research, a draft for a local cloud has been started here.

If you want to contribute to the project, please consider joining our Slack workspace.

Disclaimer

Thank you for using and considering citing this project! It is important to know that SORA-SVL is just a web application necessary to use the SVL simulator developed by LG without additional modification. To avoid potential confusion, please avoid describing SORA-SVL as a simulator! I am also adding the term "server" to the name of this project as of September 25, 2024, to avoid further confusion. I would greatly appreciate it if you could cite this work in addition to the appropriate source (the SVL simulator) in your academic work!

Built With

  1. Docker
  2. NGINX (Router)
  3. MongoDB (Database)
  4. NodeJS + ExpressJS (Server)
  5. React (Client)
  6. Sphinx (docs)

Getting Started

Current Version Supports:

  1. Viewing maps, vehicles, plugins (previews)
  2. Allow SVL Client to connect to a local cloud
  3. Start an API Only Simulation

To Run the Project

  1. Install Docker

  2. Clone the project

  3. Download assets needed from Google Drive and unzip them in server/assets. (preview, maps, plugins, vehicles, hdmaps)

    Since the compressed file for entire maps directory is too large, you will have to manually download map asset individually from the Google Drive folder. Also, when downloading individual asset file, make sure there is no file extension. Google sometimes automatically adds ".zip" to the end, make sure to remove this from the filename. See #33 (comment)

    UPDATE 2022-06-30: WISE provides geojson for some of the maps. To access those geojson, download geojson.json from Google Drive, and then import them into MongoDB.

    UPDATE 2024-09-30: For users in China, please download from Baidu Drive. Also see #84 (comment) and #89 (comment)

  4. Run docker compose up --build -d

  5. Local SVL Cloud will be available at "http://localhost"

  6. Add config.yml to the root directory of SVL client with the following content:

    headless: false
    read_only: false
    api_hostname: "localhost"
    api_port: 8181
    cloud_url: "http://localhost"
    

    Note the cloud url starts with http (not https).

    See documentation from SVL archive.

  7. Now, SVL Client can be used without WISE.

Future Plans

  • Gradually incorporate original LGSVL documentation
  • Allow uploading sensor configuration
  • Allow creating new simulation templates
  • Allow creating new vehicle sensor configurations
  • Add cluster feature to the cloud
  • Allow website to reflect client connection status.
  • Host assets at a different location

Known Issues

  • It is possible that permission settings related to Docker can cause project to fail (unable to load preview, unable to download assets). See #11 (comment)
  • I recommend installing docker following instructions in https://docs.docker.com/engine/install/ubuntu/
  • There may be issues with npm/docker image which causes docker compose up -d to fail, see #84 (comment) and #89 (comment)
  • There have been several issues related to failing to start the server when running the project in China. Please see the comments referenced above to configure NPM properly.

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request