{"id":364,"date":"2020-04-03T04:09:18","date_gmt":"2020-04-03T04:09:18","guid":{"rendered":"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/?page_id=364"},"modified":"2020-12-18T22:16:07","modified_gmt":"2020-12-18T22:16:07","slug":"parking-subsystem","status":"publish","type":"page","link":"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/parking-subsystem\/","title":{"rendered":"Parking Subsystem"},"content":{"rendered":"\n<p>The parking spot is detected by identifying an ArUco marker placed close to the lane center line. The initial idea was to change the position of the ArUco marker based on the direction of the desired parking spot. If the tag was detected on the right side of the lane, the robot would know to park in the right-hand spot, and if the tag was detected on the left side of the lane, the robot would know to park in the left-hand spot. For the final implementation, however, we simplified the problem by placing the tag on the center line in both cases, and only flipping the tag. We used the different detected orientations of the tag to inform which side to park on.<\/p>\n\n\n\n<p>Once a parking spot has been found, the system generates a goal in the center of the parking spot. For a smoother parking maneuver, we developed a three-waypoint parking strategy, where the first goal is roughly one parking space before the ArUco tag, the second goal is at the foot of the parking spot and the third goal is the aforementioned center of the spot. The algorithm sends each of the three goals as the robot approaches the previous goal.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"349\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/12\/parkingfinal-1024x349.png\" alt=\"\" class=\"wp-image-734\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/12\/parkingfinal-1024x349.png 1024w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/12\/parkingfinal-300x102.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/12\/parkingfinal-768x262.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/12\/parkingfinal-1536x523.png 1536w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/12\/parkingfinal-830x283.png 830w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/12\/parkingfinal-230x78.png 230w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/12\/parkingfinal-350x119.png 350w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/12\/parkingfinal-480x164.png 480w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/12\/parkingfinal.png 1870w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Figure: Husky successfully parked at its final goal inside the parking spot<\/figcaption><\/figure><\/div>\n\n\n\n<p>As another feature improvement, we perform filtering of the detected ArUco tag to increase accuracy. For this, we maintain a pose queue with the previous 20 detected poses. To extract the least noisy pose out of those 20 poses, we perform RANSAC with the distance metric being the quaternion distance between any two poses. The pose with the most inliers is voted as the final tag pose that we pass to the parking waypoint generation algorithm to create the three waypoints discussed above.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Simulation:<\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"748\" height=\"280\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-sim-1.jpg\" alt=\"\" class=\"wp-image-636\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-sim-1.jpg 748w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-sim-1-300x112.jpg 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-sim-1-230x86.jpg 230w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-sim-1-350x131.jpg 350w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-sim-1-480x180.jpg 480w\" sizes=\"auto, (max-width: 748px) 100vw, 748px\" \/><figcaption>ArUco marker detection in our Gazebo world<\/figcaption><\/figure><\/div>\n\n\n\n<p>First, we imported and placed an ArUco tag model in Gazebo. We then used the detection package by \u2018pal-robotics\u2019 to detect and return the pose of the tag.&nbsp; On experimenting with the different positions and orientations to place the tag for the best use in our problem, we finally settled on keeping the tag floating vertical and close to the yellow centerline on the parking lot. The tag was satisfactorily detected with low errors (under 20cm) in x, y, and z directions. The image below shows how the tag was detected and a path (shown in green) was generated towards the parking pose.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image.png\" alt=\"\" class=\"wp-image-681\" width=\"357\" height=\"372\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image.png 640w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-288x300.png 288w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-230x240.png 230w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-350x365.png 350w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-480x500.png 480w\" sizes=\"auto, (max-width: 357px) 100vw, 357px\" \/><figcaption>Parking Implementation with a single parking goal<\/figcaption><\/figure><\/div>\n\n\n\n<p>We created four new Gazebo worlds (shown below) to show off the two new features we added to our system, which are the ability to perform left parking and left turns. The four worlds were: two right turns + right parking (RRR), two right turns + left parking (RRL), two left turns + left parking (LLL), and two left turns + right (LLR) parking.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter columns-3 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"840\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-5.png\" alt=\"\" data-id=\"686\" data-full-url=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-5.png\" data-link=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/parking-subsystem\/image-5-2\/\" class=\"wp-image-686\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-5.png 640w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-5-229x300.png 229w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-5-230x302.png 230w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-5-350x459.png 350w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-5-480x630.png 480w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><figcaption class=\"blocks-gallery-item__caption\">RRL world<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"433\" height=\"614\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-4.png\" alt=\"\" data-id=\"685\" data-full-url=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-4.png\" data-link=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/parking-subsystem\/image-4-3\/\" class=\"wp-image-685\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-4.png 433w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-4-212x300.png 212w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-4-230x326.png 230w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-4-350x496.png 350w\" sizes=\"auto, (max-width: 433px) 100vw, 433px\" \/><figcaption class=\"blocks-gallery-item__caption\">RRR world<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"433\" height=\"588\" src=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-2.png\" alt=\"\" data-id=\"683\" data-full-url=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-2.png\" data-link=\"http:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/parking-subsystem\/image-2-5\/\" class=\"wp-image-683\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-2.png 433w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-2-221x300.png 221w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-2-230x312.png 230w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/11\/image-2-350x475.png 350w\" sizes=\"auto, (max-width: 433px) 100vw, 433px\" \/><figcaption class=\"blocks-gallery-item__caption\">LLR world<\/figcaption><\/figure><\/li><\/ul><figcaption class=\"blocks-gallery-caption\">The world configurations with different turn and parking directions<\/figcaption><\/figure>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Hardware:<\/strong><\/h3>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"976\" height=\"284\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-hw-2.jpg\" alt=\"\" class=\"wp-image-630\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-hw-2.jpg 976w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-hw-2-300x87.jpg 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-hw-2-768x223.jpg 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-hw-2-830x242.jpg 830w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-hw-2-230x67.jpg 230w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-hw-2-350x102.jpg 350w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/ArUco-hw-2-480x140.jpg 480w\" sizes=\"auto, (max-width: 976px) 100vw, 976px\" \/><figcaption>ArUco Tags detected in the real-world<\/figcaption><\/figure><\/div>\n\n\n\n<p>After successfully detecting the tags on our simulated world, we also tested the package on hardware in the parking lot. The results were similar and the figure below also shows the corresponding \u2018tf\u2019 being published in RViz. On visual inspection, the tf also seemed to be accurately positioned.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"458\" height=\"540\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/arUco-tf.png\" alt=\"\" class=\"wp-image-634\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/arUco-tf.png 458w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/arUco-tf-254x300.png 254w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/arUco-tf-230x271.png 230w, https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-content\/uploads\/sites\/48\/2020\/10\/arUco-tf-350x413.png 350w\" sizes=\"auto, (max-width: 458px) 100vw, 458px\" \/><figcaption>Detection in parking lot with corresponding \u2018tf\u2019 being published in RViz<\/figcaption><\/figure><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The parking spot is detected by identifying an ArUco marker placed close to the lane center line. The initial idea was to [&hellip;]<\/p>\n","protected":false},"author":219,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/page_fullwidth.php","meta":{"footnotes":""},"class_list":["post-364","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-json\/wp\/v2\/pages\/364","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-json\/wp\/v2\/users\/219"}],"replies":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-json\/wp\/v2\/comments?post=364"}],"version-history":[{"count":30,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-json\/wp\/v2\/pages\/364\/revisions"}],"predecessor-version":[{"id":739,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-json\/wp\/v2\/pages\/364\/revisions\/739"}],"wp:attachment":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2020teami\/wp-json\/wp\/v2\/media?parent=364"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}