{"id":6635,"date":"2013-05-22T17:33:16","date_gmt":"2013-05-22T17:33:16","guid":{"rendered":"http:\/\/zerokidz.com\/ideas\/?p=6635"},"modified":"2014-05-20T17:08:23","modified_gmt":"2014-05-20T21:08:23","slug":"flying-an-ar_drone-quadcopter-using-max","status":"publish","type":"post","link":"https:\/\/reactivemusic.net\/?p=6635","title":{"rendered":"Flying an AR_drone quadcopter using Max"},"content":{"rendered":"<p><span style=\"line-height: 1.6;\">This project uses Max\/MSP to control and track a Parrot AR-drone quadcopter, using an intermediary server which runs the (open source) node-ar-drone in node.js.\u00a0<\/span><a style=\"line-height: 1.6;\" href=\"https:\/\/github.com\/felixge\/node-ar-drone\">https:\/\/github.com\/felixge\/node-ar-drone<\/a><\/p>\n<p><a href=\"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-8954\" title=\"Screen Shot 2013-12-30 at 7.14.21 PM\" src=\"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM-300x187.png\" alt=\"\" width=\"300\" height=\"187\" srcset=\"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM-300x187.png 300w, https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM-480x300.png 480w, https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM.png 533w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<h3>download<\/h3>\n<p><a href=\"https:\/\/github.com\/tkzic\/internet-sensors\">https:\/\/github.com\/tkzic\/internet-sensors<\/a><\/p>\n<p>folder: ar-drone<\/p>\n<h3>files<\/h3>\n<h5>main Max patch<\/h5>\n<ul>\n<li>drone4.maxpat<\/li>\n<\/ul>\n<h5><span style=\"line-height: 22px;\">abstractions and other files<\/span><\/h5>\n<ul>\n<li>data-recorder-list-tz.maxpat<\/li>\n<li>data-recorder-wrapper.maxpat<\/li>\n<\/ul>\n<h5>node.js<\/h5>\n<ul>\n<li>drone5.js (AR_drone server)<\/li>\n<li>bigInt.js: (Osc support)<\/li>\n<li>byteConverter.js: (Osc support)<\/li>\n<li>libOsc.js: (Osc library)<\/li>\n<li>tz-dronestream-server\/app-tz.js (video server)<\/li>\n<li>tz-dronestream-server\/index.html (video client &#8211;\u00a0called automatically by the video server)<\/li>\n<\/ul>\n<h4><span style=\"font-size: 27px; line-height: 1.1;\">instal<\/span><span style=\"font-size: 27px; line-height: 1.1;\">ling<\/span><span style=\"font-size: 27px; font-weight: bold; line-height: 1.1;\"> node.js and dependencies:<\/span><\/h4>\n<p>Install node.js on your computer. \u00a0Instructions here:\u00a0<a href=\"http:\/\/nodejs.org\/\">http:\/\/nodejs.org<\/a><\/p>\n<p>The following node packages are required. Install using npm. For example:<\/p>\n<div>npm install request<\/div>\n<div><\/div>\n<div>\n<ul>\n<li>request<\/li>\n<li>xml2js<\/li>\n<li>util<\/li>\n<li>http<\/li>\n<li>socket.io<\/li>\n<\/ul>\n<\/div>\n<p>Also, install following packages for the ar-drone and video streaming:<\/p>\n<ul>\n<li>ar-drone<\/li>\n<li>dronestream<\/li>\n<\/ul>\n<h3><span style=\"font-size: 27px; font-weight: bold; line-height: 1.1;\">how to run<\/span><\/h3>\n<div><\/div>\n<p>For this experiment, we will be running everything on the same computer.<\/p>\n<p>1. Connect your computer to the AR drone Wifi network. For example mine is: <strong>ardrone2_260592\u00a0<\/strong>&#8211; Note: after you do that, you will not be able to read this post on the internet.<\/p>\n<div class=\"callout\">\n<p>\u00a02.\u00a0<span style=\"line-height: 1.6;\">Run both of the node programs in from terminal windows:<\/span><\/p>\n<\/div>\n<p><span style=\"line-height: 1.6;\">Since you are running Max control dashboard on the same computer as the server\u00a0&#8211; you can call it without args, like this:<\/span><\/p>\n<div class=\"panel\">\n<p>node drone5.js<\/p>\n<\/div>\n<p><span style=\"line-height: 1.6;\">Then from another terminal window start the video server:<\/span><\/p>\n<div class=\"panel\">\n<p><span style=\"line-height: 1.6;\">node tz-dronestream-server\/app-tz.js<\/span><\/p>\n<\/div>\n<p><span style=\"line-height: 22px;\">3. In a Chrome web browser, type the following URL: (you can make multiple simultaneous connections to the video server) You should see the video from the AR-drone at in the browser.<\/span><\/p>\n<div class=\"panel\">\n<p>127.0.0.1:5555<\/p>\n<\/div>\n<p><span style=\"line-height: 22px;\">4. Load the following Max patch (control dashboard)<\/span><\/p>\n<div class=\"callout\">\n<div class=\"panel\">\n<p><span style=\"line-height: 22px;\">drone4.maxpat<\/span><\/p>\n<\/div>\n<\/div>\n<p>5. In the Max patch, try clicking the \/takeoff and \/land messages in the Max patch.<\/p>\n<h4><span style=\"line-height: 1.6;\">Max programming tips<\/span><\/h4>\n<p>To control the drone from Max, use [udpsend] [udpreceive] with ports 4000 and 4001 respectively. You can&#8217;t make multiple connections with OSC &#8211; also it would probably not be so cool while flying. but you can specify a target ip for telemetry when running the OSC server.<\/p>\n<p>We will eventually publish a complete list of commands, but they are using the API from the ar-drone docs readme file &#8211; converted into OSC style. For example:<\/p>\n<ul>\n<li>\/takeoff<\/li>\n<li>\/up .5<\/li>\n<li>\/animate flipAhead 2000<\/li>\n<\/ul>\n<p>More notes on video&#8230;<\/p>\n<p>You can capture the video stream into Max, by either capturing the chrome window using jitter, or by using syphon \u00a0&#8211; but for demo purposes I have just run Chrome window side by side with Max control patch.<\/p>\n<p>See this post for setting up Syphon in Max: <a href=\"https:\/\/reactivemusic.net\/?p=8662\">https:\/\/reactivemusic.net\/?p=8662<\/a><\/p>\n<h3>running separate server and control computers<\/h3>\n<p>You may find it more practical to run the node.js server on a separate computer. If you do that you will need to<\/p>\n<ul>\n<li><span style=\"line-height: 1.6;\">\u00a0modify the dronestream script: app-tz.js to insert the proper ip address in the server.listen() &#8211; which should be the last line of the program. You will also need to use that address as the URL in Chrome, for example: 192.168.1.140:5555<\/span><\/li>\n<li><span style=\"line-height: 1.6;\">And include the controller ip address on the command line as shown below<\/span><\/li>\n<\/ul>\n<p>When testing this I set up a dual IP address on my Macbook with a static ip: 192.168.1.140 &#8211; so this would always be the server. I ended up getting rid of it because it caused problems with other software.<\/p>\n<p>Here is a link to how to set up a dual IP address:\u00a0<a href=\"https:\/\/reactivemusic.net\/?p=6628\">https:\/\/reactivemusic.net\/?p=6628<\/a><\/p>\n<p>Here is the command you would use to specify a separate IP address when launching the server:<\/p>\n<p>For example if your Max control program is on 192.168.1.104 and you want to run in outdoor mode &#8211; use this command:<\/p>\n<div>\n<div class=\"panel\">\n<p>node drone5.js 192.168.1.104 TRUE<\/p>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<h3>program notes<\/h3>\n<p>These students are just about to send the quadcopter into the air using control panels developed in Max. Ali&#8217;s control panel uses speech via the Google API. Her computer is connected to the Internet via wiFi and also connected to Chase&#8217;s computer via a Midi\/USB link. Her voice commands get translated into Midi. Chase&#8217;s control panel reads the commands. Chase&#8217;s computer is on the same WiFi network as the quadcopter. Chase&#8217;s control panel sends commands to my computer which is running Max and the at-drone software in node.js. Occasionally this all works. But there is nobody to hold a camera.<\/p>\n<p><a href=\"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/quadcopter.jpg\"><img loading=\"lazy\" decoding=\"async\" title=\"quadcopter\" src=\"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/quadcopter-300x224.jpg\" alt=\"\" width=\"300\" height=\"224\" \/><\/a><\/p>\n<p>We&#8217;re now running two node servers, one for Max and one for web video streaming &#8211; which can be accessed by other computers connected to the same LAN as the AR-drone.<\/p>\n<p>We did have a mishap where Chase&#8217;s control panel sent an &#8220;\/up&#8221; command to the quadcopter. Then his Macbook batter died as the quadcopter was rising into the sky. I managed to rewrite the server program, giving it a \/land command &#8211; then restarted it. It was able to re-establish communication with the quadcopter and make it land.<\/p>\n<p>Unfortunately we did not get video of this experiment but here are a few seconds of video showing the quadcopter taking off and landing under control of Max &#8211; while indoors.<\/p>\n<p><iframe loading=\"lazy\" title=\"Max AR drone\" width=\"525\" height=\"295\" src=\"https:\/\/www.youtube.com\/embed\/zHYwMt9Bee8?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This project uses Max\/MSP to control and track a Parrot AR-drone quadcopter, using an intermediary server which runs the (open source) node-ar-drone in node.js.\u00a0https:\/\/github.com\/felixge\/node-ar-drone download https:\/\/github.com\/tkzic\/internet-sensors folder: ar-drone files main Max patch drone4.maxpat abstractions and other files data-recorder-list-tz.maxpat data-recorder-wrapper.maxpat node.js drone5.js (AR_drone server) bigInt.js: (Osc support) byteConverter.js: (Osc support) libOsc.js: (Osc library) tz-dronestream-server\/app-tz.js (video server) &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/reactivemusic.net\/?p=6635\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Flying an AR_drone quadcopter using Max&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","footnotes":""},"categories":[143,28],"tags":[270,345,155,190,215,30],"class_list":["post-6635","post","type-post","status-publish","format-standard","hentry","category-interactive-media-art","category-maxmsp","tag-ar_drone","tag-maxmsp","tag-node-js","tag-portfolio","tag-quadcopter","tag-video"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Flying an AR_drone quadcopter using Max - reactive music<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/reactivemusic.net\/?p=6635\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Flying an AR_drone quadcopter using Max - reactive music\" \/>\n<meta property=\"og:description\" content=\"This project uses Max\/MSP to control and track a Parrot AR-drone quadcopter, using an intermediary server which runs the (open source) node-ar-drone in node.js.\u00a0https:\/\/github.com\/felixge\/node-ar-drone download https:\/\/github.com\/tkzic\/internet-sensors folder: ar-drone files main Max patch drone4.maxpat abstractions and other files data-recorder-list-tz.maxpat data-recorder-wrapper.maxpat node.js drone5.js (AR_drone server) bigInt.js: (Osc support) byteConverter.js: (Osc support) libOsc.js: (Osc library) tz-dronestream-server\/app-tz.js (video server) &hellip; Continue reading &quot;Flying an AR_drone quadcopter using Max&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/reactivemusic.net\/?p=6635\" \/>\n<meta property=\"og:site_name\" content=\"reactive music\" \/>\n<meta property=\"article:published_time\" content=\"2013-05-22T17:33:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-05-20T21:08:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM-300x187.png\" \/>\n<meta name=\"author\" content=\"Tom Zicarelli\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tom Zicarelli\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635\"},\"author\":{\"name\":\"Tom Zicarelli\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/#\\\/schema\\\/person\\\/56224d281582df7e5518e037ca63e571\"},\"headline\":\"Flying an AR_drone quadcopter using Max\",\"datePublished\":\"2013-05-22T17:33:16+00:00\",\"dateModified\":\"2014-05-20T21:08:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635\"},\"wordCount\":855,\"image\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/reactivemusic.net\\\/wp-content\\\/uploads\\\/2013\\\/05\\\/Screen-Shot-2013-12-30-at-7.14.21-PM-300x187.png\",\"keywords\":[\"ar_drone\",\"Max\\\/MSP\",\"node.js\",\"portfolio\",\"quadcopter\",\"video\"],\"articleSection\":[\"interactive media art\",\"Max\\\/MSP\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635\",\"url\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635\",\"name\":\"Flying an AR_drone quadcopter using Max - reactive music\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/reactivemusic.net\\\/wp-content\\\/uploads\\\/2013\\\/05\\\/Screen-Shot-2013-12-30-at-7.14.21-PM-300x187.png\",\"datePublished\":\"2013-05-22T17:33:16+00:00\",\"dateModified\":\"2014-05-20T21:08:23+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/#\\\/schema\\\/person\\\/56224d281582df7e5518e037ca63e571\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/reactivemusic.net\\\/?p=6635\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635#primaryimage\",\"url\":\"https:\\\/\\\/reactivemusic.net\\\/wp-content\\\/uploads\\\/2013\\\/05\\\/Screen-Shot-2013-12-30-at-7.14.21-PM.png\",\"contentUrl\":\"https:\\\/\\\/reactivemusic.net\\\/wp-content\\\/uploads\\\/2013\\\/05\\\/Screen-Shot-2013-12-30-at-7.14.21-PM.png\",\"width\":\"533\",\"height\":\"333\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=6635#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/reactivemusic.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Flying an AR_drone quadcopter using Max\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/#website\",\"url\":\"https:\\\/\\\/reactivemusic.net\\\/\",\"name\":\"reactive music\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/reactivemusic.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/#\\\/schema\\\/person\\\/56224d281582df7e5518e037ca63e571\",\"name\":\"Tom Zicarelli\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g\",\"caption\":\"Tom Zicarelli\"},\"sameAs\":[\"http:\\\/\\\/tomzicarelli.com\"],\"url\":\"https:\\\/\\\/reactivemusic.net\\\/?author=2\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Flying an AR_drone quadcopter using Max - reactive music","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/reactivemusic.net\/?p=6635","og_locale":"en_US","og_type":"article","og_title":"Flying an AR_drone quadcopter using Max - reactive music","og_description":"This project uses Max\/MSP to control and track a Parrot AR-drone quadcopter, using an intermediary server which runs the (open source) node-ar-drone in node.js.\u00a0https:\/\/github.com\/felixge\/node-ar-drone download https:\/\/github.com\/tkzic\/internet-sensors folder: ar-drone files main Max patch drone4.maxpat abstractions and other files data-recorder-list-tz.maxpat data-recorder-wrapper.maxpat node.js drone5.js (AR_drone server) bigInt.js: (Osc support) byteConverter.js: (Osc support) libOsc.js: (Osc library) tz-dronestream-server\/app-tz.js (video server) &hellip; Continue reading \"Flying an AR_drone quadcopter using Max\"","og_url":"https:\/\/reactivemusic.net\/?p=6635","og_site_name":"reactive music","article_published_time":"2013-05-22T17:33:16+00:00","article_modified_time":"2014-05-20T21:08:23+00:00","og_image":[{"url":"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM-300x187.png","type":"","width":"","height":""}],"author":"Tom Zicarelli","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Tom Zicarelli","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/reactivemusic.net\/?p=6635#article","isPartOf":{"@id":"https:\/\/reactivemusic.net\/?p=6635"},"author":{"name":"Tom Zicarelli","@id":"https:\/\/reactivemusic.net\/#\/schema\/person\/56224d281582df7e5518e037ca63e571"},"headline":"Flying an AR_drone quadcopter using Max","datePublished":"2013-05-22T17:33:16+00:00","dateModified":"2014-05-20T21:08:23+00:00","mainEntityOfPage":{"@id":"https:\/\/reactivemusic.net\/?p=6635"},"wordCount":855,"image":{"@id":"https:\/\/reactivemusic.net\/?p=6635#primaryimage"},"thumbnailUrl":"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM-300x187.png","keywords":["ar_drone","Max\/MSP","node.js","portfolio","quadcopter","video"],"articleSection":["interactive media art","Max\/MSP"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/reactivemusic.net\/?p=6635","url":"https:\/\/reactivemusic.net\/?p=6635","name":"Flying an AR_drone quadcopter using Max - reactive music","isPartOf":{"@id":"https:\/\/reactivemusic.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/reactivemusic.net\/?p=6635#primaryimage"},"image":{"@id":"https:\/\/reactivemusic.net\/?p=6635#primaryimage"},"thumbnailUrl":"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM-300x187.png","datePublished":"2013-05-22T17:33:16+00:00","dateModified":"2014-05-20T21:08:23+00:00","author":{"@id":"https:\/\/reactivemusic.net\/#\/schema\/person\/56224d281582df7e5518e037ca63e571"},"breadcrumb":{"@id":"https:\/\/reactivemusic.net\/?p=6635#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/reactivemusic.net\/?p=6635"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/reactivemusic.net\/?p=6635#primaryimage","url":"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM.png","contentUrl":"https:\/\/reactivemusic.net\/wp-content\/uploads\/2013\/05\/Screen-Shot-2013-12-30-at-7.14.21-PM.png","width":"533","height":"333"},{"@type":"BreadcrumbList","@id":"https:\/\/reactivemusic.net\/?p=6635#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/reactivemusic.net\/"},{"@type":"ListItem","position":2,"name":"Flying an AR_drone quadcopter using Max"}]},{"@type":"WebSite","@id":"https:\/\/reactivemusic.net\/#website","url":"https:\/\/reactivemusic.net\/","name":"reactive music","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/reactivemusic.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/reactivemusic.net\/#\/schema\/person\/56224d281582df7e5518e037ca63e571","name":"Tom Zicarelli","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g","caption":"Tom Zicarelli"},"sameAs":["http:\/\/tomzicarelli.com"],"url":"https:\/\/reactivemusic.net\/?author=2"}]}},"_links":{"self":[{"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/posts\/6635","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=6635"}],"version-history":[{"count":34,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/posts\/6635\/revisions"}],"predecessor-version":[{"id":6637,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/posts\/6635\/revisions\/6637"}],"wp:attachment":[{"href":"https:\/\/reactivemusic.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6635"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6635"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6635"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}