{"id":16880587,"url":"https://github.com/chennes/crazyfliepls","last_synced_at":"2026-04-27T18:02:52.690Z","repository":{"id":35679779,"uuid":"39955649","full_name":"chennes/CrazyfliePLS","owner":"chennes","description":"Pioneer Library System's Python wrapper for the Crazyflie 2.0","archived":false,"fork":false,"pushed_at":"2017-12-27T20:39:30.000Z","size":811,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-01T22:36:06.610Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/chennes.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":"2015-07-30T14:44:22.000Z","updated_at":"2017-04-19T14:59:24.000Z","dependencies_parsed_at":"2022-08-19T16:50:21.470Z","dependency_job_id":null,"html_url":"https://github.com/chennes/CrazyfliePLS","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/chennes/CrazyfliePLS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chennes%2FCrazyfliePLS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chennes%2FCrazyfliePLS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chennes%2FCrazyfliePLS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chennes%2FCrazyfliePLS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chennes","download_url":"https://codeload.github.com/chennes/CrazyfliePLS/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chennes%2FCrazyfliePLS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32348058,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-27T17:12:42.749Z","status":"ssl_error","status_checked_at":"2026-04-27T17:12:41.658Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2024-10-13T15:59:21.444Z","updated_at":"2026-04-27T18:02:52.670Z","avatar_url":"https://github.com/chennes.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CrazyfliePLS\nPioneer Library System's Python wrapper for the Crazyflie 2.0\n\n## Installation\n\nTo use this setup for a class, first install Python 2.7 in its default install\nlocation (C:\\Python27). Then run the PythonUSB.bat batch script provided to install\nthe necessary Python library to talk to the CrazyRadioPA. Download the Python controller\ncode from the Crazyflie site and copy its lib folder to the same location as the \nCrazyfliePLS.py.\n\n## Use\n\n1. Open the CrazyfliePLS.py file using IDLE (you will probably have to right-click on the file). \n2. Locate the large red comment block near the top that says \"CRITICAL\" in it and update the quadcopter number to match the kit you are using.\n3. Locate the green arrow that points to the *first* _update function in the file. All changes should be made within that function.\n\nStudents' task is to modify the code in the _update function to make their quadcopter accomplish whatever the day's objective is (e.g. \"take off at one pad and lad at another\" etc.). Several functions are provided:\n\n```\nincreaseAltitude(x) # Go upwards at x meters per second (approximately)\nholdAltitude()      # Hold the current height\ndecreaseAltitude(x) # Go down at x meters per second (approximately)\nsetPitch(x)         # Pitch foward (positive x) or backward (negative x) degrees\nsetRoll(x)          # Roll right (positive x) or left (negative x) degrees\nsetYawRate(x)       # Rotate around the center of the quadcopter at x degrees per second (approximately)\nshutdown(cf)        # Shut everything off and disconnect\n```\n\nAn example run might look like:\n```\nif self._time \u003c 1.0:\n  self.increaseAltitude(1) # Go up at 1 meter per second\nelif self._time \u003c 2.0:\n  self.holdAltitude() # Hold the current altitude\nelif self._time \u003c 4.0:\n  self.decreaseAltitude(0.5) # Land at about 1/2 meter per second\nelse:\n  self.shutdown(cf) # Shut down\n  return\n```\nThis simple run goes up to about one meter in the first second, hovers at about 1 meter off the \nground for one second, then slowly lands over the course of the next two seconds.\n\nA more complicated example:\n```\nif self._time \u003c 1.0:\n  self.increaseAltitude(1) # Go up at 1 meter per second\nelif self._time \u003c 3.0:\n  self.holdAltitude() # Hold the current altitude\n  self.setPitch (20) # Pitch forward at 20 degrees to accelerate forward\nelif self._time \u003c 4.0:\n  self.setPitch (-20) # Pitch backward to decelerate\nelif self._time \u003c 6.0:\n  self.setPitch (0) # Level off\n  self.decreaseAltitude(0.5) # Land at about 1/2 meter per second\nelse:\n  self.shutdown(cf) # Shut down\n  return\n```\nThis takes off to about a meter in height, then accelerates forward for two seconds. It then slows back down to approximately a stop over the next second (you will have to play with the time and the angle of pitch to get a perfect stop). FInally, it levels off and lands.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchennes%2Fcrazyfliepls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchennes%2Fcrazyfliepls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchennes%2Fcrazyfliepls/lists"}