{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/robopepp-vision-based-robot-pose-and-joint","title":"RoboPEPP: Vision-Based Robot Pose and Joint Angle Estimation through Embedding Predictive Pre-Training","arxiv_id":"2411.17662","date":"2024-11-26","proceeding":"CVPR 2025 1","authors":["Raktim Gautam Goswami","Prashanth Krishnamurthy","Yann Lecun","Farshad Khorrami"],"abstract":"Vision-based pose estimation of articulated robots with unknown joint angles has applications in collaborative robotics and human-robot interaction tasks. Current frameworks use neural network encoders to extract image features and downstream layers to predict joint angles and robot pose. While images of robots inherently contain rich information about the robot's physical structures, existing methods often fail to leverage it fully; therefore, limiting performance under occlusions and truncations. To address this, we introduce RoboPEPP, a method that fuses information about the robot's physical model into the encoder using a masking-based self-supervised embedding-predictive architecture. Specifically, we mask the robot's joints and pre-train an encoder-predictor model to infer the joints' embeddings from surrounding unmasked regions, enhancing the encoder's understanding of the robot's physical model. The pre-trained encoder-predictor pair, along with joint angle and keypoint prediction networks, is then fine-tuned for pose and joint angle estimation. Random masking of input during fine-tuning and keypoint filtering during evaluation further improves robustness. Our method, evaluated on several datasets, achieves the best results in robot pose and joint angle estimation while being the least sensitive to occlusions and requiring the lowest execution time.","url_abs":"https://arxiv.org/abs/2411.17662v2","url_pdf":"https://arxiv.org/pdf/2411.17662v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"robopepp-vision-based-robot-pose-and-joint","repo_url":"https://github.com/raktimgg/robopepp","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"pose-estimation","task_name":"Pose Estimation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2411.17662","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2411.17662"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/raktimgg/robopepp","reach":{"status":"ok"}}],"summary":{"unverified":13},"by_repo_kind":{"official":{"samples":13,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":13,"samples":[{"code_sha256_prefix":"00c47b133f598882","entry":"batch_project","repo":"raktimgg/robopepp","repo_kind":"official","path":"datasets/BPnP.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/datasets/BPnP.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"00c47b133f598882"}},{"code_sha256_prefix":"73682ee452e3f48f","entry":"batch_transform_3d","repo":"raktimgg/robopepp","repo_kind":"official","path":"datasets/BPnP.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/datasets/BPnP.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"73682ee452e3f48f"}},{"code_sha256_prefix":"3c8d91d5c2f17279","entry":"create_belief_map","repo":"raktimgg/robopepp","repo_kind":"official","path":"datasets/image_proc.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/datasets/image_proc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3c8d91d5c2f17279"}},{"code_sha256_prefix":"0fa785852e0b6520","entry":"get_coefs","repo":"raktimgg/robopepp","repo_kind":"official","path":"datasets/BPnP.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/datasets/BPnP.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0fa785852e0b6520"}},{"code_sha256_prefix":"984262d21995ebe7","entry":"get_keypoints_from_beliefmap","repo":"raktimgg/robopepp","repo_kind":"official","path":"datasets/image_proc.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/datasets/image_proc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"984262d21995ebe7"}},{"code_sha256_prefix":"be7adedaf5f920b8","entry":"get_soft_keypoints_from_beliefmap","repo":"raktimgg/robopepp","repo_kind":"official","path":"datasets/image_proc.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/datasets/image_proc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"be7adedaf5f920b8"}},{"code_sha256_prefix":"e63df6a08e50795f","entry":"make_dream","repo":"raktimgg/robopepp","repo_kind":"official","path":"datasets/dream.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/datasets/dream.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e63df6a08e50795f"}},{"code_sha256_prefix":"73575c3e37c42b41","entry":"occlusion_aug","repo":"raktimgg/robopepp","repo_kind":"official","path":"datasets/augmentations.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/datasets/augmentations.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"73575c3e37c42b41"}},{"code_sha256_prefix":"328b2437938837a7","entry":"render_single_robot_color","repo":"raktimgg/robopepp","repo_kind":"official","path":"models/mesh_renderer.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/models/mesh_renderer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"328b2437938837a7"}},{"code_sha256_prefix":"7a54d4b7b209b516","entry":"render_single_robot_mask","repo":"raktimgg/robopepp","repo_kind":"official","path":"models/mesh_renderer.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/models/mesh_renderer.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7a54d4b7b209b516"}},{"code_sha256_prefix":"f87d6ee81db8f377","entry":"scale_gradients_hook","repo":"raktimgg/robopepp","repo_kind":"official","path":"train_s2r.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/train_s2r.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f87d6ee81db8f377"}},{"code_sha256_prefix":"67f033e7853eaca4","entry":"to_pil","repo":"raktimgg/robopepp","repo_kind":"official","path":"datasets/augmentations.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/datasets/augmentations.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"67f033e7853eaca4"}},{"code_sha256_prefix":"825fa64d2cb85ca4","entry":"to_torch_uint8","repo":"raktimgg/robopepp","repo_kind":"official","path":"datasets/augmentations.py","file_url":"https://github.com/raktimgg/robopepp/blob/HEAD/datasets/augmentations.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"825fa64d2cb85ca4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}