{"id":134,"date":"2015-10-19T18:54:38","date_gmt":"2015-10-19T22:54:38","guid":{"rendered":"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/?page_id=134"},"modified":"2017-05-05T08:37:33","modified_gmt":"2017-05-05T12:37:33","slug":"design-2","status":"publish","type":"page","link":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/design-2\/","title":{"rendered":"Design"},"content":{"rendered":"<p><strong>Requirements<\/strong><\/p>\n<p><em>FR &#8211; Functional Requirement<\/em><\/p>\n<p><em>PR &#8211; Performance Requirement<\/em><\/p>\n<p><em>NF &#8211; Non-Functional Requirement<\/em><\/p>\n\n<table id=\"tablepress-17\" class=\"tablepress tablepress-id-17\">\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-1\">\n\t<td class=\"column-1\">FR1<br \/>\n<\/td><td class=\"column-2\">Accept order list from user<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-2\">\n\t<td class=\"column-1\">PR1<br \/>\n<\/td><td class=\"column-2\">Interpret work order with 100% accuracy<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">The JSON format order list is processed.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">FR2<br \/>\n<\/td><td class=\"column-2\">Autonomously determine positions and orientations of target items<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">PR2<br \/>\n<\/td><td class=\"column-2\">Autonomously identify object with 90% accuracy<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">The position and orientation are calculated by the perception module using state-of-the art algorithms. The pose must be determined in order to acquire the objects.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-9\">\n\t<td class=\"column-1\">FR3<br \/>\n<\/td><td class=\"column-2\">Accurately determine item grasp position<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-10\">\n\t<td class=\"column-1\">PR3<br \/>\n<\/td><td class=\"column-2\">Autonomously determine item grasp positions within 2 cm from the item on 75% of attempts<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-11\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">The perception module outputs position of end-effector for optimal grasping.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-12\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-13\">\n\t<td class=\"column-1\">FR4<br \/>\n<\/td><td class=\"column-2\">Autonomously picks item from shelf bin<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-14\">\n\t<td class=\"column-1\">PR4<br \/>\n<\/td><td class=\"column-2\">Autonomously picks item of known pose from shelf bin on 50% of attempts<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-15\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">The kinematics planning is done to pick up the items from the shelf.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-16\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-17\">\n\t<td class=\"column-1\">FR5<br \/>\n<\/td><td class=\"column-2\">Autonomously places item in order bin<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-18\">\n\t<td class=\"column-1\">PR5<br \/>\n<\/td><td class=\"column-2\">Autonomously places 90% of picked item in order bin from a height of no more than .3 meters<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-19\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">Once the item is picked, the robot drops it off it in order bin.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-20\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-21\">\n\t<td class=\"column-1\">FR6<br \/>\n<\/td><td class=\"column-2\">Must follow the dimensional constraints set by Amazon Picking Challenge<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-22\">\n\t<td class=\"column-1\">PR6<br \/>\n<\/td><td class=\"column-2\">\"Acquire items from bins located at a max height of 1.86m and minimum height of .78m<br \/>\nAcquire items from a .27m x .27m shelf bin<br \/>\nBe able to lift items up to .5kg mass\"<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-23\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">The items and shelf units specified by the Amazon Picking Challenge rules add constraints to our design.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-24\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-25\">\n\t<td class=\"column-1\">FR7<br \/>\n<\/td><td class=\"column-2\">Does not drop items<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-26\">\n\t<td class=\"column-1\">FR8<br \/>\n<\/td><td class=\"column-2\">Does not damage items<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-27\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">During robot operation, the robot should not allow items to fall down. The robot should not deform the items in any way. This ensures we are only adding value.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-28\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-29\">\n\t<td class=\"column-1\">PR7<br \/>\n<\/td><td class=\"column-2\">Acquire at least 3 items of 10 total attempts in under 20 minutes<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-30\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">Maximize the number of items successfully picked and placed in the given time.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-31\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-32\">\n\t<td class=\"column-1\">NF1<br \/>\n<\/td><td class=\"column-2\">Cost no more than $4000<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-33\">\n\t<td class=\"column-1\">NF2<br \/>\n<\/td><td class=\"column-2\">Be completed by May 1st, 2016<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-34\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">MRSD project requirements.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-35\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-36\">\n\t<td class=\"column-1\">NF3<br \/>\n<\/td><td class=\"column-2\">Transportable or available at ICRA 2016<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-37\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">The robot should be capable of being disassembled and reassembled easily. Alternatively, the robot platform must be available for use at the ICRA competition in Sweden, Stockholm in May 2016.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-38\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-39\">\n\t<td class=\"column-1\">NF4<br \/>\n<\/td><td class=\"column-2\">Robust to environmental variations including lighting and physical geometry<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-40\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">The robot\u2019s perception system should operate reliably under different lighting conditions and changes in physical geometry. This is because the competition lighting conditions cannot be reproduced accurately in our test setup.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-41\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-42\">\n\t<td class=\"column-1\">NF5<br \/>\n<\/td><td class=\"column-2\">Be available for testing at least 1 day per week<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-43\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">We need to test the algorithms on the real platform every week to ensure consistency with simulation model. <br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-44\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-45\">\n\t<td class=\"column-1\">NF6<br \/>\n<\/td><td class=\"column-2\">Start and stay within a 2m by 2m boundary (except the end effector)<br \/>\n<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-46\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">The competition rules state that the robot should stay within the 2m x 2m workcell and only the end effector can reach into the shelf. The shelf is atleast 10cm away from the workcell area.<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-47\">\n\t<td class=\"column-1\"><\/td><td class=\"column-2\"><\/td>\n<\/tr>\n<tr class=\"row-48\">\n\t<td class=\"column-1\">NF7<br \/>\n<\/td><td class=\"column-2\">Have an emergency stop<br \/>\n<\/td>\n<\/tr>\n<tr class=\"row-49\">\n\t<td class=\"column-1\">Description<br \/>\n<\/td><td class=\"column-2\">We require a stop button to halt the manipulator platform in case of accident.<br \/>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-17 from cache -->\n<p style=\"line-height: 18.0pt\"><strong><span style=\"font-family: 'Georgia',serif;color: #333333\">Functional Architecture<\/span><\/strong><\/p>\n<p style=\"line-height: 18.0pt;text-align: start\"><strong><span style=\"font-family: 'Georgia',serif;color: #333333\">Input Handling:<\/span><\/strong><span class=\"apple-converted-space\"><span style=\"font-family: 'Georgia',serif;color: #333333\">\u00a0<\/span><\/span><span style=\"font-family: 'Georgia',serif;color: #333333\">The robot autonomously parses the items in the list to generate an item plan. The input handling function uses an algorithm to select small and easy to grasp items and places them in the beginning of the list followed by larger and objects with no definite shape. This system keeps track of the objects modeled in the environment and ensures the system operates correctly and recovers from errors.<\/span><\/p>\n<p style=\"line-height: 18.0pt;text-align: start\"><strong><span style=\"font-family: 'Georgia',serif;color: #333333\">Perception:<\/span><\/strong><span class=\"apple-converted-space\"><span style=\"font-family: 'Georgia',serif;color: #333333\">\u00a0<\/span><\/span><span style=\"font-family: 'Georgia',serif;color: #333333\">The perception function is responsible for scanning the shelf, scanning individual bins, determining item pose and providing the system with sufficient data to plan the manipulator trajectory to grasp the item from the shelf bin and place it in order bin.<\/span><\/p>\n<p style=\"line-height: 18.0pt;text-align: start\"><strong><span style=\"font-family: 'Georgia',serif;color: #333333\">Platform:<\/span><\/strong><span class=\"apple-converted-space\"><b><span style=\"font-family: 'Georgia',serif;color: #333333\">\u00a0<\/span><\/b><\/span><span style=\"font-family: 'Georgia',serif;color: #333333\">The platform planner\u00a0takes the item pose data as input and generates\u00a0a valid collision-free motion plan to move the<span class=\"apple-converted-space\">\u00a0<\/span>arm\u00a0to\u00a0a valid grasp\u00a0position. Further, platform function also determines the reverse path to move the arm towards the order bin.<\/span><\/p>\n<p style=\"line-height: 18.0pt\"><strong><span style=\"font-family: 'Georgia',serif;color: #333333\">Grasping:<\/span><\/strong><span class=\"apple-converted-space\"><b><span style=\"font-family: 'Georgia',serif;color: #333333\">\u00a0<\/span><\/b><span style=\"font-family: 'Georgia',serif;color: #333333\">the grasping<\/span><\/span><span style=\"font-family: 'Georgia',serif;color: #333333\">\u00a0function decides on the best grasp strategy and orients the end effector with respect to the object pose consisting of a suction system. Once the suction arm is close to the object, the grasping function switches on the suction mechanism and grasps the object<\/span><\/p>\n<p style=\"line-height: 18.0pt\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/funarch.png\" rel=\"attachment wp-att-509\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-509\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/funarch.png\" alt=\"funarch\" width=\"1223\" height=\"523\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/funarch.png 1223w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/funarch-300x128.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/funarch-768x328.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/funarch-1024x438.png 1024w\" sizes=\"auto, (max-width: 1223px) 100vw, 1223px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p style=\"line-height: 18.0pt\"><span style=\"font-family: 'Georgia',serif;color: #333333\">The functional architecture highlights the interaction between the four main functional areas. The user passes a Javascript Object Notation file which includes the item contents of all bins on the shelf and the desired order items. The robot generates an item plan to grasp the maximum number of objects in the desired timeframe. To do so, we plan to have an algorithm in place that assigns different weights such as ease of grasping, points associated etc. to each object. Finally input handling subsystem generates a work order that attempts to maximize the overall score.<\/span><\/p>\n<p style=\"line-height: 18.0pt;text-align: start\"><span style=\"font-family: 'Georgia',serif;color: #333333\">Next, the perception system\u00a0localizes the\u00a0shelf and assigns it a frame in world coordinates.\u00a0The details of the target item are passed to perception pipeline, where the Kinect2 RGBD sensor\u00a0scans the shelf to determine item pose and passes the coordinates to the grasp planner.\u00a0<\/span><\/p>\n<p style=\"line-height: 18.0pt;text-align: start\"><span style=\"font-family: 'Georgia',serif;color: #333333\">Once the perception pipeline returns the item pose, an ordered list of preferred grasps are generated from a precomputed set of valid grasp positions. The list is then sent to the arm planner and the arm planner iterates through the list to find a collision-free motion plan to the item. The suction system is activated and the\u00a0motion plan is executed by the arm. <\/span><\/p>\n<p style=\"line-height: 18.0pt\"><span style=\"font-family: 'Georgia',serif;color: #333333\">Once the motion plan is found, pressure sensor feedback provides the grasp status to the platform and once grasping is detected, the arm withdraws from the shelf. If the grasp was unsuccessful, the system will abort further attempts to grasp the current item and start on the next item in the list. Finally, the arm is moved over the order bin and the suction system is disengaged. The system iterates this loop of grasping and dropping until it has either picked up all items in the dictionary or the time limit has been reached.\u00a0<\/span><\/p>\n<p style=\"line-height: 18.0pt\"><strong><span style=\"font-family: 'Georgia',serif;color: #333333\">Physical Architecture<\/span><\/strong><\/p>\n<p style=\"line-height: 18.0pt;text-align: start\"><span style=\"font-family: 'Georgia',serif;color: #333333\">The physical architecture diagram\u00a0shows the interaction of the\u00a0robot with perception and suction subsystems and various components. As part of the global planner, we have a<span class=\"apple-converted-space\">\u00a0<\/span>computer that\u00a0runs on Ubuntu and ROS<span class=\"apple-converted-space\">\u00a0<\/span>Indigo\u00a0and takes care of the state controller including<span class=\"apple-converted-space\">\u00a0<\/span>UR5\u00a0motion planning. The Gripper subsystem consists of the suction mechanism which is controlled by the ROS state controller through an Arduino microcontroller and relays. The pressure sensor also interacts with ROS state controller through the Arduino, using the ROSserial protocol and provides the grasp status feedback.\u00a0On the perception subsystem, we are using the Kinect2 RGBD sensor which boasts higher resolution over the Kinect.<\/span><\/p>\n<p style=\"line-height: 18pt;text-align: center\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/physical-1.png\" rel=\"attachment wp-att-515\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-515\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/physical-1.png\" alt=\"physical\" width=\"756\" height=\"628\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/physical-1.png 756w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/physical-1-300x249.png 300w\" sizes=\"auto, (max-width: 756px) 100vw, 756px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p style=\"line-height: 18.0pt\"><strong><span style=\"font-family: 'Georgia',serif;color: #333333\">Software Architecture<\/span><\/strong><\/p>\n<p style=\"line-height: 18.0pt;text-align: start\"><span style=\"font-family: 'Georgia',serif;color: #333333\">The high-level software architecture diagram below explains the control and feedback mechanisms necessary in order to implment the functional architecture. The user input, in the form of a text file, is given to the master ROS controller, which begins the SMACH based state machine. <\/span><\/p>\n<p style=\"line-height: 18.0pt\"><span style=\"font-family: 'Georgia',serif;color: #333333\">First, the master ROS controller passes in an item of interest which includes the specific bin number. The robot then aligns the Kinect2 and stitches several acquired point clouds together to improve the shelf scene resolution. The item recognition algorithms then determine the item position and orientation on the shelf. Specifically, using image segmentation techniques, bag of words classifiers, and search-based matching the approximate item location is determined. Using this data, the point cloud depth data is downsampled to the region of interest. Using ground truth 3D object data, the known geometry is fit to the scene. Algorithms available in OpenCV and the Point Cloud Library are used to simplify the vision task. This results in a position and orientation of the item of interest in world coordinates. <\/span><\/p>\n<p style=\"line-height: 18.0pt;text-align: start\"><span style=\"font-family: 'Georgia',serif;color: #333333\">Finally, arm and item positions are sent to the grasp planner using trained methods of item acquisition, unique to each item. The arm planner uses the grasp list and finds a collision-free motion plan. A microcontroller is responsible for low level suction commands. Once the item is acquired, the ROS controller receives a grasp success signal from the grasp controller and then deposits the item into the order bin. This cycle repeats until all items from the input text file have been acquired.<\/span><\/p>\n<p style=\"text-align: center\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/Stateflow-1.png\" rel=\"attachment wp-att-507\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-507\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/Stateflow-1.png\" alt=\"Stateflow\" width=\"512\" height=\"442\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/Stateflow-1.png 512w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-content\/uploads\/sites\/5\/2015\/10\/Stateflow-1-300x259.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Requirements FR &#8211; Functional Requirement PR &#8211; Performance Requirement NF &#8211; Non-Functional Requirement Functional Architecture Input Handling:\u00a0The robot autonomously parses the items in the list to generate an item plan. The input handling function uses an algorithm to select small and easy to grasp items and places them in the beginning of the list followed<br \/><a class=\"moretag\" href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/design-2\/\">+ Read More<\/a><\/p>\n","protected":false},"author":10,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-134","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-json\/wp\/v2\/pages\/134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-json\/wp\/v2\/comments?post=134"}],"version-history":[{"count":43,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-json\/wp\/v2\/pages\/134\/revisions"}],"predecessor-version":[{"id":505,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-json\/wp\/v2\/pages\/134\/revisions\/505"}],"wp:attachment":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teamd\/wp-json\/wp\/v2\/media?parent=134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}