{"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/gradslam-dense-slam-meets-automatic","title":"gradSLAM: Automagically differentiable SLAM","arxiv_id":"1910.10672","date":"2019-10-23","proceeding":null,"authors":["Krishna Murthy Jatavallabhula","Soroush Saryazdi","Ganesh Iyer","Liam Paull"],"abstract":"Blending representation learning approaches with simultaneous localization and mapping (SLAM) systems is an open question, because of their highly modular and complex nature. Functionally, SLAM is an operation that transforms raw sensor inputs into a distribution over the state(s) of the robot and the environment. If this transformation (SLAM) were expressible as a differentiable function, we could leverage task-based error signals to learn representations that optimize task performance. However, several components of a typical dense SLAM system are non-differentiable. In this work, we propose gradSLAM, a methodology for posing SLAM systems as differentiable computational graphs, which unifies gradient-based learning and SLAM. We propose differentiable trust-region optimizers, surface measurement and fusion schemes, and raycasting, without sacrificing accuracy. This amalgamation of dense SLAM with computational graphs enables us to backprop all the way from 3D maps to 2D pixels, opening up new possibilities in gradient-based learning for SLAM. TL;DR: We leverage the power of automatic differentiation frameworks to make dense SLAM differentiable.","url_abs":"https://arxiv.org/abs/1910.10672v3","url_pdf":"https://arxiv.org/pdf/1910.10672v3.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":"gradslam-dense-slam-meets-automatic","repo_url":"https://github.com/gradslam/gradslam","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"open-question","task_name":"Open-Ended Question Answering"},{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"simultaneous-localization-and-mapping","task_name":"Simultaneous Localization and Mapping"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1910.10672","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1910.10672"}},"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/gradslam/gradslam","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":15},"by_repo_kind":{"official":{"samples":15,"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":0,"samples":[{"code_sha256_prefix":"29c10cfbb7184e26","entry":"channels_first","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/datasets/datautils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/datasets/datautils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"29c10cfbb7184e26"}},{"code_sha256_prefix":"c6d8460a4da0acc2","entry":"get_color_encoding","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/datasets/scannet.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/datasets/scannet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c6d8460a4da0acc2"}},{"code_sha256_prefix":"8870d81bfe38fa39","entry":"homogenize_points","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/geometry/geometryutils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/geometry/geometryutils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8870d81bfe38fa39"}},{"code_sha256_prefix":"8ef8cf89974066d5","entry":"normalize_image","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/datasets/datautils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/datasets/datautils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8ef8cf89974066d5"}},{"code_sha256_prefix":"b47dacbb1996cda4","entry":"nyu40_to_scannet20","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/datasets/scannet.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/datasets/scannet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b47dacbb1996cda4"}},{"code_sha256_prefix":"fd57d2ac49ad2b38","entry":"project_points","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/geometry/projutils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/geometry/projutils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fd57d2ac49ad2b38"}},{"code_sha256_prefix":"5f7fbf2e7bb81403","entry":"quaternion_to_axisangle","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/geometry/geometryutils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/geometry/geometryutils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5f7fbf2e7bb81403"}},{"code_sha256_prefix":"b5a5e7bfe6782e5a","entry":"read_file_list","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/datasets/tumutils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/datasets/tumutils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b5a5e7bfe6782e5a"}},{"code_sha256_prefix":"67565235ffc46e98","entry":"read_trajectory","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/datasets/tumutils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/datasets/tumutils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"67565235ffc46e98"}},{"code_sha256_prefix":"8cdf327652f8367f","entry":"scale_intrinsics","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/datasets/datautils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/datasets/datautils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8cdf327652f8367f"}},{"code_sha256_prefix":"45d6458b9a402428","entry":"se3_hat","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/geometry/se3utils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/geometry/se3utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"45d6458b9a402428"}},{"code_sha256_prefix":"3455cc51b877a383","entry":"so3_exp","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/geometry/se3utils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/geometry/se3utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3455cc51b877a383"}},{"code_sha256_prefix":"1f38eda405304bd8","entry":"so3_hat","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/geometry/se3utils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/geometry/se3utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1f38eda405304bd8"}},{"code_sha256_prefix":"0247696ff71a8038","entry":"transform44","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/datasets/tumutils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/datasets/tumutils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0247696ff71a8038"}},{"code_sha256_prefix":"9826525e377127bd","entry":"unhomogenize_points","repo":"gradslam/gradslam","repo_kind":"official","path":"gradslam/geometry/geometryutils.py","file_url":"https://github.com/gradslam/gradslam/blob/HEAD/gradslam/geometry/geometryutils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9826525e377127bd"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}