{"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/safety-critical-model-predictive-control-with","title":"Safety-Critical Model Predictive Control with Discrete-Time Control Barrier Function","arxiv_id":"2007.11718","date":"2020-07-22","proceeding":null,"authors":["Jun Zeng","Bike Zhang","Koushil Sreenath"],"abstract":"The optimal performance of robotic systems is usually achieved near the limit of state and input bounds. Model predictive control (MPC) is a prevalent strategy to handle these operational constraints, however, safety still remains an open challenge for MPC as it needs to guarantee that the system stays within an invariant set. In order to obtain safe optimal performance in the context of set invariance, we present a safety-critical model predictive control strategy utilizing discrete-time control barrier functions (CBFs), which guarantees system safety and accomplishes optimal performance via model predictive control. We analyze the stability and the feasibility properties of our control design. We verify the properties of our method on a 2D double integrator model for obstacle avoidance. We also validate the algorithm numerically using a competitive car racing example, where the ego car is able to overtake other racing cars.","url_abs":"https://arxiv.org/abs/2007.11718v3","url_pdf":"https://arxiv.org/pdf/2007.11718v3.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":"safety-critical-model-predictive-control-with","repo_url":"https://github.com/HybridRobotics/MPC-CBF","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"safety-critical-model-predictive-control-with","repo_url":"https://github.com/hybridrobotics/car-racing","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"car-racing","task_name":"Car Racing"},{"task_slug":"model-predictive-control","task_name":"Model Predictive Control"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2007.11718","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2007.11718"}},"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/hybridrobotics/car-racing","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/HybridRobotics/MPC-CBF","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":15},"by_repo_kind":{"listed":{"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":"9a70375264b211c3","entry":"compute_cost","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/control/lmpc_helper.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/control/lmpc_helper.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":"9a70375264b211c3"}},{"code_sha256_prefix":"68e9c59f7f55b503","entry":"compute_index","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/control/lmpc_helper.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/control/lmpc_helper.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":"68e9c59f7f55b503"}},{"code_sha256_prefix":"bc24854144d3bf14","entry":"ego_agent_overlap_checker","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/planning/planner_helper.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/planning/planner_helper.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":"bc24854144d3bf14"}},{"code_sha256_prefix":"536c1618e2fa4c1d","entry":"get_agent_range","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/planning/planner_helper.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/planning/planner_helper.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":"536c1618e2fa4c1d"}},{"code_sha256_prefix":"fee9029a83ea8862","entry":"get_bezier_control_points","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/planning/planner_helper.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/planning/planner_helper.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":"fee9029a83ea8862"}},{"code_sha256_prefix":"6c4f235bb6df72d7","entry":"get_cost_derivation","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/control/ilqr_helper.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/control/ilqr_helper.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":"6c4f235bb6df72d7"}},{"code_sha256_prefix":"5b17e602cb86206c","entry":"get_global_position","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/utils/racing_env.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/utils/racing_env.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":"5b17e602cb86206c"}},{"code_sha256_prefix":"a619d00ff3635f98","entry":"get_local_position","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/utils/racing_env.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/utils/racing_env.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":"a619d00ff3635f98"}},{"code_sha256_prefix":"e0acd10d72c27bd5","entry":"get_orientation","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/utils/racing_env.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/utils/racing_env.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":"e0acd10d72c27bd5"}},{"code_sha256_prefix":"26dea725f8e95762","entry":"get_udata","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/system/system_identification.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/system/system_identification.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":"26dea725f8e95762"}},{"code_sha256_prefix":"2a3ad68ace23d315","entry":"linear_regression","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/system/system_identification.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/system/system_identification.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":"2a3ad68ace23d315"}},{"code_sha256_prefix":"efb1f8e9bb437359","entry":"lqr","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/control/control.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/control/control.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":"efb1f8e9bb437359"}},{"code_sha256_prefix":"46cb55571f7b0e54","entry":"pid","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/control/control.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/control/control.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":"46cb55571f7b0e54"}},{"code_sha256_prefix":"99d4743cb83798b6","entry":"repelling_cost_function","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/control/ilqr_helper.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/control/ilqr_helper.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":"99d4743cb83798b6"}},{"code_sha256_prefix":"e98907b0a8ef0600","entry":"vehicle_dynamics","repo":"hybridrobotics/car-racing","repo_kind":"listed","path":"car_racing/system/vehicle_dynamics.py","file_url":"https://github.com/hybridrobotics/car-racing/blob/HEAD/car_racing/system/vehicle_dynamics.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":"e98907b0a8ef0600"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}