{"id":173,"date":"2015-11-08T09:37:38","date_gmt":"2015-11-08T14:37:38","guid":{"rendered":"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/?page_id=173"},"modified":"2016-04-01T13:04:43","modified_gmt":"2016-04-01T17:04:43","slug":"quadcopter-subsystem","status":"publish","type":"page","link":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/system-implementation\/quadcopter-subsystem\/","title":{"rendered":"Quadcopter Subsystem"},"content":{"rendered":"<h2>Hardware\/Software Overview<\/h2>\n<h3>Overview<\/h3>\n<p>The quadcopter system includes the DJI Matrice 100\u00a0with the Guidance, shown in the below figures. \u00a0The\u00a0Guidance provides the N1 flight controller more stable\u00a0velocities using optical flow. The N1 Flight controller runs\u00a0low level control algorithms, while the single board\u00a0computer (Odroid XU4) runs higher level processes as\u00a0explained in the cyberphysical architecture section.<\/p>\n<h3>Quadcopter<\/h3>\n<p>We use a Matrice 100 quadcopter made by DJI. \u00a0The Matrice 100 is a developer quadcopter with a well defined SDK, and a very robust lift capacity.<\/p>\n<p style=\"padding-left: 30px;text-align: center\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Matrice.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-176\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Matrice.png\" alt=\"Matrice\" width=\"681\" height=\"454\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Matrice.png 681w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Matrice-300x200.png 300w\" sizes=\"auto, (max-width: 681px) 100vw, 681px\" \/><\/a><\/p>\n<p style=\"padding-left: 30px;text-align: center\">Figure 1\u00a0&#8211; Matrice 100\u00a0(<a href=\"https:\/\/developer.dji.com\/matrice-100\/\">Source<\/a>)<\/p>\n<h3><strong>Sensor<\/strong><\/h3>\n<p>The sensor subsystem is working with the DJI Guidance system.\u00a0The Guidance will be used for collision avoidance and landing tasks.<\/p>\n<p><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Guidance.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-175 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Guidance.png\" alt=\"Guidance\" width=\"565\" height=\"312\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Guidance.png 565w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Guidance-300x166.png 300w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\" \/><\/a><\/p>\n<p style=\"text-align: center\">Figure 2\u00a0&#8211; Guidance System (<a href=\"https:\/\/developer.dji.com\/guidance\/\">Source<\/a>)<\/p>\n<h3>Navigation<\/h3>\n<p>The navigation subsystem will take the vector from the quadcopter to the platform and plan a smooth path and send waypoints to the flight controller. It will also need adapt the path to the motion of the platform and errors in the quadcopter\u2019s performance. The subsystem will work with the Onboard SDK on the Odroid XU4 (Single board computer).<\/p>\n<p><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/ODROID-XU4.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-200 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/ODROID-XU4.jpg\" alt=\"ODROID-XU4\" width=\"500\" height=\"384\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/ODROID-XU4.jpg 500w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/ODROID-XU4-300x230.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p style=\"text-align: center\">Figure 3 &#8211; Odroid XU4 (<a href=\"http:\/\/www.cnx-software.com\/2015\/07\/14\/odroid-xu4-board-is-a-smaller-and-cheaper-version-of-odroid-xu3\/\">Source<\/a>)<\/p>\n<h3>Mechanism<\/h3>\n<p>The entire locking mechanism can now be seen on our <a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/system-implementation\/docking-platform-subsystem\/\">Docking Platform<\/a> Subsystem Page.<\/p>\n<h3>Docking<\/h3>\n<p>The docking subsystem will design a method of learning the pseudo-random motion of the platform and determine if docking is possible and then plan an opportune moment for approaching the platform, prioritizing a collision free docking. This subsystem will work with the Onboard and Guidance SDKs<\/p>\n<h3>Communication<\/h3>\n<p>The communication subsystem is responsible for designing a method of communicating a protocol to transmit the information between the platform, the quadcopter, and the mobile application. This information will be used by the quadcopter to localize itself into the frame of reference of the docking platform. This subsystem will work with Onboard SDK. Most probably, a new protocol will need to be designed to enable the communication.<\/p>\n<h2>Software<\/h2>\n<p>The quadcopter comes with a powerful SDK and simulator to allow for complex tasks to be automated. \u00a0In addition to the already robust hover and obstacle avoidance built into the Guidance system, we have added state estimation for indoor flight. Current status of the code on the quadcopter is depicted in the below figure. Although the Guidance is\u00a0connected the N1 and is being used for flight stabilization via optical methods, the data isn\u2019t being\u00a0logged or implemented using the Guidance SDK on the Odroid XU4.<\/p>\n<p><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Odroidcode.png\" rel=\"attachment wp-att-316\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-316 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Odroidcode.png\" alt=\"Odroidcode\" width=\"726\" height=\"424\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Odroidcode.png 726w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Odroidcode-300x175.png 300w\" sizes=\"auto, (max-width: 726px) 100vw, 726px\" \/><\/a><\/p>\n<p style=\"text-align: center\">Figure 4 &#8211; Code Architecture (<span style=\"color: #ff0000\">FIX<\/span>)<\/p>\n<p>&nbsp;<\/p>\n<h2>Control System Power Distribution\/Signal Routing<\/h2>\n<p>Our quadcopter requires extra power for the Odroid and Nicadrone, which is provided by a 7.4V 2-cell LiPo battery run through a power distribution board.<\/p>\n<p><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Dock-In-Piece-Quad-PDU_Page_1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-247\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Dock-In-Piece-Quad-PDU_Page_1.jpg\" alt=\"Dock-In-Piece Quad PDU_Page_1\" width=\"2200\" height=\"1700\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Dock-In-Piece-Quad-PDU_Page_1.jpg 2200w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Dock-In-Piece-Quad-PDU_Page_1-300x232.jpg 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-content\/uploads\/sites\/6\/2015\/11\/Dock-In-Piece-Quad-PDU_Page_1-1024x791.jpg 1024w\" sizes=\"auto, (max-width: 2200px) 100vw, 2200px\" \/><\/a><\/p>\n<p style=\"text-align: center\">Figure 5 &#8211; Quadcopter PDU diagram<\/p>\n<h2>Current Status<\/h2>\n<p>Table 1 shows the functional progress on the quadcopter. Although we had planned to the\u00a0move the quadcopter from Point A to point B during the fall validation experiment, due to a crash\u00a0we couldn\u2019t do so. As such, we instead integrated AprilTag detection with the navigation node and moved the quadcopter in accordance to the distances provided by the AprilTag node. Basically,\u00a0the AprilTag node would detect an AptrilTag 5 cm away in the x-direction, and the navigation\u00a0node would decrease this error.<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"319\">Complete<\/td>\n<td width=\"319\">To Do<\/td>\n<\/tr>\n<tr>\n<td width=\"319\">Stable Hover<\/td>\n<td width=\"319\">Point A to Point B navigation in reality<\/td>\n<\/tr>\n<tr>\n<td width=\"319\">Manual Safety Override<\/td>\n<td width=\"319\">Localization with respect to Dock<\/td>\n<\/tr>\n<tr>\n<td width=\"319\">Logging Data<\/td>\n<td width=\"319\">Stabilization under Dock<\/td>\n<\/tr>\n<tr>\n<td width=\"319\">April Tag Detection<\/td>\n<td width=\"319\">Rendezvous with Dock<\/td>\n<\/tr>\n<tr>\n<td width=\"319\">Computer vision integrated Point A to Point B in simulation<\/td>\n<td width=\"319\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hardware\/Software Overview Overview The quadcopter system includes the DJI Matrice 100\u00a0with the Guidance, shown in the below figures. \u00a0The\u00a0Guidance provides the N1 flight controller more stable\u00a0velocities using optical flow. The N1 Flight controller runs\u00a0low level control algorithms, while the single board\u00a0computer (Odroid XU4) runs higher level processes as\u00a0explained in the cyberphysical architecture section. Quadcopter We<br \/><a class=\"moretag\" href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/system-implementation\/quadcopter-subsystem\/\">+ Read More<\/a><\/p>\n","protected":false},"author":29,"featured_media":0,"parent":81,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-173","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-json\/wp\/v2\/pages\/173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-json\/wp\/v2\/comments?post=173"}],"version-history":[{"count":18,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-json\/wp\/v2\/pages\/173\/revisions"}],"predecessor-version":[{"id":425,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-json\/wp\/v2\/pages\/173\/revisions\/425"}],"up":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-json\/wp\/v2\/pages\/81"}],"wp:attachment":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teame\/wp-json\/wp\/v2\/media?parent=173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}