{"id":650,"date":"2026-04-14T18:53:51","date_gmt":"2026-04-14T18:53:51","guid":{"rendered":"https:\/\/projects.etc.cmu.edu\/soulos\/?page_id=650"},"modified":"2026-04-14T18:59:52","modified_gmt":"2026-04-14T18:59:52","slug":"week-12","status":"publish","type":"page","link":"https:\/\/projects.etc.cmu.edu\/soulos\/week-12\/","title":{"rendered":"Week 12"},"content":{"rendered":"\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><strong>Digital Twin Integration &amp; Immersion Polish<\/strong><\/p>\n\n\n\n<p style=\"font-style:normal;font-weight:500\">This week marked a major technical milestone for our project. We successfully mapped the updated character model onto the robot\u2019s digital twin. Using the digital twin\u2019s skeletal structure as the foundation, we adjusted and re-rigged the model to better align with the robot\u2019s actual joint hierarchy and movement constraints. This significantly improved the consistency between the virtual avatar and the physical robot, reducing visual mismatch and enhancing embodiment. The alignment process required careful iteration to ensure that proportions, joint rotations, and deformation behaved naturally within the constraints of the robot\u2019s real-world mechanics.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"764\" height=\"798\" src=\"https:\/\/projects.etc.cmu.edu\/soulos\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-14-142833.png\" alt=\"\" class=\"wp-image-654\" style=\"box-shadow:6px 6px 9px rgba(0, 0, 0, 0.2)\" srcset=\"https:\/\/projects.etc.cmu.edu\/soulos\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-14-142833.png 764w, https:\/\/projects.etc.cmu.edu\/soulos\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-14-142833-287x300.png 287w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<p style=\"font-style:normal;font-weight:500\">Beyond technical alignment, we focused heavily on immersion. We added background music and environmental sound effects to strengthen the atmosphere of the spaceship setting. Subtle mechanical hums, spatial audio cues, and ambient tones now support the emotional tone of each gameplay moment, making the experience feel more cohesive and alive.<\/p>\n\n\n\n<p style=\"font-style:normal;font-weight:500\">Additionally, we introduced voice-based inner monologue cues that trigger at key moments. Instead of explicit instruction, these subtle narrative hints guide players when they appear stuck or uncertain. This approach allows us to maintain immersion while gently supporting player progression without breaking the experience.<\/p>\n\n\n\n<p style=\"font-style:normal;font-weight:500\">Overall, Week 13 represented a shift from core system development to refinement and experiential polish. With the avatar mapping stabilized and audio layers integrated, the project is beginning to feel like a unified and intentional mixed-reality experience rather than separate technical components.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><strong>Add &#8220;SIUU&#8221;!!<\/strong><\/p>\n\n\n\n<p>ASAP Sim-to-Real Deployment<\/p>\n\n\n\n<p>Repo: LeCAR-Lab\/ASAP \u00b7 Branch: sim2real\/ \u00b7 Env: asap_deploy (conda, Python 3.10) Goal: Get the G1 29-DoF locomotion + SIUU mimic policy running on the physical robot. <\/p>\n\n\n\n<p>Sim2Sim first: Debugged MuJoCo viewer key sequence. Robot must be lowered with 8 first, then 9 to release the elastic band (at 3m height), then ] to activate the locomotion policy. Pressing i (init state) softens joints \u2014 must be avoided. Fixed DDS interface mismatch: config\/g1_29dof_hist.yaml had INTERFACE: enp0s31f6 (real-robot NIC) instead of lo for sim2sim. Changed to lo \u2014 policy control began working. SIUU mimic motion confirmed: ] \u2192 ; \u2192 [. <\/p>\n\n\n\n<p>Real robot deployment: Switched INTERFACE back to enp0s31f6 (workstation at 192.168.123.163, robot PC2 at 192.168.123.164). Hardware blocker resolved: The G1 EDU+ ships with a physical waist fastener (2\u00d7 M5 screws + 2 fixing parts) that locks 2 of 3 waist joints \u2192 limits to 23 DoF, breaking the 29-DoF policy. Physically removed with Allen wrench. Disabled the waist motor lock in the Unitree Explore App (Settings \u2192 Robot), connecting phone to the robot&#8217;s own WiFi AP. Re-entered low-level mode: L2+R2 \u2192 L2+A \u2192 L2+B. Robot stood and responded to policy commands. <\/p>\n\n\n\n<p>Policy files used: Loco: .\/models\/dec_loco\/20250109_231507-&#8230;\/model_6600.onnx Mimic: .\/models\/mimic\/ Script: rl_policy\/deepmimic_dec_loco_height.py Config: config\/g1_29dof_hist.yaml <\/p>\n\n\n\n<p style=\"font-style:normal;font-weight:500\">SIUU on the physical G1 confirmed working.<\/p>\n<\/div>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-group has-global-padding is-layout-constrained wp-block-group-is-layout-constrained\">\n<figure class=\"wp-block-video\"><video height=\"480\" style=\"aspect-ratio: 854 \/ 480;\" width=\"854\" autoplay controls loop muted src=\"https:\/\/projects.etc.cmu.edu\/soulos\/wp-content\/uploads\/2026\/04\/IMG_7550.mov\" playsinline><\/video><\/figure>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Digital Twin Integration &amp; Immersion Polish This week marked a major technical milestone for our project. We successfully mapped the updated character model onto the robot\u2019s digital twin. Using the digital twin\u2019s skeletal structure as the foundation, we adjusted and re-rigged the model to better align with the robot\u2019s actual joint hierarchy and movement constraints. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-650","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/projects.etc.cmu.edu\/soulos\/wp-json\/wp\/v2\/pages\/650","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projects.etc.cmu.edu\/soulos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/projects.etc.cmu.edu\/soulos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/soulos\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/projects.etc.cmu.edu\/soulos\/wp-json\/wp\/v2\/comments?post=650"}],"version-history":[{"count":2,"href":"https:\/\/projects.etc.cmu.edu\/soulos\/wp-json\/wp\/v2\/pages\/650\/revisions"}],"predecessor-version":[{"id":659,"href":"https:\/\/projects.etc.cmu.edu\/soulos\/wp-json\/wp\/v2\/pages\/650\/revisions\/659"}],"wp:attachment":[{"href":"https:\/\/projects.etc.cmu.edu\/soulos\/wp-json\/wp\/v2\/media?parent=650"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}