{"id":29703344,"url":"https://github.com/bilpapster/simplesim","last_synced_at":"2026-05-15T21:36:10.073Z","repository":{"id":170305644,"uuid":"624094449","full_name":"Bilpapster/SimpleSim","owner":"Bilpapster","description":"A UAV and a ground trarget moving around in 3D space. All in one place. Visualized.","archived":false,"fork":false,"pushed_at":"2023-06-23T20:12:44.000Z","size":58766,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-23T13:52:06.604Z","etag":null,"topics":["matplotlib","numpy","python3","simulator"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bilpapster.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-04-05T18:25:22.000Z","updated_at":"2025-01-12T18:13:57.000Z","dependencies_parsed_at":"2023-07-29T00:30:45.595Z","dependency_job_id":null,"html_url":"https://github.com/Bilpapster/SimpleSim","commit_stats":null,"previous_names":["bilpapster/simplesim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Bilpapster/SimpleSim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bilpapster%2FSimpleSim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bilpapster%2FSimpleSim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bilpapster%2FSimpleSim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bilpapster%2FSimpleSim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bilpapster","download_url":"https://codeload.github.com/Bilpapster/SimpleSim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bilpapster%2FSimpleSim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33080777,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["matplotlib","numpy","python3","simulator"],"created_at":"2025-07-23T13:39:04.017Z","updated_at":"2026-05-15T21:36:10.068Z","avatar_url":"https://github.com/Bilpapster.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `SimpleSim`\nA complete environment for ***executing***, ***visualizing*** and ***generating data*** of simulated flights of an Unmanned Aerial Vehicle (UAV) \nchasing a ground target.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg align=\"middle\" src=\"https://github.com/Bilpapster/SimpleSim/blob/main/Repository%20resources/animation.gif\" alt=\"SimpleSim animation example gif\"/\u003e\n\u003c/p\u003e\n\n\n## 0. Basic Information\n`SimpleSim` is originally developed by the author alongside with their participation in the [AIIA Laboratory](https://aiia.csd.auth.gr/) \nof the Aristotle University of Thessaloniki (AUTh). The simulator is written in `Python 3.9` programming language, making use of \nthe `numpy` and `matplotlib` libraries. Fundamental math and physics equations are used behind the scenes, in combination with a pinch of artistic effort.\n\n\n## 1. How to use `SimpleSim`\nIn order to use `SimpleSim`, you need to clone the current repository and run the following code in the project directory:\n\n```python\nfrom Simulator import Simulator\n\nsimulator = Simulator()\nrun_data = simulator.get_run_data()\nsimulator.visualize()\n```\n\n\n## 2. `SimpleSim` components\nThe `SimpleSim` environment composes of a UAV and a ground target. More details for each component are provided in the following sections\n\n### 2.a. The UAV\nThe UAV is an abstraction of a flying object in the 3-dimensional space. It is equiped with a ***camera*** that surveils the ground, under a \nspecific **angle** that is formed with respect to the horizontal axis. The camera field of view (FOV) has a specific **radius**, shaping a circle \nof view on the ground. Both the angle and the radius are totally customizable at creation time of the `Simulator` object.\n\n### 2.b. The ground target\nThe ground target is an abstraction of an object moving on the ground (`z=0`) in the 3-dimensional space. Its trajectory is unrelated to the UAV's \nmovement. Its route in the 3D space is totally customizable.\n\n\n## 3. Visualizing the simulated run\n`SimpleSim` provides a real-time, animated plot of the simulated run. The animated plot shows the UAV and target's route, as well as the UAV's \ntrace (shadow) on the ground and the UAV's camera field of view on the ground. In order to visualize a randomly generated run, you can use the \nfollowing code:\n\n    Simulator().visualize()\n\nThe above concise, yet powerful, line of code yields a new window with an real-time animated plot of the above elements and an explanatory legend. \n\n## 4. Obtaining run data for further analysis or model training\n\nLast but not least, `SimpleSim` provides an in-build method for accessing run data for both the UAV and the ground target. The data are structured\nunder a specially designed, two-leveled dictionary which can be accessed using the following code snippet:\n```python\nrun_data_dict = Simulator().get_run_data()\n```\n\nInside `run_data_dict` one can find the following hierarchy of stored data:\n- `UAV`\n    - `route`                                               (`ndarray`):  the exact coordinates (x, y, z) at every step of the UAV flight\n    - `min_height`                                          (`float`):    the minimum height the UAV reached during flight\n    - `max_height`                                          (`float`):    the maximum height the UAV reached during flight\n    - `ground_trace_route`                                  (`ndarray`):  the exact coordinates (x, y, z) of the ground trace of the UAV \n                                                                          at every step of its flight\n    - `camera_FOV_center`                                   (`ndarray`):  the exact coordinates (x, y, z) of the UAV camera field of view \n                                                                          center at every step of its flight\n    - `camera_FOV_radius`                                   (`float`):    the radius of the UAV camera field of view center\n    - `camera_FOV_angle_degrees`                            (`float`):    the angle (in degrees) that the UAV camera vision shapes with \n                                                                          the horizontal axis\n    - `camera_target_miss_hits`                             (`ndarray`):  contains number_of_steps boolean values (True -\u003e target inside \n                                                                          FOV at step i, False -\u003e target outside FOV at step 1)\n    - `camera_target_euclidean_distance_form_FOV_center`    (`ndarray`):  contains number_of_steps float values that represent the Euclidean distance \n                                                                          between the target and the camera field of view center at every step\n    - `camera_target_manhattan_distance_form_FOV_center`    (`ndarray`):  contains number_of_steps float values that represent the Manhattan distance \n                                                                          between the target and the camera field of view center at every step\n\n- `target`\n    - `route`                                     (`ndarray`): the exact coordinates (x, y, z) at every step of the target movement\n\n\n## 5. Future improvements\n\nUsing `SimpleSim` as the vehicle to run neural networks is an intriguiung idea that the author intends to implement, under the \nguidance of their AIIA Laboratory Supervisor.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbilpapster%2Fsimplesim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbilpapster%2Fsimplesim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbilpapster%2Fsimplesim/lists"}