{"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/transporter-networks-rearranging-the-visual","title":"Transporter Networks: Rearranging the Visual World for Robotic Manipulation","arxiv_id":"2010.14406","date":"2020-10-27","proceeding":null,"authors":["Andy Zeng","Pete Florence","Jonathan Tompson","Stefan Welker","Jonathan Chien","Maria Attarian","Travis Armstrong","Ivan Krasin","Dan Duong","Ayzaan Wahid","Vikas Sindhwani","Johnny Lee"],"abstract":"Robotic manipulation can be formulated as inducing a sequence of spatial displacements: where the space being moved can encompass an object, part of an object, or end effector. In this work, we propose the Transporter Network, a simple model architecture that rearranges deep features to infer spatial displacements from visual input - which can parameterize robot actions. It makes no assumptions of objectness (e.g. canonical poses, models, or keypoints), it exploits spatial symmetries, and is orders of magnitude more sample efficient than our benchmarked alternatives in learning vision-based manipulation tasks: from stacking a pyramid of blocks, to assembling kits with unseen objects; from manipulating deformable ropes, to pushing piles of small objects with closed-loop feedback. Our method can represent complex multi-modal policy distributions and generalizes to multi-step sequential tasks, as well as 6DoF pick-and-place. Experiments on 10 simulated tasks show that it learns faster and generalizes better than a variety of end-to-end baselines, including policies that use ground-truth object poses. We validate our methods with hardware in the real world. Experiment videos and code are available at https://transporternets.github.io","url_abs":"https://arxiv.org/abs/2010.14406v3","url_pdf":"https://arxiv.org/pdf/2010.14406v3.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":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"transporter-networks-rearranging-the-visual","repo_url":"https://github.com/google-research/ravens","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"transporter-networks-rearranging-the-visual","repo_url":"https://github.com/cliport/cliport","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"transporter-networks-rearranging-the-visual","repo_url":"https://github.com/nimRobotics/google-research","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2010.14406","atlas_url":"https://app.syntology.ai/?focus=2010.14406","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2010.14406"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/cliport/cliport","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/google-research/ravens","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/nimRobotics/google-research","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":2,"unverified":23},"by_repo_kind":{"official":{"samples":7,"ran":0,"repositories":1},"listed":{"samples":18,"ran":2,"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":"00864d4099dc6376","entry":"create_bspline_basis","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/traffic/point_process_model.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/traffic/point_process_model.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"00864d4099dc6376"}},{"code_sha256_prefix":"e5510d0eeaba9cb9","entry":"load_variable","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/traffic/file_util.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/traffic/file_util.py","link_basis":"harvester_set","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e5510d0eeaba9cb9"}},{"code_sha256_prefix":"9a0b6e051b79611e","entry":"ResNet43_8s","repo":"google-research/ravens","repo_kind":"official","path":"ravens/models/resnet.py","file_url":"https://github.com/google-research/ravens/blob/HEAD/ravens/models/resnet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9a0b6e051b79611e"}},{"code_sha256_prefix":"97547251dd8bf1ea","entry":"call_max_payoff","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/payoffs.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/payoffs.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"97547251dd8bf1ea"}},{"code_sha256_prefix":"af5fe347cb6b1c21","entry":"call_payoff","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/payoffs.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/payoffs.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"af5fe347cb6b1c21"}},{"code_sha256_prefix":"c0445f9a6b1dee13","entry":"compute_spatial_soft_argmax","repo":"google-research/ravens","repo_kind":"official","path":"ravens/models/conv_mlp.py","file_url":"https://github.com/google-research/ravens/blob/HEAD/ravens/models/conv_mlp.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c0445f9a6b1dee13"}},{"code_sha256_prefix":"a9fb72a7d344bddd","entry":"conv_block","repo":"google-research/ravens","repo_kind":"official","path":"ravens/models/resnet.py","file_url":"https://github.com/google-research/ravens/blob/HEAD/ravens/models/resnet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a9fb72a7d344bddd"}},{"code_sha256_prefix":"c4e259e6f90e1040","entry":"gaussian_cdf","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/util.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c4e259e6f90e1040"}},{"code_sha256_prefix":"06faedac0b5a7f7b","entry":"half_clt_conf_interval","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/util.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"06faedac0b5a7f7b"}},{"code_sha256_prefix":"b72e0f9ec4b4e65f","entry":"hedge_derivative","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/controllers.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/controllers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b72e0f9ec4b4e65f"}},{"code_sha256_prefix":"cc2b7edf2f6f80c7","entry":"hist_log_euler_step","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/run_replication_experiment.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/run_replication_experiment.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cc2b7edf2f6f80c7"}},{"code_sha256_prefix":"d1d40a2bd9b4ceac","entry":"identity_block","repo":"google-research/ravens","repo_kind":"official","path":"ravens/models/resnet.py","file_url":"https://github.com/google-research/ravens/blob/HEAD/ravens/models/resnet.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d1d40a2bd9b4ceac"}},{"code_sha256_prefix":"b4b4f1f2f73b76ca","entry":"multistep_runner_tf_while","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/monte_carlo_manager.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/monte_carlo_manager.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b4b4f1f2f73b76ca"}},{"code_sha256_prefix":"aeb9ddd5a60dd753","entry":"multistep_runner_unrolled_tf","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/monte_carlo_manager.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/monte_carlo_manager.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"aeb9ddd5a60dd753"}},{"code_sha256_prefix":"817afba414cf8c60","entry":"multivar_gaussian_pdf","repo":"google-research/ravens","repo_kind":"official","path":"ravens/models/mdn_utils.py","file_url":"https://github.com/google-research/ravens/blob/HEAD/ravens/models/mdn_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"817afba414cf8c60"}},{"code_sha256_prefix":"18ed7c75e6ad4c0c","entry":"non_callable_price_mc","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/monte_carlo_manager.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/monte_carlo_manager.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"18ed7c75e6ad4c0c"}},{"code_sha256_prefix":"97e8c2493a308466","entry":"pick_max_mean","repo":"google-research/ravens","repo_kind":"official","path":"ravens/models/mdn_utils.py","file_url":"https://github.com/google-research/ravens/blob/HEAD/ravens/models/mdn_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"97e8c2493a308466"}},{"code_sha256_prefix":"934448b79596475e","entry":"price_derivative","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/controllers.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/controllers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"934448b79596475e"}},{"code_sha256_prefix":"c3a241a17bb8b5ec","entry":"put_payoff","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/payoffs.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/payoffs.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c3a241a17bb8b5ec"}},{"code_sha256_prefix":"9834d99dd9e09ef2","entry":"random_antithetic_uniform","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/dynamics.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/dynamics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"9834d99dd9e09ef2"}},{"code_sha256_prefix":"4ece14378ed96542","entry":"random_normal","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/dynamics.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/dynamics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4ece14378ed96542"}},{"code_sha256_prefix":"07c5675970cb9ee8","entry":"random_uniform","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/dynamics.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/dynamics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"07c5675970cb9ee8"}},{"code_sha256_prefix":"4aa4f490fd8f1d5a","entry":"sample_from_pdf","repo":"google-research/ravens","repo_kind":"official","path":"ravens/models/mdn_utils.py","file_url":"https://github.com/google-research/ravens/blob/HEAD/ravens/models/mdn_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"4aa4f490fd8f1d5a"}},{"code_sha256_prefix":"3f5e10b1b3013170","entry":"stddev_est","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/util.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"3f5e10b1b3013170"}},{"code_sha256_prefix":"813daf1432469b53","entry":"var_and_cvar","repo":"nimRobotics/google-research","repo_kind":"listed","path":"simulation_research/tf_risk/risk_metrics.py","file_url":"https://github.com/nimRobotics/google-research/blob/HEAD/simulation_research/tf_risk/risk_metrics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"813daf1432469b53"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}