{"id":180,"date":"2016-10-21T13:48:54","date_gmt":"2016-10-21T13:48:54","guid":{"rendered":"http:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/?page_id=180"},"modified":"2017-05-13T03:51:25","modified_gmt":"2017-05-13T03:51:25","slug":"system-implementation","status":"publish","type":"page","link":"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/","title":{"rendered":"System Implementation"},"content":{"rendered":"<p><strong>Current Overall System Structure<\/strong> \u00a0 <img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-436 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/ros_node-1.png\" alt=\"\" width=\"976\" height=\"459\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/ros_node-1.png 976w, https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/ros_node-1-300x141.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/ros_node-1-768x361.png 768w\" sizes=\"auto, (max-width: 976px) 100vw, 976px\" \/><\/p>\n<p style=\"text-align: center\">Current overall ROS structure for Mell-E<\/p>\n<p>Figure above shows the current structure of nodes and topics that are being used in various systems. After refactoring the code, now we only have one topic to which the Arduino is subscribed to and only one topic to which the Arduino publishes data. The rest of the heavy lifting is to be done by the PC node. The PC node would handle the state switches, generating motor speed values and navigation. The Arduino would just act as an executor where it runs the motor commands received from the PC node and pass the data from the GPS and magnetometer unit to the PC node. As part of the refactoring, we also included a watchdog that would kill the motor if there is a disconnect between ROS and Arduino (an issue that we faced a lot last semester). This made the Arduino code much cleaner and less reduced the load on the Arduino. Robot base current pictures: <img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-400 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/111-6.png\" alt=\"\" width=\"651\" height=\"316\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/111-6.png 651w, https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/111-6-300x146.png 300w\" sizes=\"auto, (max-width: 651px) 100vw, 651px\" \/><\/p>\n<p>In the sections below, we will explain each of the subsystems in more depth. For a more in-depth explanation of how each subsystem interacts with each other, please refer to the <a href=\"https:\/\/drive.google.com\/open?id=0B6d1sF1JnHnaTDhGWHlBY3Ezd2M\">poster<\/a>\u00a0and the <a href=\"https:\/\/drive.google.com\/open?id=0B5Pmdtc-6i9qT1lERmYtSlJfVzg\">final report<\/a> as it provides a much clearer view than what could be reproduced in WordPress layout scheme.<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"DicVW63M73\"><p><a href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/navigation-subsystem\/\">Navigation Subsystem<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Navigation Subsystem&#8221; &#8212; Mell - E\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/navigation-subsystem\/embed\/#?secret=09HReCGfpi#?secret=DicVW63M73\" data-secret=\"DicVW63M73\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"nW3n2mMdcF\"><p><a href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/arm-subsystem\/\">Arm Subsystem<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Arm Subsystem&#8221; &#8212; Mell - E\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/arm-subsystem\/embed\/#?secret=uxMDMtdEkN#?secret=nW3n2mMdcF\" data-secret=\"nW3n2mMdcF\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"fFUqytcZZh\"><p><a href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/computer-vision\/\">Computer Vision<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Computer Vision&#8221; &#8212; Mell - E\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/computer-vision\/embed\/#?secret=Whr0z3ccTM#?secret=fFUqytcZZh\" data-secret=\"fFUqytcZZh\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"9265Zjel2f\"><p><a href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/obstacle-avoidance\/\">Obstacle Avoidance<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;Obstacle Avoidance&#8221; &#8212; Mell - E\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/obstacle-avoidance\/embed\/#?secret=YQUwvE4LR9#?secret=9265Zjel2f\" data-secret=\"9265Zjel2f\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"5EteUoCG6I\"><p><a href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/app-and-server-subsystem\/\">App and Server Subsystem<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;App and Server Subsystem&#8221; &#8212; Mell - E\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/app-and-server-subsystem\/embed\/#?secret=N61RyLoUPJ#?secret=5EteUoCG6I\" data-secret=\"5EteUoCG6I\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p><strong>Current System Status: Modeling, Analysis, Tests<\/strong><\/p>\n<p>Our team was provided with a mobile base from our sponsor, CloudMinds. \u00a0Specifically, the mobile base we were provided with was from a powered wheelchair. \u00a0As such it needed quite a few modifications in order to meet our system\u2019s needs. \u00a0In order to make the modifications, we had to remove a lot of the aesthetic components of the wheelchair and build our own holders atop the chassis on which to mount the various subsystems. The sequence below shows the transitions of the base from its initial state to the final model:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-378 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/1-12.png\" alt=\"1\" width=\"410\" height=\"181\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/1-12.png 673w, https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/1-12-300x132.png 300w\" sizes=\"auto, (max-width: 410px) 100vw, 410px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-379 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/2-6.png\" alt=\"2\" width=\"372\" height=\"296\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/2-6.png 577w, https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/2-6-300x239.png 300w\" sizes=\"auto, (max-width: 372px) 100vw, 372px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-559 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/IMG_20170218_172802-1024x768.jpg\" alt=\"\" width=\"372\" height=\"279\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/IMG_20170218_172802-1024x768.jpg 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/IMG_20170218_172802-300x225.jpg 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/IMG_20170218_172802-768x576.jpg 768w\" sizes=\"auto, (max-width: 372px) 100vw, 372px\" \/><\/p>\n<p>To ensure the chassis components that we built would be compatible with our wheelchair base, we took measurements of the mobile base and modelled the holders in Solidworks. \u00a0The CAD model is shown below. Upon modelling the holders and making drawings, our team went to the woodshop and built the holders. \u00a0Although the final system will likely use holders made from plastic, we opted to build the initial holders out of wood to conserve time and ensure we had a working system in time for the FVE.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-380 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/3-1.png\" alt=\"3\" width=\"380\" height=\"284\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/3-1.png 681w, https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/3-1-300x225.png 300w\" sizes=\"auto, (max-width: 380px) 100vw, 380px\" \/><\/p>\n<p>Beyond modelling the mechanical components of Mell-E, we implemented tests in our software to ensure the communication infrastructure runs smoothly. \u00a0Specifically, we implemented constraints on the APIs to validate that the data sent to the APIs are well-formed. \u00a0In addition, simple unit tests were written to ensure improperly formed data is rejected from the server. \u00a0Although the backend has measures in place to prevent invalid data being entered into the database, the frontend Android application currently doesn\u2019t handle these errors. \u00a0One thing that we wanted to add but did not get time to add was error checking on the Android app side. There are a few simple safeguards against bad inputs but its not exhaustive.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-381 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/4.png\" alt=\"4\" width=\"355\" height=\"549\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/4.png 313w, https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-content\/uploads\/sites\/14\/2016\/10\/4-194x300.png 194w\" sizes=\"auto, (max-width: 355px) 100vw, 355px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Current Overall System Structure \u00a0 Current overall ROS structure for Mell-E Figure above shows the current structure of nodes and topics that are being used in various systems. After refactoring the code, now we only have one topic to which the Arduino is subscribed to and only one topic to which the Arduino publishes data.<br \/><a class=\"moretag\" href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/system-implementation\/\">+ Read More<\/a><\/p>\n","protected":false},"author":49,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-180","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-json\/wp\/v2\/pages\/180","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-json\/wp\/v2\/comments?post=180"}],"version-history":[{"count":34,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-json\/wp\/v2\/pages\/180\/revisions"}],"predecessor-version":[{"id":566,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-json\/wp\/v2\/pages\/180\/revisions\/566"}],"wp:attachment":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2016teamc\/wp-json\/wp\/v2\/media?parent=180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}