{"id":16105593,"url":"https://github.com/charlesyuan02/flydo","last_synced_at":"2025-03-18T08:31:54.207Z","repository":{"id":124966000,"uuid":"443938817","full_name":"CharlesYuan02/flydo","owner":"CharlesYuan02","description":"A GUI made using Tkinter for my DJI Tello EDU, named Flydo.","archived":false,"fork":false,"pushed_at":"2022-03-08T21:49:53.000Z","size":9008,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-16T18:21:26.862Z","etag":null,"topics":["faster-rcnn","object-detection","opencv","pytorch","tello-drone","tello-sdk","telloedu","threading","tkinter","tkinter-gui"],"latest_commit_sha":null,"homepage":"","language":"Python","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/CharlesYuan02.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-01-03T04:22:47.000Z","updated_at":"2024-09-24T16:07:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"f509a4bb-2154-4357-9219-a4bdc91252d1","html_url":"https://github.com/CharlesYuan02/flydo","commit_stats":null,"previous_names":["charlesyuan02/flydo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CharlesYuan02%2Fflydo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CharlesYuan02%2Fflydo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CharlesYuan02%2Fflydo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CharlesYuan02%2Fflydo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CharlesYuan02","download_url":"https://codeload.github.com/CharlesYuan02/flydo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244184194,"owners_count":20412169,"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":["faster-rcnn","object-detection","opencv","pytorch","tello-drone","tello-sdk","telloedu","threading","tkinter","tkinter-gui"],"created_at":"2024-10-09T19:10:08.239Z","updated_at":"2025-03-18T08:31:52.960Z","avatar_url":"https://github.com/CharlesYuan02.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# flydo\n\u003cimg src=\"https://github.com/Chubbyman2/flydo/blob/main/docs/flydo.PNG\"\u003e\n\n## Introduction\nI have no idea why, but back when 2021 first started, I was listening to \u003ca href=\"https://www.youtube.com/watch?v=8ajBxCch0No\"\u003eSpeed of Light by DJ Okawari\u003c/a\u003e (you know, that Arknights song). The video was basically just a looping gif of Texas flying a drone with Exusiai, and for some reason I ended up really wanting a drone. So I bought one from DJI that could be programmed with Python, the Tello EDU. I've been meaning to do this project for a while now, so here it is. A GUI made using Tkinter for my DJI Tello EDU, named Flydo (after \u003ca href=\"https://86-eighty-six.fandom.com/wiki/Fido\"\u003eFido\u003c/a\u003e from 86).\n\n## Getting Started\nTo get started, you first need a trained Pytorch model (since I couldn't upload the large saved .pth file).\n```\nmodel/train.py\n```\nThen you can run the actual GUI: \n```\napp.py\n```\n\n### Prerequisites\n```\n-f https://download.pytorch.org/whl/torch_stable.html\ntorch==1.10.1+cu113 \ntorchvision==0.11.2+cu113 \ntorchaudio===0.10.1+cu113\ndjitellopy==2.4.0\npycocotools-windows==2.0.0.2\npygame==2.1.2\npython-opencv==4.5.5.62\n```\n\n## Built With\n### djitellopy (Tello EDU SDK)\ndjitellopy was implemented based on the official DJI Tello/Tello EDU SDK, and allows for easy implementation of all tello commands, simple retrieval of the drone's video stream, and parsing/receiving of state packets. All drone commands were implemented using this SDK.\n\n### Tkinter\nTkinter was used to create the GUI for controlling the drone. Different drone commands were implemented with multithreading so as to prevent the visual display from freezing while the drone is moving (this took me a while to figure out how to do). The result is shown below.\n\n### Pytorch\nPytorch's pretrained Faster R-CNN model was used for the head-tracking feature. The model was fine-tuned using transfer learning on a custom dataset. It actually works a lot better than I thought it would, especially given the limited amount of training data and epochs! \n\n### Coco-Annotator\n\u003ca href=\"https://github.com/jsbroks/coco-annotator\"\u003eCoco-Annotator\u003ca\u003e is an image-labelling tool created by felixdollack that I also use for my research. It outputs data in Coco format for object detection and instance segmentation, and I used it to label my \u003ca href=\"https://github.com/Chubbyman2/flydo/tree/main/model/labelled_data\"\u003ecustom dataset\u003c/a\u003e that I collated using Flydo's own camera. It's basically just a bunch of pictures of me in my room.\n\n## Tkinter Graphical User Interface (GUI)\n\u003cimg src=\"https://github.com/Chubbyman2/flydo/blob/main/docs/gui.PNG\"\u003e\n\n## Future Plans\n### Update 1 (Jan 5, 2022):\nFlydo can now take screenshots and videos! \n\n### Update 2 (Jan 6, 2022):\nFlydo's tracking function now generates and overlays bounding boxes!\n  \n### Update 3 (Jan 7, 2022):\napp.py's associated functions have been reformatted into class methods. All global variables have been removed and replaced as class variables.\n  \n### Update 4 (Mar 3, 2022):\nApparently the issue with the video feed latency has to do with the djitellopy library itself, and there isn't a way to avoid this unless you switch to \u003ca href=\"https://github.com/hanyazou/TelloPy\"\u003eTelloPy\u003c/a\u003e. I'm currently in the middle of midterms, but I'll make sure to do this soon.\n\n### To Do:\n1. Create a function to move Flydo based on output of object detector.\n2. Improve accuracy of tracker (i.e. the object detection model).\n3. Figure out how to decrease latency between drone feed and visual display. \n\n## Acknowledgements\nThanks to Takashi Nakamura, PhD, for writing this \u003ca href=\"https://medium.com/fullstackai/how-to-train-an-object-detector-with-your-own-coco-dataset-in-pytorch-319e7090da5\"\u003earticle\u003c/a\u003e showing me the basics on how to train Faster R-CNN with Pytorch.\n\n## License\nThis project is licensed under the MIT License - see the \u003ca href=\"https://github.com/Chubbyman2/flydo/blob/main/LICENSE\"\u003eLICENSE\u003c/a\u003e file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharlesyuan02%2Fflydo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcharlesyuan02%2Fflydo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcharlesyuan02%2Fflydo/lists"}