{"id":352,"date":"2021-03-01T12:45:37","date_gmt":"2021-03-01T17:45:37","guid":{"rendered":"http:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/?page_id=352"},"modified":"2021-12-08T15:56:33","modified_gmt":"2021-12-08T20:56:33","slug":"documents","status":"publish","type":"page","link":"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/documents\/","title":{"rendered":"Documents"},"content":{"rendered":"\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link\" href=\"#brainstorm\">Design Brainstorming<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link\" href=\"#dsd\">Drawings, Schematics, and Datasheets<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link\" href=\"#test\">Component Testing and Results<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link\" href=\"#software\">Software<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link\" href=\"#presentations\">Presentations<\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"brainstorm\">Design Brainstorming<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"772\" height=\"1024\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-10-at-12.13.44-AM-772x1024.png\" alt=\"\" class=\"wp-image-510\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-10-at-12.13.44-AM-772x1024.png 772w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-10-at-12.13.44-AM-226x300.png 226w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-10-at-12.13.44-AM-768x1018.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-10-at-12.13.44-AM.png 952w\" sizes=\"auto, (max-width: 772px) 100vw, 772px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">First iteration of robot design<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"831\" height=\"1024\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-11-at-11.54.57-PM-831x1024.png\" alt=\"\" class=\"wp-image-665\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-11-at-11.54.57-PM-831x1024.png 831w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-11-at-11.54.57-PM-243x300.png 243w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-11-at-11.54.57-PM-768x947.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-11-at-11.54.57-PM.png 1006w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Preliminary layout of robot<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/software_brainstorm-1024x768.jpg\" alt=\"\" class=\"wp-image-668\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/software_brainstorm-1024x768.jpg 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/software_brainstorm-300x225.jpg 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/software_brainstorm-768x576.jpg 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/software_brainstorm-1536x1152.jpg 1536w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/software_brainstorm-2048x1536.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Software brainstorming<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"dsd\">Drawings, Schematics and Datasheets<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Electrical<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"655\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor1-1024x655.png\" alt=\"\" class=\"wp-image-670\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor1-1024x655.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor1-300x192.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor1-768x491.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor1.png 1272w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"665\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor2-1024x665.png\" alt=\"\" class=\"wp-image-671\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor2-1024x665.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor2-300x195.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor2-768x499.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor2.png 1278w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"662\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor3-1024x662.png\" alt=\"\" class=\"wp-image-672\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor3-1024x662.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor3-300x194.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor3-768x496.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/motor3.png 1278w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Schematic Circuit Diagrams for Dragoon&#8217;s Motors<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"793\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/pdb2_1-1024x793.png\" alt=\"\" class=\"wp-image-596\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/pdb2_1-1024x793.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/pdb2_1-300x232.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/pdb2_1-768x595.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/pdb2_1.png 1278w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"790\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-12.02.36-PM-1024x790.png\" alt=\"\" class=\"wp-image-597\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-12.02.36-PM-1024x790.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-12.02.36-PM-300x232.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-12.02.36-PM-768x593.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-12.02.36-PM.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"790\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-12.02.24-PM-1024x790.png\" alt=\"\" class=\"wp-image-598\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-12.02.24-PM-1024x790.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-12.02.24-PM-300x232.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-12.02.24-PM-768x593.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-12.02.24-PM.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">PDB V2 Design Files<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"790\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.49.40-PM-1024x790.png\" alt=\"\" class=\"wp-image-452\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.49.40-PM-1024x790.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.49.40-PM-300x231.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.49.40-PM-768x593.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.49.40-PM.png 1278w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"790\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.49.51-PM-1024x790.png\" alt=\"\" class=\"wp-image-453\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.49.51-PM-1024x790.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.49.51-PM-300x231.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.49.51-PM-768x593.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.49.51-PM.png 1278w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"794\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.50.00-PM-1024x794.png\" alt=\"\" class=\"wp-image-454\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.50.00-PM-1024x794.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.50.00-PM-300x233.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.50.00-PM-768x596.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/03\/Screen-Shot-2021-03-11-at-2.50.00-PM.png 1276w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">PDB V1 Design Files<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1-uWh23DlRZBOTHO2uxokIzZIX5pZGwVU\/view?usp=sharing\">RC Controller Manual<\/a> <\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/126eWWBqA9dPwcTlGaNeB_OCjbqVirD-9\/view?usp=sharing\">Jetson AGX Xavier User Guide<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1ju4hH6sbIU0TCWTZz5qedu0iesMr33XK\/view?usp=sharing\">Roboteq Controllers User Manual<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1kdf69TC0Hc4NCsgNOtc5yU5OS678CUdY\/view?usp=sharing\">Roboteq SDC21xx Controller Datasheet<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1q23ej80g6tUy697E2lYfAWCyWSD-8C2z\/view?usp=sharing\">IG-42 Gear Head Datasheet<\/a> <\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1rwVV7rTTNm-Ta-muoftp808cJpN4rT2s\/view?usp=sharing\">IG-42GM Gear Motor Datasheet<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1V-gmfCQ1BSBKhzFI94NKCDCVhuuTPKia\/view?usp=sharing\">Intel D435i Datasheet<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1G9djpIlaVrE_52_5r2d1PAgDuY_AnMQX\/view?usp=sharing\">Seek Thermal Datasheet<\/a><\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1ypX7Ku_J5N4uLdi2F-JLaowo0D8hJKZV\/view?usp=sharing\">Velodyne VLP-16 Datasheet<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Mechanical<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"790\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-12.54.27-AM-1024x790.png\" alt=\"\" class=\"wp-image-675\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-12.54.27-AM-1024x790.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-12.54.27-AM-300x231.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-12.54.27-AM-768x593.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-12.54.27-AM.png 1278w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Mechanical Drawing of Robot Base<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"763\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-1.24.31-AM-1024x763.png\" alt=\"\" class=\"wp-image-573\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-1.24.31-AM-1024x763.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-1.24.31-AM-300x224.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-1.24.31-AM-768x573.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/04\/Screen-Shot-2021-04-10-at-1.24.31-AM.png 1100w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">LiDAR mount CAD file<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1V-gmfCQ1BSBKhzFI94NKCDCVhuuTPKia\/view?usp=sharing\">SuperDroid MLT-42 Assembly Manual<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Software Flowchart<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"646\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-12.58.32-AM-1024x646.png\" alt=\"\" class=\"wp-image-677\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-12.58.32-AM-1024x646.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-12.58.32-AM-300x189.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-12.58.32-AM-768x484.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-12.58.32-AM.png 1066w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Overview of Software Architecture<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"test\">Component Testing and Results<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Full System Testing<\/h3>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"iframe-container\"><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/7T1-ZcAdGHU\" allowfullscreen=\"\" width=\"50%\" height=\"315\" frameborder=\"0\"><\/iframe><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"iframe-container\"><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/3dXmQeybW04\" allowfullscreen=\"\" width=\"50%\" height=\"315\" frameborder=\"0\"><\/iframe><\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\">Full system test on 4\/12. Visualizer on left and synchronized test footage on right.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Hardware Testing<\/h3>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1yiuX37hcbGBtCN1dV6Igxb18LwVRB5ke\/view\">Robot base mobility test 1<\/a> (external video)<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1rVCgTDNVEiz1eYNGsCqQWN8zdCA4RUQG\/view?usp=sharing\">Robot base mobility test 2<\/a> (external video)<\/p>\n\n\n\n<p class=\"has-text-align-center\"><a href=\"https:\/\/drive.google.com\/file\/d\/1eZmyfJ1jJNhVhsgjCi5hsNK1yC-2GntX\/view?usp=sharing\">DC Motors working on robot base<\/a> (external video)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Software Testing<\/h3>\n\n\n\n<p>We tested the speed of our human detection and localization algorithm with the following setup:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"422\" height=\"568\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.56.53-AM.png\" alt=\"\" class=\"wp-image-686\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.56.53-AM.png 422w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.56.53-AM-223x300.png 223w\" sizes=\"auto, (max-width: 422px) 100vw, 422px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">A foam block is placed in front of Dragoon at the start of the test. We collected the time between the removal of the foam block and the appearance of the human in the correct location on the visualizer.<\/p>\n\n\n\n<p>We performed the test in the following four positions:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"560\" height=\"180\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.10-AM.png\" alt=\"\" class=\"wp-image-687\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.10-AM.png 560w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.10-AM-300x96.png 300w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Supine Position<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"448\" height=\"118\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.14-AM.png\" alt=\"\" class=\"wp-image-688\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.14-AM.png 448w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.14-AM-300x79.png 300w\" sizes=\"auto, (max-width: 448px) 100vw, 448px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Side-lying Position<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"198\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.20-AM.png\" alt=\"\" class=\"wp-image-689\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.20-AM.png 474w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.20-AM-300x125.png 300w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Seated Position<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"526\" height=\"210\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.29-AM.png\" alt=\"\" class=\"wp-image-690\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.29-AM.png 526w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-10.59.29-AM-300x120.png 300w\" sizes=\"auto, (max-width: 526px) 100vw, 526px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Standing Position<\/p>\n\n\n\n<p>Below is our aggregate results for our detection times:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"234\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.03.58-AM-1024x234.png\" alt=\"\" class=\"wp-image-691\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.03.58-AM-1024x234.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.03.58-AM-300x69.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.03.58-AM-768x176.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.03.58-AM.png 1496w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Detection times at a distance of 3m through 4 trials.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"237\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.04.40-AM-1024x237.png\" alt=\"\" class=\"wp-image-692\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.04.40-AM-1024x237.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.04.40-AM-300x69.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.04.40-AM-768x178.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.04.40-AM.png 1494w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Detection times at a distance of 5m through 4 trials.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"240\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.05.02-AM-1024x240.png\" alt=\"\" class=\"wp-image-693\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.05.02-AM-1024x240.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.05.02-AM-300x70.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.05.02-AM-768x180.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-content\/uploads\/sites\/51\/2021\/05\/Screen-Shot-2021-05-12-at-11.05.02-AM.png 1494w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-text-align-center\">Detection times at a distance of 7m through 4 trials.<\/p>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"software\">Software<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># Class: 16-681A, MRSD Project 1\n# Team: B, HOWD-E\n# Team Members: Dan Bronstein, Kelvin Kang, Ben Kolligs, Jacqueline Liao\n# Function: This is a ROS Node that subscribes to the RealSense's depth stream and a RealSense RGB\n#\t\t\tYOLO bounding box topic and returns the 3D position of the human relative to the RealSense.\n# Date of first revision: 02\/08\/2021\n\n#!\/usr\/bin\/env python\nimport rospy\nfrom cv_bridge import CvBridge, CvBridgeError\nfrom sensor_msgs.msg import Image\nfrom sensor_msgs.msg import CameraInfo\nfrom std_msgs.msg import Empty\nimport pyrealsense2 as rs2\nfrom darknet_ros_msgs.msg import BoundingBoxes\nfrom dragoon_messages.msg import ObjectInfo\nfrom dragoon_messages.msg import Objects\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport cv2\nfrom threading import Lock\n\n# Class for detected YOLO objects\nclass DetectedObject():\n    def __init__(self):\n        self.probability = 0.0\n        self.id = 0\n        self.Class = \"None\"\n        self.xmin = 0.0\n        self.xmax = 0.0\n        self.ymin = 0.0\n        self.ymax = 0.0\n\nclass rgb_human_detection_node():\n    def __init__(self):\n        # Define type of depth extraction\n        self.centroid = False\n        # self.centroid = True\n\n        #hearbeat publisher and heartbeat timer\n        self.heartbeat_pub = rospy.Publisher('RelLocHeartbeat', Empty, queue_size=1)\n        self.timer = rospy.Timer(rospy.Duration(1), self.timer_callback)\n\n        self.mutex = Lock()\n        self.binning = True\n        self.num_bins = 40\n        self.to_pub = False\n        self.depth_image = None\n\n        # Needed for depth image visualization\n        self.counter_depth = 0\n        self.scat_depth = None\n\n        # Needed for rgb image visualization\n        self.counter_rgb = 0\n        self.scat_rgb = None\n\n        # Subscriber for RealSense depth camera intrinsics\n        self.depthInfoSub = rospy.Subscriber(\"\/camera\/depth\/camera_info\", CameraInfo, self.imageDepthInfoCallback)\n        # Subscriber for RealSense RGB camera intrinsics\n        self.rgbInfoSub = rospy.Subscriber(\"camera\/color\/camera_info\", CameraInfo, self.imageColorInfoCallback)\n        # Subscriber for YOLO bounding boxes on RGB stream\n        self.bboxSub = rospy.Subscriber(\"\/darknet_ros\/bounding_boxes\", BoundingBoxes, self.get_bbox, queue_size=1)\n        # Subscriber for depth image\n        self.depthSub = rospy.Subscriber(\"\/camera\/depth\/image_rect_raw\", Image, self.convert_depth_image, queue_size=1) # , buffer_size=10000000\n        # Subscriber for RGB image - do NOT visualize depth and RGB simultaneously for now\n        # self.rgbSub = rospy.Subscriber(\"\/camera\/color\/image_raw\", Image, self.show_color_image)\n\n        # Publisher that will publish list of poses\/object infos as an Objects message\n        self.pub = rospy.Publisher('ObjectPoses', Objects, queue_size = 1)\n        # Objects message to be published, consisting of poses\/infos stored as ObjectInfo messages\n        self.poseMsgs = Objects()\n        # List of objects detected by YOLO in current frame\n        self.obs = &#091;]\n\n        self.depth_intrinsics = None\n        self.color_intrinsics = None\n\n        # Hard-coded extrinsics\n        self.depth_to_color_extrin = rs2.extrinsics()\n        self.depth_to_color_extrin.translation = &#091;0.0147247, 0.000133323, 0.000350991]\n        self.depth_to_color_extrin.rotation = &#091;0.999929, 0.01182, -0.00152212, -0.0118143, 0.999923, 0.00370104, 0.00156575, -0.0036828, 0.999992]\n\n        self.color_to_depth_extrin = rs2.extrinsics()\n        self.color_to_depth_extrin.translation = &#091;-0.0147247, 3.93503e-05, -0.000373552]\n        self.color_to_depth_extrin.rotation = &#091;0.999929, -0.0118143, 0.00156575, 0.01182, 0.999923, -0.0036828, -0.00152212, 0.00370104, 0.999992]\n\n        # Depth camera scale (not used in current implementation)\n        self.depth_scale = 0.0010000000475\n        # Minimum detectable depth \n        self.depth_min = 0.11\n        # Maximum detectable depth\n        self.depth_max = 10.0\n\n    # Projects a pixel from RGB frame to depth frame. Reference C++ code in link below:\n    # http:\/\/docs.ros.org\/en\/kinetic\/api\/librealsense2\/html\/rsutil_8h_source.html#l00186\n    # Difference is that I pass in converted depth from CvBridge instead of calculating depth using depth scale and raw depth data in line 213\n    def project_color_to_depth(self, depth_image, from_pixel):\n        to_pixel = &#091;0.0,0.0]\n        min_point = rs2.rs2_deproject_pixel_to_point(self.color_intrinsics, from_pixel, self.depth_min)\n        min_transformed_point = rs2.rs2_transform_point_to_point(self.depth_to_color_extrin, min_point)\n        # min_transformed_point = rs2.rs2_transform_point_to_point(self.color_to_depth_extrin, min_point)\n        start_pixel = rs2.rs2_project_point_to_pixel(self.depth_intrinsics, min_transformed_point)\n        start_pixel = rs2.adjust_2D_point_to_boundary(start_pixel,self.depth_intrinsics.width, self.depth_intrinsics.height)\n\n        max_point = rs2.rs2_deproject_pixel_to_point(self.color_intrinsics, from_pixel, self.depth_max)\n        max_transformed_point = rs2.rs2_transform_point_to_point(self.depth_to_color_extrin, max_point)\n        # max_transformed_point = rs2.rs2_transform_point_to_point(self.color_to_depth_extrin, max_point)\n        end_pixel = rs2.rs2_project_point_to_pixel(self.depth_intrinsics, max_transformed_point)\n        end_pixel = rs2.adjust_2D_point_to_boundary(end_pixel,self.depth_intrinsics.width, self.depth_intrinsics.height)\n\n        min_dist = -1.0\n        p = &#091;start_pixel&#091;0], start_pixel&#091;1]]\n        next_pixel_in_line = rs2.next_pixel_in_line(&#091;start_pixel&#091;0],start_pixel&#091;1]], start_pixel, end_pixel)\n        while rs2.is_pixel_in_line(p, start_pixel, end_pixel):\n            depth = depth_image&#091;int(p&#091;1])*self.depth_intrinsics.width+int(p&#091;0])]\/1000.0\n            if depth == 0:\n                p = rs2.next_pixel_in_line(p, start_pixel, end_pixel)\n                continue   \n\n            point = rs2.rs2_deproject_pixel_to_point(self.depth_intrinsics, p, depth)\n            transformed_point = rs2.rs2_transform_point_to_point(self.color_to_depth_extrin, point)\n            # transformed_point = rs2.rs2_transform_point_to_point(self.depth_to_color_extrin, point)\n            projected_pixel = rs2.rs2_project_point_to_pixel(self.color_intrinsics, transformed_point)\n\n            new_dist = (projected_pixel&#091;1]-from_pixel&#091;1])**2+(projected_pixel&#091;0]-from_pixel&#091;0])**2\n            if new_dist &lt; min_dist or min_dist &lt; 0:\n                min_dist = new_dist\n                to_pixel&#091;0] = p&#091;0]\n                to_pixel&#091;1] = p&#091;1]\n\n            p = rs2.next_pixel_in_line(p, start_pixel, end_pixel)\n        return to_pixel\n\n    # Call this function to get depth intrinsics \n    def imageDepthInfoCallback(self, cameraInfo):\n        if self.depth_intrinsics:\n            return\n        self.depth_intrinsics = rs2.intrinsics()\n        self.depth_intrinsics.width = cameraInfo.width\n        self.depth_intrinsics.height = cameraInfo.height\n        self.depth_intrinsics.ppx = cameraInfo.K&#091;2]\n        self.depth_intrinsics.ppy = cameraInfo.K&#091;5]\n        self.depth_intrinsics.fx = cameraInfo.K&#091;0]\n        self.depth_intrinsics.fy = cameraInfo.K&#091;4]\n        if cameraInfo.distortion_model == \"plumb_bob\":\n            self.depth_intrinsics.model = rs2.distortion.brown_conrady\n        elif cameraInfo.distortion_model == \"equidistant\":\n            self.depth_intrinsics.model = rs2.distortion.kannala_brandt4\n        self.depth_intrinsics.coeffs = &#091;i for i in cameraInfo.D]\n\n    # Call this function to get RGB intrinsics \n    def imageColorInfoCallback(self, cameraInfo):\n        if self.color_intrinsics:\n            return\n        self.color_intrinsics = rs2.intrinsics()\n        self.color_intrinsics.width = cameraInfo.width\n        self.color_intrinsics.height = cameraInfo.height\n        self.color_intrinsics.ppx = cameraInfo.K&#091;2]\n        self.color_intrinsics.ppy = cameraInfo.K&#091;5]\n        self.color_intrinsics.fx = cameraInfo.K&#091;0]\n        self.color_intrinsics.fy = cameraInfo.K&#091;4]\n        if cameraInfo.distortion_model == \"plumb_bob\":\n            self.color_intrinsics.model = rs2.distortion.brown_conrady\n        elif cameraInfo.distortion_model == \"equidistant\":\n            self.color_intrinsics.model = rs2.distortion.kannala_brandt4\n        self.color_intrinsics.coeffs = &#091;i for i in cameraInfo.D]\n\n    # CGet 3D position from YOLO bounding box, publish position\n    def get_bbox(self, bounding_box_msg):\n        temp_obs = &#091;]\n        for bbox in bounding_box_msg.bounding_boxes:\n            if bbox.Class == 'person':\n                temp_obs.append(bbox)\n        temp_image = None\n        if self.depth_image is None:\n            return\n        elif self.depth_intrinsics is None:\n            return\n        elif self.color_intrinsics is None:\n            return\n        else:\n            temp_image = self.depth_image.copy()\n        \n        #clear previous msgs\n        self.poseMsgs = Objects()\n\n        for obj in temp_obs:\n            # Get YOLO bbox corners\n            color_points = &#091;\n                &#091;float(obj.xmin), float(obj.ymin)],\n                &#091;float(obj.xmax), float(obj.ymin)],\n                &#091;float(obj.xmin), float(obj.ymax)],\n                &#091;float(obj.xmax), float(obj.ymax)]\n            ]\n\n            # Convert each corner from color image to depth image\n            depth_points = &#091;]\n            for color_point in color_points:\n                depth_flattened = temp_image.flatten()\n                depth_point = self.project_color_to_depth(depth_flattened, color_point)\n                depth_points.append(depth_point)\n\n            depth_points = np.array(depth_points)\n            color_points = np.array(color_points)\n\n            # Visualize bboxes in depth image\n            # if self.scat_depth != None:\n            #     self.scat_depth.remove()\n            # plt.imshow(depth_image)\n            # self.scat_depth = plt.scatter(depth_points&#091;:,0],depth_points&#091;:,1])\n            # plt.show()\n            # plt.pause(0.00000000001)\n            # im_plotted = temp_image.copy()\n            # for p in depth_points:\n            # for p in color_points:\n            #    im_plotted = cv2.circle(im_plotted, (int(p&#091;0]), int(p&#091;1])), 10, (0,0,255), -1)\n\n            # Get mins and maxes of depth image bbox\n            depth_xmin = min(depth_points&#091;:,0])\n            depth_xmax = max(depth_points&#091;:,0])\n            depth_ymin = min(depth_points&#091;:,1])\n            depth_ymax = max(depth_points&#091;:,1])\n\n            # Convert the depth image to a Numpy array\n            depth_array = np.array(temp_image, dtype=np.float32)\n\n            # Find all pixel depth in bbox in order to find mode (best_depth)\n            if self.binning:\n                bbox_pixel_depths = &#091;]\n                for i in range(int(depth_xmin), int(depth_xmax)):\n                    for j in range(int(depth_ymin), int(depth_ymax)):\n                        bbox_pixel_depths.append(depth_array&#091;j, i])\n\n                hist, bin_edges = np.histogram(bbox_pixel_depths, bins=self.num_bins)\n                max_index = np.argmax(hist)\n                best_depth = (bin_edges&#091;max_index]+bin_edges&#091;max_index+1])\/2000.0\n\n            # Get position of center of bbox \n            bbox_center_x = int((depth_xmax+depth_xmin)\/2)\n            bbox_center_y = int((depth_ymax+depth_ymin)\/2)\n\n            if self.depth_intrinsics:\n            \t# Extract depth of center pixel\n                center_depth = depth_array&#091;bbox_center_y, bbox_center_x]\n\n                # Get 3D pose of point in depth frame\n                result = rs2.rs2_deproject_pixel_to_point(self.depth_intrinsics, &#091;bbox_center_x, bbox_center_y], center_depth)\n\n                # New poseMsg with 3D pose info, probability, id, and class from YOLO\n                poseMsg = ObjectInfo()\n                poseMsg.pose.x = result&#091;0]\/1000.0\n                poseMsg.pose.y = result&#091;1]\/1000.0\n                if self.binning:\n                    poseMsg.pose.z = best_depth\n                elif self.centroid:\n                    poseMsg.pose.z = result&#091;2]\/1000.0\n                poseMsg.probability = obj.probability\n                poseMsg.id = obj.id\n                poseMsg.Class = obj.Class  \n\n                # Add new poseMsg to poseMsgs, Objects msg that will be published\n                self.poseMsgs.objects_info.append(poseMsg)\n\n        # Publish Objects msg for frame once all YOLO objects are processed        \n        if len(temp_obs) != 0:\n            self.pub.publish(self.poseMsgs)\n\n    # Convert raw depth data to actual depth, get actual depth info of YOLO bboxes and publish to 'ObjectPoses'\n    def convert_depth_image(self, ros_image):\n        # Use cv_bridge() to convert the ROS image to OpenCV format\n        bridge = CvBridge()\n        # Convert the depth image using the default passthrough encoding\n        self.depth_image = bridge.imgmsg_to_cv2(ros_image, desired_encoding=\"passthrough\")\n\n    # Visulize RGB stream with all bboxes\n    def show_color_image(self, ros_image):\n        if self.counter_rgb % 10 == 0:\n            bridge_color = CvBridge()\n            color_image = bridge_color.imgmsg_to_cv2(ros_image, desired_encoding=\"passthrough\")\n            for obj in self.obs:\n                if self.scat_rgb != None:\n                    self.scat_rgb.remove()\n                #plt.imshow(color_image)\n                #self.scat_rgb = plt.scatter(np.array(&#091;obj.xmin, obj.xmin, obj.xmax, obj.xmax]),np.array(&#091;obj.ymin, obj.ymax, obj.ymin, obj.ymax]))\n                #plt.show()\n                #plt.pause(0.00000000001)\n\n        self.counter_rgb += 1\n\n    def timer_callback(self, timer):\n        msg = Empty()\n        self.heartbeat_pub.publish(msg)\n\ndef main():\n    rospy.init_node('rgbHD',anonymous=True)\n    rgbDetectionNode = rgb_human_detection_node()\n\n    # These two lines needed for continuous visualization\n    #plt.ion()\n    #plt.show()\n\n    rospy.spin()\n\nif __name__ == '__main__':\n    main()\n    \n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"presentations\">Presentations<\/h2>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1TPN1GuryNRILrsd38_B43Y5Fx6IaxnYX\/view?usp=sharing\" target=\"_blank\">Conceptual Design Report<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1USW3AtRDucVVHkBOLkMnOv2B4IKcM16l\/view?usp=sharing\" target=\"_blank\">Preliminary Design Review<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.google.com\/presentation\/d\/1EYQbG_Z8B2HwgEZEbfFWaLcgbZpCKSoGK5DXTAwsd9I\/edit?usp=sharing\" target=\"_blank\">Critical Design Review<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1JJKsaCnnFtWPDVStyBlbnxyuvoSi_L6g\/view?usp=sharing\" target=\"_blank\">Critical Design Review Report<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.google.com\/presentation\/d\/1LSZhvDrlwFWjes0UgRwpIHfwVwvP9ADQ\/edit?usp=sharing&amp;ouid=116435319051783999003&amp;rtpof=true&amp;sd=true\" target=\"_blank\">System Developmen<\/a><a href=\"https:\/\/docs.google.com\/presentation\/d\/1LSZhvDrlwFWjes0UgRwpIHfwVwvP9ADQ\/edit?usp=sharing&amp;ouid=116435319051783999003&amp;rtpof=true&amp;sd=true\" target=\"_blank\" rel=\"noreferrer noopener\">t<\/a><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.google.com\/presentation\/d\/1LSZhvDrlwFWjes0UgRwpIHfwVwvP9ADQ\/edit?usp=sharing&amp;ouid=116435319051783999003&amp;rtpof=true&amp;sd=true\" target=\"_blank\"> Review<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.google.com\/presentation\/d\/1xKu6cv8ApQK9N1SfCd-JMhyHdEgenW1LkXbycpCTj2U\/edit?usp=sharing\" target=\"_blank\">Standards and Regulations<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1yLrq9S9XhwUgxqNpyn5itQp4WPN1BQGo\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">Final Report<\/a> (external link)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">ILRs<\/h3>\n\n\n\n<h5 class=\"wp-block-heading\">Daniel Bronstein<\/h5>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1crG_sfrAxQOD2OAGFtBTfMYO7LbMHcPa\/view?usp=sharing\" target=\"_blank\">ILR1<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1rocoJZhNomevo0VZ4QUmRqh_rFLcKTiX\/view?usp=sharing\" target=\"_blank\">ILR2<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1mELEHUgO5T1tDsu900nH_8JPiAH5nTlV\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR3<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1xRYfe-6xELXwww5M0CorXzsKHx_8e3L0\/view?usp=sharing\" target=\"_blank\">ILR4<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1dVxl9qS_WvTIi0ralFg8qx8I9SRYQs_S\/view?usp=sharing\" target=\"_blank\">ILR5<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1s53uuo7ezHqhD2RsT0dBK2jI1MIAYmc-\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR6<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/15XQEygxyy68IJhNBZCMtV6F9QkdRdyQN\/view?usp=sharing\" target=\"_blank\">ILR7<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1TkqtO9q9OkObiELFZJ6x31Zsc9GZ1kzX\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR8<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1ZUogsBqz67KdVmYJPhipKZkDMXYXflMm\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR9<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1sJS3ZbUYhzMOSfp4ZVAYMBgSbLFeJkQW\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR10<\/a> (external link)<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Kelvin Kang<\/h5>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1HFWuy-Y48ZlqelcZzaDriLf3iQOQiFvI\/view?usp=sharing\" target=\"_blank\">ILR1<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/12oP-S-mPJLX2c5aY0NWer42EogQaJP3U\/view?usp=sharing\" target=\"_blank\">ILR2<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1fqDLGze2DQaOfC-p-ylE5vJRLMNPWVPA\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR3<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1tgxFOPhx5EPrwWtv_NbMKFPIMMscrM-C\/view?usp=sharing\" target=\"_blank\">ILR4<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1qxZeGd6_axT0zrA6cBStA9dSA8Bzk9OA\/view?usp=sharing\" target=\"_blank\">ILR5<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1-ekU6cYRM0dfgWEfnSWCUxHzYAIZt4ZO\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR6<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1-wUMiNyHD7k491NqsxbVI3l4vWzhjNzi\/view?usp=sharing\" target=\"_blank\">ILR7<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/11-A7ZUyLWeuoswVDyZo497TaBgSm9m8Q\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR8<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/10pGwGM4vMLcOkJdIp8nuMEauLPIA1uIy\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR9<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/10yEwDXrQIlAnf48IeNugjvwRFokX3IvU\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR10<\/a> (external link)<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Ben Kolligs<\/h5>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1IqhZ4bxgb9UT0uuHN_zHbjVcir2pyW_Q\/view?usp=sharing\" target=\"_blank\">ILR1<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1cIqHa4UiOy0S8C-kFt3qvyrv91nFeJ97\/view?usp=sharing\" target=\"_blank\">ILR2<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1dB-g1OYMKI5ZeQ4J57WN5MeBgcBQA1dQ\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR3<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/19IqS9j6dHivvADRtdqN23cJiff2k7w6R\/view?usp=sharing\" target=\"_blank\">ILR4<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1K7z0jTpXSQ4uiT28a5r4to82sGHxLppm\/view?usp=sharing\" target=\"_blank\">ILR5<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1XjBMc3h9HI0nkCwvaLJVjP-HIblpu_FT\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR6<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1xcJqocK_HlzfmQsmAwO1qw99tHaOi0C2\/view?usp=sharing\" target=\"_blank\">ILR7<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/16nxTpHFCgBGzMtyTkoBQzQwPsrRrWCJj\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR8<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1CHAPa7g_T3obhG2HMQD2-cD2xss_3X6G\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR9<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/14NRu3aVd4dKN_aUaJ51UUU0GLBKsU7Y9\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR10<\/a> (external link)<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Jacqueline Liao<\/h5>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/17VjDr5gNjcSb2hFtL9XRAKb1PVW2_2Eh\/view?usp=sharing\" target=\"_blank\">ILR1<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1q-BQxsCDdVvy_ybkUVBjaTjGoAYFO9dI\/view?usp=sharing\" target=\"_blank\">ILR2<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1pQ0dOVZEN4AJxLX4Zb3FktW6-OOYhGo5\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR3<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1avcNLt0Pxvu3jpBGNA9-XJdr3zGnPob2\/view?usp=sharing\" target=\"_blank\">ILR4<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1mNRzffjNZf5tbNoqymX4w5os7b4x8nCY\/view?usp=sharing\" target=\"_blank\">ILR5<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/12e941V8fCadmFEt3SphALzPRzZvBzcIr\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR6<\/a> (external link)<\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/drive.google.com\/file\/d\/1lrC1BBkmyr0PqeUYVkv7gIpnZgqHWLXb\/view?usp=sharing\" target=\"_blank\">ILR7<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1KHGOR7GlwFd6cFDMvM4fNwpSInZvN88K\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR8<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1dH_pn0eOst38vvl68TGqVP2vmeYKWG2X\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR9<\/a> (external link)<\/p>\n\n\n\n<p><a href=\"https:\/\/drive.google.com\/file\/d\/1dHL86mP_faVVjKs7F1w1UmXBuSoNVFMz\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">ILR10<\/a> (external link)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Design Brainstorming First iteration of robot design Preliminary layout of robot Software brainstorming Drawings, Schematics and Datasheets Electrical Schematic Circuit Diagrams for Dragoon&#8217;s Motors PDB V2 Design Files PDB V1 Design Files RC Controller Manual Jetson AGX Xavier User Guide Roboteq Controllers User Manual Roboteq SDC21xx Controller Datasheet IG-42 Gear Head Datasheet IG-42GM Gear Motor<br \/><a class=\"moretag\" href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/documents\/\">+ Read More<\/a><\/p>\n","protected":false},"author":235,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-352","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-json\/wp\/v2\/pages\/352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-json\/wp\/v2\/users\/235"}],"replies":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-json\/wp\/v2\/comments?post=352"}],"version-history":[{"count":75,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-json\/wp\/v2\/pages\/352\/revisions"}],"predecessor-version":[{"id":791,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-json\/wp\/v2\/pages\/352\/revisions\/791"}],"wp:attachment":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2021teamb\/wp-json\/wp\/v2\/media?parent=352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}