{"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/covo-mpc-theoretical-analysis-of-sampling","title":"CoVO-MPC: Theoretical Analysis of Sampling-based MPC and Optimal Covariance Design","arxiv_id":"2401.07369","date":"2024-01-14","proceeding":null,"authors":["Zeji Yi","Chaoyi Pan","Guanqi He","Guannan Qu","Guanya Shi"],"abstract":"Sampling-based Model Predictive Control (MPC) has been a practical and effective approach in many domains, notably model-based reinforcement learning, thanks to its flexibility and parallelizability. Despite its appealing empirical performance, the theoretical understanding, particularly in terms of convergence analysis and hyperparameter tuning, remains absent. In this paper, we characterize the convergence property of a widely used sampling-based MPC method, Model Predictive Path Integral Control (MPPI). We show that MPPI enjoys at least linear convergence rates when the optimization is quadratic, which covers time-varying LQR systems. We then extend to more general nonlinear systems. Our theoretical analysis directly leads to a novel sampling-based MPC algorithm, CoVariance-Optimal MPC (CoVo-MPC) that optimally schedules the sampling covariance to optimize the convergence rate. Empirically, CoVo-MPC significantly outperforms standard MPPI by 43-54% in both simulations and real-world quadrotor agile control tasks. Videos and Appendices are available at \\url{https://lecar-lab.github.io/CoVO-MPC/}.","url_abs":"https://arxiv.org/abs/2401.07369v1","url_pdf":"https://arxiv.org/pdf/2401.07369v1.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":"covo-mpc-theoretical-analysis-of-sampling","repo_url":"https://github.com/LeCAR-Lab/CoVO-MPC","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"model-predictive-control","task_name":"Model Predictive Control"},{"task_slug":"model-based-reinforcement-learning","task_name":"Model-based Reinforcement Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2401.07369","atlas_url":"https://app.syntology.ai/?focus=2401.07369","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2401.07369"}},"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/LeCAR-Lab/CoVO-MPC","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran":6},"by_repo_kind":{"official":{"samples":6,"ran":6,"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":"74287e2a6f6b1fb0","entry":"angle_normalize","repo":"LeCAR-Lab/CoVO-MPC","repo_kind":"official","path":"quadjax/dynamics/utils.py","file_url":"https://github.com/LeCAR-Lab/CoVO-MPC/blob/HEAD/quadjax/dynamics/utils.py","link_basis":"first_harvest_node","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":"74287e2a6f6b1fb0"}},{"code_sha256_prefix":"5de272920f132dc9","entry":"conjugate_quat","repo":"LeCAR-Lab/CoVO-MPC","repo_kind":"official","path":"quadjax/dynamics/geom.py","file_url":"https://github.com/LeCAR-Lab/CoVO-MPC/blob/HEAD/quadjax/dynamics/geom.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"5de272920f132dc9"}},{"code_sha256_prefix":"6a91781078baf7b1","entry":"default_array","repo":"LeCAR-Lab/CoVO-MPC","repo_kind":"official","path":"quadjax/dynamics/dataclass.py","file_url":"https://github.com/LeCAR-Lab/CoVO-MPC/blob/HEAD/quadjax/dynamics/dataclass.py","link_basis":"first_harvest_node","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":"6a91781078baf7b1"}},{"code_sha256_prefix":"422262ec09a7963a","entry":"get_hit_penalty","repo":"LeCAR-Lab/CoVO-MPC","repo_kind":"official","path":"quadjax/dynamics/utils.py","file_url":"https://github.com/LeCAR-Lab/CoVO-MPC/blob/HEAD/quadjax/dynamics/utils.py","link_basis":"first_harvest_node","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":"422262ec09a7963a"}},{"code_sha256_prefix":"2f4627d1fad2252b","entry":"integrate_quat","repo":"LeCAR-Lab/CoVO-MPC","repo_kind":"official","path":"quadjax/dynamics/geom.py","file_url":"https://github.com/LeCAR-Lab/CoVO-MPC/blob/HEAD/quadjax/dynamics/geom.py","link_basis":"first_harvest_node","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":"2f4627d1fad2252b"}},{"code_sha256_prefix":"702786920ee77ab4","entry":"multiple_quat","repo":"LeCAR-Lab/CoVO-MPC","repo_kind":"official","path":"quadjax/dynamics/geom.py","file_url":"https://github.com/LeCAR-Lab/CoVO-MPC/blob/HEAD/quadjax/dynamics/geom.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"702786920ee77ab4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}