{"id":24229482,"url":"https://github.com/gittygupta/dropy","last_synced_at":"2025-09-22T21:31:13.085Z","repository":{"id":57424224,"uuid":"268004388","full_name":"gittygupta/dropy","owner":"gittygupta","description":"Scaled down version of Microsoft's AirSim (drone only). Ideal for developers looking to control the drone via keyboard. 'dropy' is a utility package to control the simulator by writing minimal code, essentially useful for training of NNs and ideally suited for RL agents. Available on PyPI","archived":false,"fork":false,"pushed_at":"2020-11-05T03:09:04.000Z","size":24771,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-06T09:05:55.791Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pypi.org/project/dropy","language":"C#","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/gittygupta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-05-30T03:48:24.000Z","updated_at":"2021-07-20T10:08:58.000Z","dependencies_parsed_at":"2022-08-23T16:40:49.315Z","dependency_job_id":null,"html_url":"https://github.com/gittygupta/dropy","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gittygupta%2Fdropy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gittygupta%2Fdropy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gittygupta%2Fdropy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gittygupta%2Fdropy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gittygupta","download_url":"https://codeload.github.com/gittygupta/dropy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233867135,"owners_count":18742924,"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":[],"created_at":"2025-01-14T12:19:33.462Z","updated_at":"2025-09-22T21:31:11.534Z","avatar_url":"https://github.com/gittygupta.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dropy\n\nScaled down version of Microsoft's AirSim (drone only). Ideal for developers looking to control the drone via keyboard. 'dropy' is a utility package to control the simulator (developed in Unity) by writing minimal code, essentially useful for training of NNs and ideally suited for RL agents.\n\n[![dropy](https://img.shields.io/badge/dropy-GitHub-red.svg)](https://github.com/gittygupta/dropy)\n[![Simulator](https://img.shields.io/badge/Simulator-drive-yellow.svg)](https://drive.google.com/drive/folders/1aKszPhx8NSxfkh6jYMFV7Cr-rY0P3CeX?usp=sharing)\n[![PyPI](https://img.shields.io/badge/PyPI-v0.1.0-blue.svg)](https://pypi.org/project/dropy/)\n[![python](https://img.shields.io/badge/python-3.6+-blue.svg)](https://www.python.org)\n[![Maintained?](https://img.shields.io/badge/Maintained%3F-YES-green.svg)](https://github.com/gittygupta/dropy)\n[![v0.0.x?](https://img.shields.io/badge/v0.0.x-README-indigo.svg)](https://github.com/gittygupta/dropy/blob/master/README_v0.0.x.md)\n\n\n## New to dropy 0.1.0\n\n* Added multiplayer support to work with more than 1 flight object\n* Improved Camera Stability\n\n# Installation\n\n#### For the package to work, please download folder containing the simulator from the the drive link provided in the badge above. \n\n```\npip install dropy\n```\n\nRequires Python 3.6+\n\nCurrently supported only on Win32 (MS Windows) environment\n\n\n# Usage\n\n#### Before using any functionalities of the package, make sure that the simulator (one or multiple instances) is (are) running. Key bindings for the multiplayer simulator is provided in the link itself.\n\n```python\nfrom dropy import Flight\n\nflight = Flight(location='simulator')\n\nflight.turn_left(180)\n\nprint('Current Global Coordinates : ', flight.coords_xyz())\nprint('Current Global Angles : ', flight.angles_xyz())\n```\n\n![dropy](https://github.com/gittygupta/dropy/blob/master/readme_gif.gif)\n\nThe 'location' parameter specifies the directory of the simulator. In the above, it's in the folder 'simulator' under the same working directory.\n\n`\nturn_left(n)\n`\n -\u003e 'n' specifies the number of degrees to turn\n\n\n# Multiplayer\n\n```python\nfrom dropy import Flight\n\nflight1 = Flight(location='multiplayer_drone_simulator')    # regarded as the host flight object\nflight2 = Flight(location='multiplayer_drone_simulator')    # new flight-2 spawned\nflight3 = Flight(location='multiplayer_drone_simulator')    # new flight-3 spawned\nflight4 = Flight(location='multiplayer_drone_simulator')    # new flight=4 spawned\n\nflight1.turn_left(7)                                        # host turns 7 * 5 degrees to the left\nflight2.turn_right(7)                                       # flight-2 turns 7 * 5 degrees to the right\nflight3.forward(7)                                          # flight-3 goes forward by 7 distance units\nflight4.up(7)                                               # flight-4 thrusts up by 7 distance units\n\nprint(flight1.angles_xyz())                                 # returns euler angles of the host\nprint(flight2.angles_xyz())                                 # returns euler angles of flight-2\nprint(flight3.angles_xyz())                                 # returns euler angles of flight-3\nprint(flight4.angles_xyz())                                 # returns euler angles of flight-4\n\nflight1.tpp_shot().save('test1.jpg')                        # saves screenshot of tpp-mode of the host\nflight2.tpp_shot().save('test2.jpg')                        # saves screenshot of tpp-mode of flight-2\nflight3.tpp_shot().save('test3.jpg')                        # saves screenshot of tpp-mode of flight-3\nflight4.tpp_shot().save('test4.jpg')                        # saves screenshot of tpp-mode of flight-4\n\nflight2.kill()                                              # flight-2 terminated from simulator and closed\nflight3.kill()                                              # flight-3 terminated from simulator and closed\nflight4.kill()                                              # flight-4 terminated from simulator and closed\nflight1.kill()                                              # Host terminated from simulator and closed\n```\n\n#### Host must not be killed at first, or should never be killed. Killing of the host causes all the other flight objects to be terminated. You might as well choose to never control the host object, but it does take up some resources. \n#### HACK : Resize the host window to very small. Doesn't take up much resources then.\n####\n\n# Examples\n\n## Controls\n\n```python\nfrom dropy import Flight\n\nflight = Flight(location='simulator')  # location defines the directory where the simulator is, in the workstation\n\nflight.turn_left(7)                    # turns 7 * 5 degrees to the left\nflight.turn_right(7)                   # turns 7 * 5 degrees to the right\nflight.up(10)                          # thrusts up by 10 distance units\nflight.down(10)                        # drops down by 10 distance units\nflight.forward(10)                     # moves forward by 10 distance units\nflight.backward(10)                    # moves backward by 10 distance units\nflight.swerve_left(10)                 # swerves 10 units to the left\nflight.swerve_right(10)                # swerves 10 units to the right\n```\n\n## Utilities\n\n```python\nfrom dropy import Flight\n\nflight = Flight(location='simulator')  # location defines the directory where the simulator is, in the workstation\n\ncoords = flight.coords_xyz()           # returns current global position of the agent\nangles = flight.angles_xyz()           # returns current global euler angles of the agent\nflight.top_view()                      # activates the top-down view of the simulator\nflight.fpp_view()                      # activates the FPP view of the simulator\nflight.tpp_view()                      # activates the TPP view of the simulator\nfpp_view = flight.fpp_shot()           # returns ImageGrab of FPP camera of the simulator\ntop_view = flight.top_shot()           # returns ImageGrab of top-down view of the simulator\ntpp_view = flight.tpp_shot()           # returns ImageGrab of TPP camera (Main Camera) of the simulator\nflight.goto(500, 500)                  # flight travels from current global position to given global coordinates(500, 500)\nflight.kill()                          # terminates flight object from the simulator, and closes that instance\n```\n\n# Contributions\n\nEvery contribution will be welcome.\n\nPlease feel free to raise issues on GitHub or pull requests for ideas, features and add-ons.\n\nThe vision is to create better environments in a Pythonic way, for small scale development projects.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgittygupta%2Fdropy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgittygupta%2Fdropy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgittygupta%2Fdropy/lists"}