{"id":166,"date":"2026-04-03T20:36:06","date_gmt":"2026-04-04T01:36:06","guid":{"rendered":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/?page_id=166"},"modified":"2026-11-14T01:28:29","modified_gmt":"2026-11-14T06:28:29","slug":"navigation-sub-system","status":"publish","type":"page","link":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/system-implementation\/navigation-sub-system\/","title":{"rendered":"Navigation Sub-system"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Fall 2026 Updates<\/h3>\n\n\n\n<p><strong>Navigation Stack:<\/strong><\/p>\n\n\n\n<p>The navigation stack takes the Livox MID360 LiDAR and IMU into SLAM\/localization and terrain analysis. A route planner runs Dijkstra routing over a saved terrain graph and outputs carrot waypoints; a local planner produces a collision-free path, a path follower converts it to velocity, and a command mux arbitrates between teleoperation and navigation before commands reach the Unitree interface.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-SDR-s12.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1500\" height=\"844\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-SDR-s12.jpg\" alt=\"Navigation stack: SLAM and localization, route planning, local planning and path following.\" class=\"wp-image-316\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-SDR-s12.jpg 1500w, https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-SDR-s12-300x169.jpg 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-SDR-s12-768x432.jpg 768w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><\/a><figcaption class=\"wp-element-caption\"><strong>Fig:<\/strong> Navigation stack: SLAM and localization, route planning, local planning and path following.<\/figcaption><\/figure>\n\n\n\n<p><strong>Multi-Floor Mapping (Elevator-LIO):<\/strong><\/p>\n\n\n\n<p>Arise-SLAM could not map across floors because of IMU drift during the elevator ride, so it was replaced with Elevator-LIO for state estimation. Elevator-LIO maps across floors, but its activation condition for IMU correction is still simple and may miss the moment of entering the elevator.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-SDR-s10.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1500\" height=\"844\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-SDR-s10.jpg\" alt=\"Multi-floor mapping: Arise-SLAM drifts across floors, while Elevator-LIO maps across floors.\" class=\"wp-image-315\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-SDR-s10.jpg 1500w, https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-SDR-s10-300x169.jpg 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-SDR-s10-768x432.jpg 768w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><\/a><figcaption class=\"wp-element-caption\"><strong>Fig:<\/strong> Multi-floor mapping: Arise-SLAM drifts across floors, while Elevator-LIO maps across floors.<\/figcaption><\/figure>\n\n\n\n<p><strong>Relocalization:<\/strong><\/p>\n\n\n\n<p>Relocalization against the saved map was added using GICP (Generalized Iterative Closest Point). In testing, the robot successfully relocalized itself with a structure score of 0.97.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-PR10-s5.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1500\" height=\"844\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-PR10-s5.jpg\" alt=\"GICP relocalization against the saved map (structure score 0.97).\" class=\"wp-image-305\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-PR10-s5.jpg 1500w, https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-PR10-s5-300x169.jpg 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/11\/vr-PR10-s5-768x432.jpg 768w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><\/a><figcaption class=\"wp-element-caption\"><strong>Fig:<\/strong> GICP relocalization against the saved map (structure score 0.97).<\/figcaption><\/figure>\n\n\n\n<p><strong>Base Servoing Improvements:<\/strong><\/p>\n\n\n\n<p>Base servoing, a risk identified at the Critical Design Review, was improved by calibrating the IMU, removing lateral velocity, and switching to a non-holonomic planner. The robot now navigates to and from the elevator autonomously.<\/p>\n\n\n\n<p><em>Open issues:<\/em> the local planner sometimes produces poor locomotion plans, low locomotion precision can leave the button out of view, and a stiffer left ankle makes waypoints harder to track.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Spring 2026<\/h3>\n\n\n\n<p><strong>Base Visual Servoing: <\/strong><\/p>\n\n\n\n<p>The visual servoing pipeline moves the robot&#8217;s base to an approach pose in front of a detected button panel, closing the loop from perception to robot motion. A pose filtering node applies moving-average smoothing and outlier rejection to the raw tracked pose, and the core Position-Based Visual Servoing (PBVS) node computes an approach goal by retracting along the surface normal by a configurable distance. It then sends this goal to the local movement<br>module, which drives the robot to the target. The robot can detect a button panel, filter the noisy pose estimate, compute a stable approach position,<br>and drive toward it \u2014 all without manual waypoints.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1854\" height=\"935\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/04\/36e500329d4d499269dc35198107f619.png\" alt=\"\" class=\"wp-image-169\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/04\/36e500329d4d499269dc35198107f619.png 1854w, https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/04\/36e500329d4d499269dc35198107f619-300x151.png 300w, https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/04\/36e500329d4d499269dc35198107f619-768x387.png 768w, https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/04\/36e500329d4d499269dc35198107f619-1536x775.png 1536w\" sizes=\"auto, (max-width: 1854px) 100vw, 1854px\" \/><\/figure>\n\n\n\n<p><strong>Fig:  Robot Navigating to a Shelf<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"301\" height=\"361\" src=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/04\/image-9.png\" alt=\"\" class=\"wp-image-209\" title=\"Untitled Diagram.drawio (1).png\" srcset=\"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/04\/image-9.png 301w, https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-content\/uploads\/sites\/92\/2026\/04\/image-9-250x300.png 250w\" sizes=\"auto, (max-width: 301px) 100vw, 301px\" \/><\/figure>\n\n\n\n<p><strong>Fig: Visual servo base pipeline.<\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fall 2026 Updates Navigation Stack: The navigation stack takes the Livox MID360 LiDAR and IMU into SLAM\/localization and terrain analysis. A route planner runs Dijkstra routing over a saved terrain graph and outputs carrot waypoints; a local planner produces a collision-free path, a path follower converts it to velocity, and a command mux arbitrates between [&hellip;]<\/p>\n","protected":false},"author":434,"featured_media":0,"parent":93,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-166","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-json\/wp\/v2\/pages\/166","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-json\/wp\/v2\/users\/434"}],"replies":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-json\/wp\/v2\/comments?post=166"}],"version-history":[{"count":5,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-json\/wp\/v2\/pages\/166\/revisions"}],"predecessor-version":[{"id":353,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-json\/wp\/v2\/pages\/166\/revisions\/353"}],"up":[{"embeddable":true,"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-json\/wp\/v2\/pages\/93"}],"wp:attachment":[{"href":"https:\/\/mrsdprojects.ri.cmu.edu\/2026teama\/wp-json\/wp\/v2\/media?parent=166"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}