drone-playground

Simple Drone Simulator for Educational Purposes Based on Babylon.js

https://github.com/maruta/drone-playground

Science Score: 44.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
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (3.8%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Simple Drone Simulator for Educational Purposes Based on Babylon.js

Basic Info
Statistics
  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created over 1 year ago · Last pushed 8 months ago
Metadata Files
Readme License Citation

README.md

drone-playground

Simple Drone Simulator for Educational Purposes Based on Babylon.js

This simulator was created as a simplified alternative to the AirSim based simulator previously used in classes. Only the parts related to horizontal movements, which the author uses in lectures, have been adjusted. Please do not expect too much.

TO RUN

  • Go https://maruta.github.io/drone-playground/
  • Press [Run] Button to execute the code
  • Use [Pause] to pause/resume the simulation
  • Use [Reset time] to reset the simulation time
  • Use [Despawn All] to remove all drones from the scene

CAMERA CONTROL

Camera location and orientation are controlled by Keyboard / Mouse(wheel) / Touch / Gamepad

  • PgUp PgDn Forward / Backward / Left / Right / Up / Down
  • W S A D Q E Horizontal (Forward / Backward / Left / Right) / Vertical (Up / Down)
  • Mouse wheel: Zoom in/out
  • Touch: Tap to follow drone, pinch to zoom, drag to rotate camera
  • Hide Code / Show Code button to toggle code editor visibility

EXAMPLE USAGE IN EDUCATION

Discuss the drone behavior corresponding to the PD controller designs submitted by the students. Press [Run] to execute the code and start the simulation.

  • Design Comparison

    • The drones are placed in the X-Z plane in the order of gain crossing frequency and phase margin.
    • Observe the difference in response due to gain crossing frequency and phase margin.
  • Race

    • Drones are lined up in order of gain crossing frequency.
    • After the second round, they switch to controllers of their own design
    • After the third lap, the speed gradually increases.

LICENSE

  • This project is licensed under MIT License

  • Third-party libraries and resources within the vendor and dist folders (e.g., CSS frameworks, JavaScript libraries) are subject to their respective licenses. For more details, please refer to the license files of the respective projects.

Acknowledgements

  • The 3D model of drone (static/model/drone.glb) was provided by user 31415926 on sketchfab. It is licensed under the CC BY 4.0 License.

Local Development and Building

Follow these steps to develop and build the project on your local environment.

Prerequisites

Setup

  1. Clone or download this repository.

  2. Open a terminal in the project's root directory.

  3. Run the following command to install the necessary dependencies:

npm install

Starting the Development Server

To run the project during development:

  1. Execute the following command:

npm start

  1. Open http://localhost:9000 in your browser.

Building the Project

To build the project for production:

  1. Run the following command:

npm run build

  1. The built files will be output to the dist directory.

Developing with Visual Studio Code

If you're using Visual Studio Code for development:

  1. Open the project's root directory in Visual Studio Code.

  2. To start debugging:

    • start the development server with npm start.
    • Press F5 or select the Debug view (bug icon) from the activity bar on the left.
    • Choose "Launch Chrome against localhost" from the dropdown menu.
    • Click the green play button or press F5 to start debugging.

This project already includes a .vscode/launch.json file, so you can start debugging without additional configuration.

Using Visual Studio Code makes it easier to develop and debug TypeScript, allowing you to set breakpoints, watch variables, step through code, and more.

Owner

  • Name: Ichiro Maruta
  • Login: maruta
  • Kind: user
  • Company: Kyoto University

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: "Maruta"
  given-names: "Ichiro"
  orcid: "https://orcid.org/0000-0002-2246-3570"
title: "Simple Drone Simulator for Educational Purposes Based on Babylon.js"
date-released: 2024-07-02
url: "https://github.com/maruta/drone-playground"

GitHub Events

Total
  • Watch event: 2
  • Push event: 14
Last Year
  • Watch event: 2
  • Push event: 14

Dependencies

.github/workflows/deploy.yml actions
  • actions/checkout v4 composite
  • actions/deploy-pages v1 composite
  • actions/setup-node v4 composite
  • actions/upload-pages-artifact v1 composite
package-lock.json npm
  • 445 dependencies
package.json npm
  • @types/node ^20.14.9 development
  • clean-webpack-plugin ^4.0.0 development
  • copy-webpack-plugin ^12.0.2 development
  • css-loader ^7.1.2 development
  • file-loader ^6.2.0 development
  • html-webpack-plugin ^5.6.0 development
  • monaco-editor-webpack-plugin ^7.1.0 development
  • source-map-loader ^5.0.0 development
  • style-loader ^4.0.0 development
  • ts-loader ^9.5.1 development
  • typescript ^5.5.3 development
  • webpack ^5.92.1 development
  • webpack-cli ^5.1.4 development
  • webpack-dev-server ^5.0.4 development
  • babylonjs ^7.13.1
  • babylonjs-gui ^7.13.1
  • babylonjs-loaders ^7.13.1
  • babylonjs-materials ^7.13.1
  • monaco-editor ^0.50.0