{"id":27695137,"url":"https://github.com/vishalsharma0309/nano_drone","last_synced_at":"2026-04-18T13:32:11.912Z","repository":{"id":288792428,"uuid":"264871599","full_name":"VishalSharma0309/nano_drone","owner":"VishalSharma0309","description":"An autonomous nano drone with an end-to-end closed-loop visual pipeline with multiple visual inputs","archived":false,"fork":false,"pushed_at":"2020-08-16T16:22:27.000Z","size":69962,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-08-25T03:40:22.480Z","etag":null,"topics":["c","cnn","crazyflie","pulp","riscv"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/VishalSharma0309.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":"2020-05-18T08:08:57.000Z","updated_at":"2021-05-31T21:42:41.000Z","dependencies_parsed_at":"2025-04-19T19:29:29.580Z","dependency_job_id":null,"html_url":"https://github.com/VishalSharma0309/nano_drone","commit_stats":null,"previous_names":["vishalsharma0309/nano_drone"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/VishalSharma0309/nano_drone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VishalSharma0309%2Fnano_drone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VishalSharma0309%2Fnano_drone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VishalSharma0309%2Fnano_drone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VishalSharma0309%2Fnano_drone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VishalSharma0309","download_url":"https://codeload.github.com/VishalSharma0309/nano_drone/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VishalSharma0309%2Fnano_drone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31971486,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["c","cnn","crazyflie","pulp","riscv"],"created_at":"2025-04-25T14:16:57.222Z","updated_at":"2026-04-18T13:32:11.885Z","avatar_url":"https://github.com/VishalSharma0309.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NANO DRONE PROJECT\n\n### Objective:\nTo develop an autonomous nano drone with an end-to-end closed-loop visual pipeline for autonomous navigation based on a CNN model taking input from multiple cameras.\nRead about the original project at:\nhttps://www.bitcraze.io/tag/ethz/\n\n### Architechture:\n![Master Slave Architechture](imgs/nano_drone.jpg)\n\n#### Motor Control \n![Motor Control](imgs/motor_control.png)\n\n##### On-board Sensors\nHere is a table with the sensors listed that the crazyflie eventually uses for state estimation:\n![on-board sensors](imgs/sensors.png)\n\n##### State Estimation\nThere are 2 state estimators in the crazyflie:\n* Complementary Filter\n* Extended Kalman Filter\n\n###### 1. Complementary Fiter\nThe complementary filter is consider a very lightweight and efficient filter which in general only uses the IMU input of the gyroscope (angle rate) and the accelerator. The estimated output is the Crazyflie’s attitude (roll, pitch, yaw) and its altitude (in the z direction). The complementary filter is set as the default state estimator on the Crazyflie firmware.\n![Complementary Filter](imgs/comp_filter.png)\n\n###### 2. Extended Kalman Filter\nThe (extended) Kalman filter is an step up in complexity compared to the complementary filter, as it accepts more sensor inputs of both internal and external sensors. It is an recursive filter that estimates the current state of the Crazyflie based on incoming measurements (in combination with a predicted standard deviation of the noise), the measurement model and the model of the system itself.\n![Extended Kalman Filter](imgs/kalman_filter.png)\n        \n### Setting Up\n\n#### Cloning the Repositories\nGo to the home directory\n```\n$ cd\n``` \n\nClone the project repository\n```\n$ git clone --recursive https://github.com/VishalSharma0309/nano_drone\n```\n\nClone the following separately\n1. GAP SDK \u003cbr\u003e\n``` \n$ git clone --recursive https://github.com/VishalSharma0309/gap_sdk\n```\n2. PULP SDK \u003cbr\u003e\n```\n$ git clone --recursive https://github.com/VishalSharma0309/pulp-sdk\n```\n3. PULP DroNet \u003cbr\u003e\n```\n$ git clone --recursive https://github.com/VishalSharma0309/pulp-dronet\n```\n\n#### For Ubuntu (16 \u0026 18)\n\n##### Setting up GAP-SDK\nFollow the steps mentioned in readme_GAPSDK.txt\n\n##### Setting up PULP-SDK \u0026 Compiling PULP-DRONET (incomplete)\nFollow the steps mentioned in readme_pulpDroNet.txt\n\n#### For CentOS 7 \u0026 Other Linux Distros\nFollow the steps mentioned in readme_setupCentOS.txt (incomplete)\n\n### Running Programs on GVSOC\n\n#### Setting-up \u0026 using GVSOC: Documentation\nPlease read readme_gvsoc.txt \n\n```\n$ source ~/gap_sdk/configs/gapuino.sh \n$ cd \u003cto the application to run\u003e\n$ make all run platform=gvsoc\n```\n#### Run an application with VCD traces\n\nVCD traces is used to see what happens on the chip\n```\nmake all run platform=gvsoc runner_args=\"--vcd\"\n```\n\nThis command produces a Gtkwave script which can be opened using a command described in the command result. Something like:\n```\ngtkwave /home/vishal/gap_sdk/examples/pmsis/helloworld/BUILD/GAP8_V2/GCC_RISCV/view.gtkw\n```\nExample:\n![PMSIS HelloWorld Example](imgs/hello_world.png)\n \n### Repository Structure:\n\n    nano_drone\n    │   README.md\n    │   readme_GAPSDK.txt (to setup GAP SDK)\n    |   readme_gvsoc.txt (to setup and use GVSOC on GAP SDK and PULP SDK)\n    |   readme_multiCameraInterfacing.txt (research on interfacing multi-cameras on GAP SoC)\n    |   readme_pulpDroNet.txt (to setup PULP DroNet)\n    |   readme_setupCentOS.txt (to setup toolchain \u0026 SDK on centOS)\n    |   readme_vncsteps.txt (to vnc into remote PCs)\n    |   tasks.txt (weekly meeting notes)\n    │   environment.yml (yml file for GAP-SDK conda environment) (not working)\n    |   gap_env.yml (yml file for both GAP \u0026 PULP-SDK conda environment) (not working)\n    |   pulpsdk.yml (yml file for PULP-SDK conda environment) (working)\n    |   setup.sh (automated script to setup GAP-SDK in any linux distro) (under progress)\n    |   start.sh (automated script to run bofore using GAP-SDK)\n    |\n    └───gap_riscv_toolchain_ubuntu_18\n    │   │   install.sh\n    │   │   README.md\n    │   │\n    │   └───bin\n    │   └───include    \n    │   └───lib    \n    │   └───libexec    \n    │   └───riscv32-unknown-elf\n    |   └───share\n    |\n    └───gap_sdk\n    │   │   requirements.txt\n    │   │   README.md\n    |   |   sourceme.sh \n    │   │\n    │   └───applications\n    |   |   └───audio_4chan_vocIP\n    |   |   └───BilinearResize\n    |   |   └───CannyEdgeDetection\n    |   |   └───FaceDetection\n    |   |   └───jpeg_encoder\n    |   |   └───MultiScalePedestrianDetector\n    |   |   └───WaterMeter\n    │   └───build    \n    │   └───configs    \n    │   └───docs    \n    │   └───examples\n    |   |   └───autotiler\n    |   |   └───native\n    |   |   |   └───freeRTOS\n    |   |   |   └───mbed\n    |   |   |   └───mbed-gapoc\n    |   |   |   └───pulpos\n    |   |   └───nntool\n    |   |   └───pmsis\n    |   |       └───devices\n    |   |       └───helloworld\n    |   |       └───test_features\n    |   |       └───test_periph\n    |   |        \n    |   └───gvsoc\n    |   └───install\n    |   └───libs\n    |   └───PlatformIO\n    |   └───rtos\n    |   └───tools\n    |\n    └───Papers (relevant research papers)\n    |\n    └───pmsis_api\n    |   |   LICENSE\n    |   |\n    |   └───docs\n    |   └───include\n    |   └───jenkins\n    |   └───tools\n    |\n    └───pulp-builder\n    |   |   README.md\n    |   |\n    |   └───build\n    |   └───install\n    |   └───json-tools\n    |   └───plptest\n    |   └───pulp-configs\n    |   └───pulp-runtime\n    |   └───runner\n    |   └───scripts\n    |\n    └───pulp-dronet\n    |   |   README.md\n    |   |   LICENSE_README.md\n    |   |   LICENSE.apache.md\n    |   |\n    |   └───bin\n    |   └───dataset\n    |   └───imgs\n    |   └───PULP-Shield\n    |   └───src\n    |   └───wieghts\n    |\n    └───pulp-riscv-gnu-toolchain\n    |   |   configure  \n    |   |   configure.ac\n    |   |   LICENSE\n    |   |   Makefile.in\n    |   |   Makefile.pulp\n    |   |   README.md\n    |   |   riscv.ld\n    |   └───linux-headers\n    |   └───riscv-binutils-gdb\n    |   └───riscv-dejagnu\n    |   └───riscv-gcc\n    |   └───riscv-glibc\n    |   └───riscv-newlib\n    |   └───scripts\n    |\n    └───pulp-sdk\n    |   |   ci.makefile\n    |   |   get-platform\n    |   |   init.csh\n    |   |   init.sh\n    |   |   LICENSE\n    |   |   Makefile\n    |   |   project.cfg\n    |   |   README.md\n    |   |   versions.cfg\n    |   └───chips\n    |   └───configs\n    |   └───install\n    |   └───json-tools\n    |   └───plptest\n    |   └───pulp-configs\n    |   └───pulp-tools\n    |   └───scripts\n    |\n    └───pulpissimo\n    |\n    └───reference_manuals\n    |        \n    └───spif-driver\n    |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvishalsharma0309%2Fnano_drone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvishalsharma0309%2Fnano_drone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvishalsharma0309%2Fnano_drone/lists"}