{"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/it-takes-two-learning-to-plan-for-human-robot","title":"It Takes Two: Learning to Plan for Human-Robot Cooperative Carrying","arxiv_id":"2209.12890","date":"2022-09-26","proceeding":null,"authors":["Eley Ng","Ziang Liu","Monroe Kennedy III"],"abstract":"Cooperative table-carrying is a complex task due to the continuous nature of the action and state-spaces, multimodality of strategies, and the need for instantaneous adaptation to other agents. In this work, we present a method for predicting realistic motion plans for cooperative human-robot teams on the task. Using a Variational Recurrent Neural Network (VRNN) to model the variation in the trajectory of a human-robot team across time, we are able to capture the distribution over the team's future states while leveraging information from interaction history. The key to our approach is leveraging human demonstration data to generate trajectories that synergize well with humans during test time in a receding horizon fashion. Comparison between a baseline, sampling-based planner RRT (Rapidly-exploring Random Trees) and the VRNN planner in centralized planning shows that the VRNN generates motion more similar to the distribution of human-human demonstrations than the RRT. Results in a human-in-the-loop user study show that the VRNN planner outperforms decentralized RRT on task-related metrics, and is significantly more likely to be perceived as human than the RRT planner. Finally, we demonstrate the VRNN planner on a real robot paired with a human teleoperating another robot.","url_abs":"https://arxiv.org/abs/2209.12890v2","url_pdf":"https://arxiv.org/pdf/2209.12890v2.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":"it-takes-two-learning-to-plan-for-human-robot","repo_url":"https://github.com/eleyng/table-carrying-ai","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"it-takes-two-learning-to-plan-for-human-robot","repo_url":"https://github.com/eleyng/cooperative_planner","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"two","task_name":"Vocal Bursts Valence Prediction"}],"methods":[{"method_slug":"test","method_name":"Test"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2209.12890","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2209.12890"}},"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/eleyng/table-carrying-ai","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/eleyng/cooperative_planner","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":13},"by_repo_kind":{"official":{"samples":13,"ran":0,"repositories":2}},"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":"037d07da4ca79032","entry":"calc_stats","repo":"eleyng/cooperative_planner","repo_kind":"official","path":"utils/stats.py","file_url":"https://github.com/eleyng/cooperative_planner/blob/HEAD/utils/stats.py","link_basis":"harvester_set","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":"037d07da4ca79032"}},{"code_sha256_prefix":"4994ba2de5da1d5f","entry":"calculate_fid","repo":"eleyng/cooperative_planner","repo_kind":"official","path":"utils/stats.py","file_url":"https://github.com/eleyng/cooperative_planner/blob/HEAD/utils/stats.py","link_basis":"harvester_set","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":"4994ba2de5da1d5f"}},{"code_sha256_prefix":"0168dd940e79bdef","entry":"calculate_frechet_distance","repo":"eleyng/cooperative_planner","repo_kind":"official","path":"utils/stats.py","file_url":"https://github.com/eleyng/cooperative_planner/blob/HEAD/utils/stats.py","link_basis":"harvester_set","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":"0168dd940e79bdef"}},{"code_sha256_prefix":"12fdd162d3a52743","entry":"consec_repeat_starts","repo":"eleyng/table-carrying-ai","repo_kind":"official","path":"cooperative_transport/gym_table/envs/utils.py","file_url":"https://github.com/eleyng/table-carrying-ai/blob/HEAD/cooperative_transport/gym_table/envs/utils.py","link_basis":"harvester_set","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":"12fdd162d3a52743"}},{"code_sha256_prefix":"5e747c8b5743d80b","entry":"euler_from_quaternion","repo":"eleyng/table-carrying-ai","repo_kind":"official","path":"libs/real_robot_utils.py","file_url":"https://github.com/eleyng/table-carrying-ai/blob/HEAD/libs/real_robot_utils.py","link_basis":"harvester_set","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":"5e747c8b5743d80b"}},{"code_sha256_prefix":"f985673c9758b37a","entry":"frange_cycle_linear","repo":"eleyng/cooperative_planner","repo_kind":"official","path":"utils/learning.py","file_url":"https://github.com/eleyng/cooperative_planner/blob/HEAD/utils/learning.py","link_basis":"harvester_set","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":"f985673c9758b37a"}},{"code_sha256_prefix":"96f99dd13b447c11","entry":"get_cmap","repo":"eleyng/cooperative_planner","repo_kind":"official","path":"utils/vis.py","file_url":"https://github.com/eleyng/cooperative_planner/blob/HEAD/utils/vis.py","link_basis":"harvester_set","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":"96f99dd13b447c11"}},{"code_sha256_prefix":"95635062a3a4b57a","entry":"get_idx_repeats_of_len_n","repo":"eleyng/table-carrying-ai","repo_kind":"official","path":"cooperative_transport/gym_table/envs/utils.py","file_url":"https://github.com/eleyng/table-carrying-ai/blob/HEAD/cooperative_transport/gym_table/envs/utils.py","link_basis":"harvester_set","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":"95635062a3a4b57a"}},{"code_sha256_prefix":"d14cce6d041bf661","entry":"gmm_loss","repo":"eleyng/cooperative_planner","repo_kind":"official","path":"utils/learning.py","file_url":"https://github.com/eleyng/cooperative_planner/blob/HEAD/utils/learning.py","link_basis":"harvester_set","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":"d14cce6d041bf661"}},{"code_sha256_prefix":"8228b6508b89d5aa","entry":"interaction_forces_reward","repo":"eleyng/table-carrying-ai","repo_kind":"official","path":"cooperative_transport/gym_table/envs/custom_rewards.py","file_url":"https://github.com/eleyng/table-carrying-ai/blob/HEAD/cooperative_transport/gym_table/envs/custom_rewards.py","link_basis":"harvester_set","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":"8228b6508b89d5aa"}},{"code_sha256_prefix":"a62a926cd953718c","entry":"load_cfg","repo":"eleyng/cooperative_planner","repo_kind":"official","path":"utils/vis.py","file_url":"https://github.com/eleyng/cooperative_planner/blob/HEAD/utils/vis.py","link_basis":"harvester_set","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":"a62a926cd953718c"}},{"code_sha256_prefix":"b84672293599a617","entry":"load_cfg","repo":"eleyng/table-carrying-ai","repo_kind":"official","path":"cooperative_transport/gym_table/envs/utils.py","file_url":"https://github.com/eleyng/table-carrying-ai/blob/HEAD/cooperative_transport/gym_table/envs/utils.py","link_basis":"harvester_set","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":"b84672293599a617"}},{"code_sha256_prefix":"7c0d126c0751adae","entry":"natural_sort_key","repo":"eleyng/table-carrying-ai","repo_kind":"official","path":"libs/real_robot_utils.py","file_url":"https://github.com/eleyng/table-carrying-ai/blob/HEAD/libs/real_robot_utils.py","link_basis":"harvester_set","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":"7c0d126c0751adae"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}