{"id":279,"date":"2015-10-23T13:56:59","date_gmt":"2015-10-23T17:56:59","guid":{"rendered":"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/?page_id=279"},"modified":"2016-05-06T19:36:55","modified_gmt":"2016-05-06T23:36:55","slug":"sensing-subsystem","status":"publish","type":"page","link":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/sensing-subsystem\/","title":{"rendered":"Sensing and Perception Subsystem"},"content":{"rendered":"<p>The sensing and perception subsystem\u2019s main objective is to collect data to aid in localization, navigation, spot detection, and obstacle avoidance.\u00a0 The generation of the environment map is also a key aspect of the project, which the system will accomplish through Asus Xtion.<\/p>\n<h2><a name=\"_Toc433289571\"><\/a>Sensing Hardware<\/h2>\n<p><strong>Function<\/strong>: Spot Detection, Odometry, Obstacle Avoidance<\/p>\n<p>We will use an Asus Xtion depth camera to acquire images and generate point clouds.\u00a0 The device features an &#8220;RGB camera, depth sensor and multi-array microphone running proprietary software&#8221;, which provide full-body 3D motion capture, facial recognition, and voice recognition capabilities.\u00a0 The depth sensor consists of an infrared laser projector combined with a monochrome CMOS sensor, which captures video data in 3D under any ambient light conditions.\u00a0 The sensing range of the depth sensor is adjustable, and\u00a0Xtion software is capable of automatically calibrating the sensor based on the physical environment.<\/p>\n<p>The camera will primarily be used to detect the spot in which a platform will park.\u00a0 By combining the data from ultrasonic sensors and vision system, the exact location of the obstacle can be calculated.\u00a0 This will augment the path planning algorithm\u2019s obstacle avoidance capability.<\/p>\n<p>Vision-based odometry using monocular or stereo vision cameras will help in localization and avoiding other moving vehicles in the lot.\u00a0 The data from encoders when coupled with visual feedback from the sensors will help in generating a reliable estimate of the robot\u2019s position.<\/p>\n<div id=\"attachment_794\" style=\"width: 479px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/xtion_pro_live_2.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-794\" class=\"wp-image-794\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/xtion_pro_live_2-300x103.jpg\" alt=\"\" width=\"469\" height=\"161\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/xtion_pro_live_2-300x103.jpg 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/xtion_pro_live_2-768x264.jpg 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/xtion_pro_live_2.jpg 800w\" sizes=\"auto, (max-width: 469px) 100vw, 469px\" \/><\/a><p id=\"caption-attachment-794\" class=\"wp-caption-text\">Asus Xtion depth camera<\/p><\/div>\n<h3><a name=\"_Toc433289571\"><\/a>Obstacle Detection using Asus Xtion<\/h3>\n<p>The obstacles are defined to be cylinders of 10-50 cm height and 10-120 cm diameter. Our algorithm uses plane fitting of a cylinder model and RANSAC for outlier rejection to segment out cylindrical objects from the point cloud. To increase the performance of the system, the incoming data from\u00a0Xtion is down-sampled using a voxel grid-based approach. Further filtering is done to retain only a region of interest for the purposes of obstacle detection and crop out everything else. This data is then passed through VoxelGrid and PassThrough filters so that the foreground objects can clearly be differentiated from background objects, such as walls.\u00a0The objective of this node is to publish the detection of an obstacle on an emergency topic.<\/p>\n<div id=\"attachment_547\" style=\"width: 711px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/obst_kinect.png\" rel=\"attachment wp-att-547\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-547\" class=\"wp-image-547\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/obst_kinect-300x121.png\" alt=\"obst_kinect\" width=\"701\" height=\"283\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/obst_kinect-300x121.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/obst_kinect-768x309.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/obst_kinect-1024x412.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/obst_kinect.png 1744w\" sizes=\"auto, (max-width: 701px) 100vw, 701px\" \/><\/a><p id=\"caption-attachment-547\" class=\"wp-caption-text\">a) Raw Data b) Segmented Cylinder<\/p><\/div>\n<h3>Obstacle Detection using Laser Range Finder<\/h3>\n<p>The LRF module consists of a laser, a CMOS camera and an onboard processor. The module works by emitting a beam of laser which is detected by the camera. The exact depth of the point is estimated by triangulation. When we sweep the laser incrementally between two angles, we would be detecting obstacles that would be half a meter in front of our platform. The subsystem uses a dedicated ROS node which parses and checks the reading from the sensor and declares emergency appropriately.<br \/>\n<a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/servo.jpg\" rel=\"attachment wp-att-605\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-605 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/servo-217x300.jpg\" alt=\"servo\" width=\"217\" height=\"300\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/servo-217x300.jpg 217w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/servo.jpg 266w\" sizes=\"auto, (max-width: 217px) 100vw, 217px\" \/><\/a><\/p>\n<p style=\"text-align: center\">Diagram depicting servo-LRF sweeping<\/p>\n<p>The above figure\u00a0depicts the calculations related to the rotation angle of the LRF. This shows that the servo needs to sweep an area of +\/- 35 degrees from the center of the platform. To do this, mounts were created to attach the LRF to the servo.<\/p>\n<h3><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/lrf.png\" rel=\"attachment wp-att-606\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-606 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/lrf-300x134.png\" alt=\"lrf\" width=\"416\" height=\"186\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/lrf-300x134.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/lrf.png 357w\" sizes=\"auto, (max-width: 416px) 100vw, 416px\" \/><\/a><\/h3>\n<p>LRF with 3D Printed Mounts<\/p>\n<h3>Obstacle Detection using IR<\/h3>\n<p>A dedicated proximity detection subsystem is used to prevent collisions with close-range obstacles.\u00a0 The system is implemented in the form of a plug-and-play PCB with sensors and a microcontroller to interpret the readings of the sensors.\u00a0 The system is designed to detect obstacles that are within 50 cm of the platform and cannot be detected using point-cloud data from the\u00a0Xtion.\u00a0 Any obstacle less than 20 cm causes an emergency to be declared in the system, making the locomotion come to a complete halt.\u00a0 Three IR sensors are mounted on the front of the platform. A dedicated Printed Circuit Board (PCB) was also designed to integrate the IR sensors within the system.\u00a0 The PCB houses an Arduino Nano, voltage regulation unit, and connectors for a power supply and three IR sensors.\u00a0 Open headers are present on the PCB for debugging and the addition of new peripherals.<\/p>\n<div id=\"attachment_549\" style=\"width: 657px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/ir_mount.jpg\" rel=\"attachment wp-att-549\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-549\" class=\"wp-image-549 \" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/ir_mount-1024x283.jpg\" alt=\"ir_mount\" width=\"647\" height=\"178\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/ir_mount-1024x283.jpg 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/ir_mount-300x83.jpg 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/ir_mount-768x213.jpg 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/ir_mount.jpg 1731w\" sizes=\"auto, (max-width: 647px) 100vw, 647px\" \/><\/a><p id=\"caption-attachment-549\" class=\"wp-caption-text\">Mounted IR Sensors<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>The Arduino operates as a ROS node and interfaces with the IR sensors to publish time-stamped range data on a ROS topic.\u00a0 This involves polling the three IR sensors and publishing the range data if the range is less than 50 cm.\u00a0 A separate \u201cemergency\u201d ROS node running on the SBC interprets range data and publishes the current state of the emergency.\u00a0 Figure 40 depicts the time-stamped range data being published on the left terminal window and the corresponding emergency state on the right.\u00a0 An emergency state of \u201c0\u201d indicates that no emergency has been detected and the system can continue normal operation.\u00a0 When a \u201c1\u201d is published on the \u201cemergencyState\u201d topic, the system is in a state of emergency and needs to stop immediately.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"attachment_551\" style=\"width: 427px\" class=\"wp-caption alignleft\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcd_design.jpg\" rel=\"attachment wp-att-551\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-551\" class=\"wp-image-551 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcd_design-270x300.jpg\" alt=\"pcd_design\" width=\"417\" height=\"463\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcd_design-270x300.jpg 270w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcd_design-768x852.jpg 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcd_design.jpg 894w\" sizes=\"auto, (max-width: 417px) 100vw, 417px\" \/><\/a><p id=\"caption-attachment-551\" class=\"wp-caption-text\">PCB Design- Rev 1<\/p><\/div>\n<div id=\"attachment_550\" style=\"width: 417px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcb_actual.jpg\" rel=\"attachment wp-att-550\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-550\" class=\"wp-image-550 \" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcb_actual-274x300.jpg\" alt=\"pcb_actual\" width=\"407\" height=\"446\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcb_actual-274x300.jpg 274w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcb_actual-768x840.jpg 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcb_actual-936x1024.jpg 936w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcb_actual.jpg 1111w\" sizes=\"auto, (max-width: 407px) 100vw, 407px\" \/><\/a><p id=\"caption-attachment-550\" class=\"wp-caption-text\">Manufactured PCB 1<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>The first revision of the PCB performed really well and also served as a source to power additional components like USB hubs.Additional components, like the USB hub, had not been taken into account during the design of the first iteration of the PCB as it was assumed that they would be powered by either USB or through Oculus Prime\u2019s power distribution board. Further shortcomings of the board included not having LEDs for diagnostics and dedicated fuses for lines powering the USB hubs. In addition to this, the PCB lacked additional connectors for powering other devices.<\/p>\n<p>To mitigate this problem, a second revision of the\u00a0PCB was designed to include-<\/p>\n<ul>\n<li>A dedicated connector for the USB hub<\/li>\n<li>A dedicated fusing for the line powering the USB Hub<\/li>\n<li>LEDs for diagnosing power for board and subcomponents.<\/li>\n<li>Additional connectors for power components that might be added to the platform.<\/li>\n<li>Changing Voltage Regulator from LM7805 to LM1084 (Higher current rating -5A)<\/li>\n<\/ul>\n<p><a href=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcb-spring.png\" rel=\"attachment wp-att-607\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-607 aligncenter\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcb-spring-292x300.png\" alt=\"pcb spring\" width=\"314\" height=\"323\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcb-spring-292x300.png 292w, https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-content\/uploads\/sites\/10\/2015\/10\/pcb-spring.png 425w\" sizes=\"auto, (max-width: 314px) 100vw, 314px\" \/><\/a><\/p>\n<p style=\"text-align: center\">Redesigned PCB Layout<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The sensing and perception subsystem\u2019s main objective is to collect data to aid in localization, navigation, spot detection, and obstacle avoidance.\u00a0 The generation of the environment map is also a key aspect of the project, which the system will accomplish through Asus Xtion. Sensing Hardware Function: Spot Detection, Odometry, Obstacle Avoidance We will use an<br \/><a class=\"moretag\" href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/sensing-subsystem\/\">+ Read More<\/a><\/p>\n","protected":false},"author":12,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template_parts\/page-fullwidth_template.php","meta":{"footnotes":""},"class_list":["post-279","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-json\/wp\/v2\/pages\/279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-json\/wp\/v2\/comments?post=279"}],"version-history":[{"count":16,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-json\/wp\/v2\/pages\/279\/revisions"}],"predecessor-version":[{"id":901,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-json\/wp\/v2\/pages\/279\/revisions\/901"}],"wp:attachment":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2015teami\/wp-json\/wp\/v2\/media?parent=279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}