{"id":19494701,"url":"https://github.com/ceejbot/aerogel","last_synced_at":"2025-04-25T21:32:02.138Z","repository":{"id":8761118,"uuid":"10443752","full_name":"ceejbot/aerogel","owner":"ceejbot","description":"a node.js driver for the Crazyflie quadcopter","archived":false,"fork":false,"pushed_at":"2017-05-02T18:07:21.000Z","size":93,"stargazers_count":77,"open_issues_count":15,"forks_count":28,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-11-02T04:41:59.618Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/ceejbot.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":"2013-06-02T23:31:19.000Z","updated_at":"2024-04-01T23:48:27.000Z","dependencies_parsed_at":"2022-08-31T11:03:39.323Z","dependency_job_id":null,"html_url":"https://github.com/ceejbot/aerogel","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceejbot%2Faerogel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceejbot%2Faerogel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceejbot%2Faerogel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceejbot%2Faerogel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ceejbot","download_url":"https://codeload.github.com/ceejbot/aerogel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224018322,"owners_count":17242048,"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":"2024-11-10T21:32:11.582Z","updated_at":"2024-11-10T21:33:05.102Z","avatar_url":"https://github.com/ceejbot.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"aerogel\n=======\n\nA node.js control library for the [Crazyflie](http://wiki.bitcraze.se/projects:crazyflie:userguide:index) nano-copter. This is a work in progress! Your contributions are more than welcome.\n\n[![Dependencies](https://david-dm.org/ceejbot/aerogel.png)](https://david-dm.org/ceejbot/aerogel) [![NPM version](https://badge.fury.io/js/aerogel.png)](http://badge.fury.io/js/aerogel)\n\n[![NPM](https://nodei.co/npm/aerogel.png)](http://nodei.co/npm/aerogel/)\n\n## Installation\n\n[libusb](http://sourceforge.net/projects/libusb/) is required for the radio driver. On OS X, install with [homebrew](http://mxcl.github.io/homebrew/):\n\n`brew install libusb`\n\nThen install Aerogel:\n\n`npm install aerogel`\n\nAerogel uses new-style node streams so it requires node 0.10.x or later.\n\n## Basics\n\nThe `copter` object is what your control scripts should manipulate.\n\nA simple script for taking off then landing again immediately looks like this:\n\n```javascript\nvar Aerogel = require('../index');\n\nvar driver = new Aerogel.CrazyDriver();\nvar copter = new Aerogel.Copter(driver);\nprocess.on('SIGINT', copter.land.bind(copter));\n\ndriver.findCopters()\n.then(function(copters)\n{\n    if (copters.length === 0)\n    {\n        console.error('No copters found! Is your copter turned on?');\n        process.exit(1);\n    }\n\n    var uri = copters[0];\n    console.log('Using copter at', uri);\n    return uri;\n})\n.then(function(uri) { return copter.connect(uri); })\n.then(function() { return copter.takeoff(); })\n.then(function() { return copter.land(); })\n.then(function() { return copter.shutdown(); })\n.done();\n```\n\nLook at the [scripts](scripts/) directory for more.\n\n## Telemetry\n\nThe protocol driver emits telemetry information as events that the copter object listens for. The handlers for these events don't do anything yet, but the plan is that they'll eventually be used to implement higher-level flight control constructs \u0026 autonomous goal-seeking.\n\n`copter.handleStabilizerTelemetry()` gets an object with three orientation fields: `roll`, `pitch`, `yaw`.\n\n`copter.handleMotorTelemetry()` gets an object with the state of the four motors: `m1`, `m2`, `m3`, and `m4`.\n\n`copter.handleAccTelemetry()` gets an object with the state of the accelerometer: `x`, `y`, and `z`. The accelerometer data is available only for copters running [tip-of-tree firmware](https://bitbucket.org/bitcraze/crazyflie-firmware).\n\n## API\n\nTODO\n\nAerogel exposes a [promises](https://github.com/rkatic/p) API at the moment. Eventually I plan to offer a standard callback API as well. If you do not pass a callback to a method, a promise is returned. \n\n## LeapMotion\n\nIf you're lucky enough to have a LeapMotion, there's a rough example of controlling the copter with circle gestures \u0026 vertical swipes in `scripts/leap-takeoff.js`.\n\n## To-do\n\nEverything. See the Github issues for my plan about where I'd like this project to go. The Crazyflie is difficult to control with a gamepad, and my theory is that software can eventually fly it better than I can. Also, I dream of a cloud of Crazyflies orbiting my head, all under control of a little Beaglebone or Raspberry PI hidden inside my hat. Maybe you have a dream for your copter!\n\n## Contributing\n\nAllman bracing, tabs to indent, camel case. Do cool things.\n\nAerogel does not currently have any tests worth noting. If you feel inspired, the project needs some. Write tests in Mocha. [mocha-as-promised](https://github.com/domenic/mocha-as-promised) and [chai-as-promised](https://github.com/domenic/chai-as-promised/) are available. \n\n## License\n\nMIT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceejbot%2Faerogel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fceejbot%2Faerogel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceejbot%2Faerogel/lists"}