Code Generation and Conic Constraints for Model-Predictive Control on Microcontrollers with Conic-TinyMPC Article Swipe
YOU?
·
· 2024
· Open Access
·
· DOI: https://doi.org/10.48550/arxiv.2403.18149
Model-predictive control (MPC) is a powerful framework for controlling dynamic systems under constraints, but it remains challenging to deploy on resource-constrained platforms, especially for problems involving conic constraints. To address this, we extend recent work developing fast, structure-exploiting, cached ADMM solvers for embedded applications, to provide support for second-order cones, as well as C++ code generation from Python, MATLAB, and Julia for easy deployment. Microcontroller benchmarks show that our solver provides up to a two-order-of-magnitude speedup, ranging from 10.6x to 142.7x, over state-of-the-art embedded solvers on QP and SOCP problems, and enables us to fit order-of-magnitude larger problems in memory. We validate our solver's deployed performance through simulation and hardware experiments, including conically-constrained trajectory tracking on a 27g Crazyflie quadrotor. To get started with Conic-TinyMPC, visit our documentation, examples, and the open-source codebase at https://tinympc.org.
Related Topics
- Type
- preprint
- Language
- en
- Landing Page
- http://arxiv.org/abs/2403.18149
- https://arxiv.org/pdf/2403.18149
- OA Status
- green
- Cited By
- 1
- Related Works
- 10
- OpenAlex ID
- https://openalex.org/W4393299932
Raw OpenAlex JSON
- OpenAlex ID
-
https://openalex.org/W4393299932Canonical identifier for this work in OpenAlex
- DOI
-
https://doi.org/10.48550/arxiv.2403.18149Digital Object Identifier
- Title
-
Code Generation and Conic Constraints for Model-Predictive Control on Microcontrollers with Conic-TinyMPCWork title
- Type
-
preprintOpenAlex work type
- Language
-
enPrimary language
- Publication year
-
2024Year of publication
- Publication date
-
2024-03-26Full publication date if available
- Authors
-
Sam Schoedel, Minh‐Khai Nguyen, Elakhya Nedumaran, Brian Plancher, Zachary ManchesterList of authors in order
- Landing page
-
https://arxiv.org/abs/2403.18149Publisher landing page
- PDF URL
-
https://arxiv.org/pdf/2403.18149Direct link to full text PDF
- Open access
-
YesWhether a free full text is available
- OA status
-
greenOpen access status per OpenAlex
- OA URL
-
https://arxiv.org/pdf/2403.18149Direct OA link when available
- Concepts
-
Microcontroller, Code (set theory), Conic section, Computer science, Control (management), Programming language, Model predictive control, Embedded system, Mathematics, Artificial intelligence, Set (abstract data type), GeometryTop concepts (fields/topics) attached by OpenAlex
- Cited by
-
1Total citation count in OpenAlex
- Citations by year (recent)
-
2024: 1Per-year citation counts (last 5 years)
- Related works (count)
-
10Other works algorithmically related by OpenAlex
Full payload
| id | https://openalex.org/W4393299932 |
|---|---|
| doi | https://doi.org/10.48550/arxiv.2403.18149 |
| ids.doi | https://doi.org/10.48550/arxiv.2403.18149 |
| ids.openalex | https://openalex.org/W4393299932 |
| fwci | |
| type | preprint |
| title | Code Generation and Conic Constraints for Model-Predictive Control on Microcontrollers with Conic-TinyMPC |
| biblio.issue | |
| biblio.volume | |
| biblio.last_page | |
| biblio.first_page | |
| topics[0].id | https://openalex.org/T10791 |
| topics[0].field.id | https://openalex.org/fields/22 |
| topics[0].field.display_name | Engineering |
| topics[0].score | 0.9976000189781189 |
| topics[0].domain.id | https://openalex.org/domains/3 |
| topics[0].domain.display_name | Physical Sciences |
| topics[0].subfield.id | https://openalex.org/subfields/2207 |
| topics[0].subfield.display_name | Control and Systems Engineering |
| topics[0].display_name | Advanced Control Systems Optimization |
| topics[1].id | https://openalex.org/T12810 |
| topics[1].field.id | https://openalex.org/fields/22 |
| topics[1].field.display_name | Engineering |
| topics[1].score | 0.9747999906539917 |
| topics[1].domain.id | https://openalex.org/domains/3 |
| topics[1].domain.display_name | Physical Sciences |
| topics[1].subfield.id | https://openalex.org/subfields/2207 |
| topics[1].subfield.display_name | Control and Systems Engineering |
| topics[1].display_name | Real-time simulation and control systems |
| topics[2].id | https://openalex.org/T11081 |
| topics[2].field.id | https://openalex.org/fields/22 |
| topics[2].field.display_name | Engineering |
| topics[2].score | 0.9488999843597412 |
| topics[2].domain.id | https://openalex.org/domains/3 |
| topics[2].domain.display_name | Physical Sciences |
| topics[2].subfield.id | https://openalex.org/subfields/2207 |
| topics[2].subfield.display_name | Control and Systems Engineering |
| topics[2].display_name | Advanced Control Systems Design |
| is_xpac | False |
| apc_list | |
| apc_paid | |
| concepts[0].id | https://openalex.org/C173018170 |
| concepts[0].level | 2 |
| concepts[0].score | 0.7697145938873291 |
| concepts[0].wikidata | https://www.wikidata.org/wiki/Q165678 |
| concepts[0].display_name | Microcontroller |
| concepts[1].id | https://openalex.org/C2776760102 |
| concepts[1].level | 3 |
| concepts[1].score | 0.687170147895813 |
| concepts[1].wikidata | https://www.wikidata.org/wiki/Q5139990 |
| concepts[1].display_name | Code (set theory) |
| concepts[2].id | https://openalex.org/C108598597 |
| concepts[2].level | 2 |
| concepts[2].score | 0.56265789270401 |
| concepts[2].wikidata | https://www.wikidata.org/wiki/Q124255 |
| concepts[2].display_name | Conic section |
| concepts[3].id | https://openalex.org/C41008148 |
| concepts[3].level | 0 |
| concepts[3].score | 0.5198433995246887 |
| concepts[3].wikidata | https://www.wikidata.org/wiki/Q21198 |
| concepts[3].display_name | Computer science |
| concepts[4].id | https://openalex.org/C2775924081 |
| concepts[4].level | 2 |
| concepts[4].score | 0.4742557108402252 |
| concepts[4].wikidata | https://www.wikidata.org/wiki/Q55608371 |
| concepts[4].display_name | Control (management) |
| concepts[5].id | https://openalex.org/C199360897 |
| concepts[5].level | 1 |
| concepts[5].score | 0.4570072591304779 |
| concepts[5].wikidata | https://www.wikidata.org/wiki/Q9143 |
| concepts[5].display_name | Programming language |
| concepts[6].id | https://openalex.org/C172205157 |
| concepts[6].level | 3 |
| concepts[6].score | 0.4296149015426636 |
| concepts[6].wikidata | https://www.wikidata.org/wiki/Q1782962 |
| concepts[6].display_name | Model predictive control |
| concepts[7].id | https://openalex.org/C149635348 |
| concepts[7].level | 1 |
| concepts[7].score | 0.34476977586746216 |
| concepts[7].wikidata | https://www.wikidata.org/wiki/Q193040 |
| concepts[7].display_name | Embedded system |
| concepts[8].id | https://openalex.org/C33923547 |
| concepts[8].level | 0 |
| concepts[8].score | 0.26587098836898804 |
| concepts[8].wikidata | https://www.wikidata.org/wiki/Q395 |
| concepts[8].display_name | Mathematics |
| concepts[9].id | https://openalex.org/C154945302 |
| concepts[9].level | 1 |
| concepts[9].score | 0.16537553071975708 |
| concepts[9].wikidata | https://www.wikidata.org/wiki/Q11660 |
| concepts[9].display_name | Artificial intelligence |
| concepts[10].id | https://openalex.org/C177264268 |
| concepts[10].level | 2 |
| concepts[10].score | 0.0 |
| concepts[10].wikidata | https://www.wikidata.org/wiki/Q1514741 |
| concepts[10].display_name | Set (abstract data type) |
| concepts[11].id | https://openalex.org/C2524010 |
| concepts[11].level | 1 |
| concepts[11].score | 0.0 |
| concepts[11].wikidata | https://www.wikidata.org/wiki/Q8087 |
| concepts[11].display_name | Geometry |
| keywords[0].id | https://openalex.org/keywords/microcontroller |
| keywords[0].score | 0.7697145938873291 |
| keywords[0].display_name | Microcontroller |
| keywords[1].id | https://openalex.org/keywords/code |
| keywords[1].score | 0.687170147895813 |
| keywords[1].display_name | Code (set theory) |
| keywords[2].id | https://openalex.org/keywords/conic-section |
| keywords[2].score | 0.56265789270401 |
| keywords[2].display_name | Conic section |
| keywords[3].id | https://openalex.org/keywords/computer-science |
| keywords[3].score | 0.5198433995246887 |
| keywords[3].display_name | Computer science |
| keywords[4].id | https://openalex.org/keywords/control |
| keywords[4].score | 0.4742557108402252 |
| keywords[4].display_name | Control (management) |
| keywords[5].id | https://openalex.org/keywords/programming-language |
| keywords[5].score | 0.4570072591304779 |
| keywords[5].display_name | Programming language |
| keywords[6].id | https://openalex.org/keywords/model-predictive-control |
| keywords[6].score | 0.4296149015426636 |
| keywords[6].display_name | Model predictive control |
| keywords[7].id | https://openalex.org/keywords/embedded-system |
| keywords[7].score | 0.34476977586746216 |
| keywords[7].display_name | Embedded system |
| keywords[8].id | https://openalex.org/keywords/mathematics |
| keywords[8].score | 0.26587098836898804 |
| keywords[8].display_name | Mathematics |
| keywords[9].id | https://openalex.org/keywords/artificial-intelligence |
| keywords[9].score | 0.16537553071975708 |
| keywords[9].display_name | Artificial intelligence |
| language | en |
| locations[0].id | pmh:oai:arXiv.org:2403.18149 |
| locations[0].is_oa | True |
| locations[0].source.id | https://openalex.org/S4306400194 |
| locations[0].source.issn | |
| locations[0].source.type | repository |
| locations[0].source.is_oa | True |
| locations[0].source.issn_l | |
| locations[0].source.is_core | False |
| locations[0].source.is_in_doaj | False |
| locations[0].source.display_name | arXiv (Cornell University) |
| locations[0].source.host_organization | https://openalex.org/I205783295 |
| locations[0].source.host_organization_name | Cornell University |
| locations[0].source.host_organization_lineage | https://openalex.org/I205783295 |
| locations[0].license | |
| locations[0].pdf_url | https://arxiv.org/pdf/2403.18149 |
| locations[0].version | submittedVersion |
| locations[0].raw_type | text |
| locations[0].license_id | |
| locations[0].is_accepted | False |
| locations[0].is_published | False |
| locations[0].raw_source_name | |
| locations[0].landing_page_url | http://arxiv.org/abs/2403.18149 |
| locations[1].id | doi:10.48550/arxiv.2403.18149 |
| locations[1].is_oa | True |
| locations[1].source.id | https://openalex.org/S4306400194 |
| locations[1].source.issn | |
| locations[1].source.type | repository |
| locations[1].source.is_oa | True |
| locations[1].source.issn_l | |
| locations[1].source.is_core | False |
| locations[1].source.is_in_doaj | False |
| locations[1].source.display_name | arXiv (Cornell University) |
| locations[1].source.host_organization | https://openalex.org/I205783295 |
| locations[1].source.host_organization_name | Cornell University |
| locations[1].source.host_organization_lineage | https://openalex.org/I205783295 |
| locations[1].license | |
| locations[1].pdf_url | |
| locations[1].version | |
| locations[1].raw_type | article |
| locations[1].license_id | |
| locations[1].is_accepted | False |
| locations[1].is_published | |
| locations[1].raw_source_name | |
| locations[1].landing_page_url | https://doi.org/10.48550/arxiv.2403.18149 |
| indexed_in | arxiv, datacite |
| authorships[0].author.id | https://openalex.org/A5093136151 |
| authorships[0].author.orcid | |
| authorships[0].author.display_name | Sam Schoedel |
| authorships[0].author_position | first |
| authorships[0].raw_author_name | Schoedel, Sam |
| authorships[0].is_corresponding | False |
| authorships[1].author.id | https://openalex.org/A5084111028 |
| authorships[1].author.orcid | https://orcid.org/0000-0003-1774-0817 |
| authorships[1].author.display_name | Minh‐Khai Nguyen |
| authorships[1].author_position | middle |
| authorships[1].raw_author_name | Nguyen, Khai |
| authorships[1].is_corresponding | False |
| authorships[2].author.id | https://openalex.org/A5094274962 |
| authorships[2].author.orcid | |
| authorships[2].author.display_name | Elakhya Nedumaran |
| authorships[2].author_position | middle |
| authorships[2].raw_author_name | Nedumaran, Elakhya |
| authorships[2].is_corresponding | False |
| authorships[3].author.id | https://openalex.org/A5019062457 |
| authorships[3].author.orcid | https://orcid.org/0000-0002-0078-3653 |
| authorships[3].author.display_name | Brian Plancher |
| authorships[3].author_position | middle |
| authorships[3].raw_author_name | Plancher, Brian |
| authorships[3].is_corresponding | False |
| authorships[4].author.id | https://openalex.org/A5003687365 |
| authorships[4].author.orcid | https://orcid.org/0000-0002-3071-7091 |
| authorships[4].author.display_name | Zachary Manchester |
| authorships[4].author_position | last |
| authorships[4].raw_author_name | Manchester, Zachary |
| authorships[4].is_corresponding | False |
| has_content.pdf | False |
| has_content.grobid_xml | False |
| is_paratext | False |
| open_access.is_oa | True |
| open_access.oa_url | https://arxiv.org/pdf/2403.18149 |
| open_access.oa_status | green |
| open_access.any_repository_has_fulltext | False |
| created_date | 2024-03-29T00:00:00 |
| display_name | Code Generation and Conic Constraints for Model-Predictive Control on Microcontrollers with Conic-TinyMPC |
| has_fulltext | False |
| is_retracted | False |
| updated_date | 2025-11-06T06:51:31.235846 |
| primary_topic.id | https://openalex.org/T10791 |
| primary_topic.field.id | https://openalex.org/fields/22 |
| primary_topic.field.display_name | Engineering |
| primary_topic.score | 0.9976000189781189 |
| primary_topic.domain.id | https://openalex.org/domains/3 |
| primary_topic.domain.display_name | Physical Sciences |
| primary_topic.subfield.id | https://openalex.org/subfields/2207 |
| primary_topic.subfield.display_name | Control and Systems Engineering |
| primary_topic.display_name | Advanced Control Systems Optimization |
| related_works | https://openalex.org/W4300566153, https://openalex.org/W2795378890, https://openalex.org/W2804689728, https://openalex.org/W2946724620, https://openalex.org/W2012685253, https://openalex.org/W2037437483, https://openalex.org/W3100053256, https://openalex.org/W2373292822, https://openalex.org/W2377924059, https://openalex.org/W3017139193 |
| cited_by_count | 1 |
| counts_by_year[0].year | 2024 |
| counts_by_year[0].cited_by_count | 1 |
| locations_count | 2 |
| best_oa_location.id | pmh:oai:arXiv.org:2403.18149 |
| best_oa_location.is_oa | True |
| best_oa_location.source.id | https://openalex.org/S4306400194 |
| best_oa_location.source.issn | |
| best_oa_location.source.type | repository |
| best_oa_location.source.is_oa | True |
| best_oa_location.source.issn_l | |
| best_oa_location.source.is_core | False |
| best_oa_location.source.is_in_doaj | False |
| best_oa_location.source.display_name | arXiv (Cornell University) |
| best_oa_location.source.host_organization | https://openalex.org/I205783295 |
| best_oa_location.source.host_organization_name | Cornell University |
| best_oa_location.source.host_organization_lineage | https://openalex.org/I205783295 |
| best_oa_location.license | |
| best_oa_location.pdf_url | https://arxiv.org/pdf/2403.18149 |
| best_oa_location.version | submittedVersion |
| best_oa_location.raw_type | text |
| best_oa_location.license_id | |
| best_oa_location.is_accepted | False |
| best_oa_location.is_published | False |
| best_oa_location.raw_source_name | |
| best_oa_location.landing_page_url | http://arxiv.org/abs/2403.18149 |
| primary_location.id | pmh:oai:arXiv.org:2403.18149 |
| primary_location.is_oa | True |
| primary_location.source.id | https://openalex.org/S4306400194 |
| primary_location.source.issn | |
| primary_location.source.type | repository |
| primary_location.source.is_oa | True |
| primary_location.source.issn_l | |
| primary_location.source.is_core | False |
| primary_location.source.is_in_doaj | False |
| primary_location.source.display_name | arXiv (Cornell University) |
| primary_location.source.host_organization | https://openalex.org/I205783295 |
| primary_location.source.host_organization_name | Cornell University |
| primary_location.source.host_organization_lineage | https://openalex.org/I205783295 |
| primary_location.license | |
| primary_location.pdf_url | https://arxiv.org/pdf/2403.18149 |
| primary_location.version | submittedVersion |
| primary_location.raw_type | text |
| primary_location.license_id | |
| primary_location.is_accepted | False |
| primary_location.is_published | False |
| primary_location.raw_source_name | |
| primary_location.landing_page_url | http://arxiv.org/abs/2403.18149 |
| publication_date | 2024-03-26 |
| publication_year | 2024 |
| referenced_works_count | 0 |
| abstract_inverted_index.a | 4, 73, 116 |
| abstract_inverted_index.QP | 86 |
| abstract_inverted_index.To | 28, 120 |
| abstract_inverted_index.We | 100 |
| abstract_inverted_index.as | 50, 52 |
| abstract_inverted_index.at | 133 |
| abstract_inverted_index.in | 98 |
| abstract_inverted_index.is | 3 |
| abstract_inverted_index.it | 14 |
| abstract_inverted_index.on | 19, 85, 115 |
| abstract_inverted_index.to | 17, 44, 72, 79, 93 |
| abstract_inverted_index.up | 71 |
| abstract_inverted_index.us | 92 |
| abstract_inverted_index.we | 31 |
| abstract_inverted_index.27g | 117 |
| abstract_inverted_index.C++ | 53 |
| abstract_inverted_index.and | 59, 87, 90, 108, 129 |
| abstract_inverted_index.but | 13 |
| abstract_inverted_index.fit | 94 |
| abstract_inverted_index.for | 7, 23, 41, 47, 61 |
| abstract_inverted_index.get | 121 |
| abstract_inverted_index.our | 68, 102, 126 |
| abstract_inverted_index.the | 130 |
| abstract_inverted_index.ADMM | 39 |
| abstract_inverted_index.SOCP | 88 |
| abstract_inverted_index.code | 54 |
| abstract_inverted_index.easy | 62 |
| abstract_inverted_index.from | 56, 77 |
| abstract_inverted_index.over | 81 |
| abstract_inverted_index.show | 66 |
| abstract_inverted_index.that | 67 |
| abstract_inverted_index.well | 51 |
| abstract_inverted_index.with | 123 |
| abstract_inverted_index.work | 34 |
| abstract_inverted_index.(MPC) | 2 |
| abstract_inverted_index.10.6x | 78 |
| abstract_inverted_index.Julia | 60 |
| abstract_inverted_index.conic | 26 |
| abstract_inverted_index.fast, | 36 |
| abstract_inverted_index.this, | 30 |
| abstract_inverted_index.under | 11 |
| abstract_inverted_index.visit | 125 |
| abstract_inverted_index.cached | 38 |
| abstract_inverted_index.cones, | 49 |
| abstract_inverted_index.deploy | 18 |
| abstract_inverted_index.extend | 32 |
| abstract_inverted_index.larger | 96 |
| abstract_inverted_index.recent | 33 |
| abstract_inverted_index.solver | 69 |
| abstract_inverted_index.142.7x, | 80 |
| abstract_inverted_index.MATLAB, | 58 |
| abstract_inverted_index.Python, | 57 |
| abstract_inverted_index.address | 29 |
| abstract_inverted_index.control | 1 |
| abstract_inverted_index.dynamic | 9 |
| abstract_inverted_index.enables | 91 |
| abstract_inverted_index.memory. | 99 |
| abstract_inverted_index.provide | 45 |
| abstract_inverted_index.ranging | 76 |
| abstract_inverted_index.remains | 15 |
| abstract_inverted_index.solvers | 40, 84 |
| abstract_inverted_index.started | 122 |
| abstract_inverted_index.support | 46 |
| abstract_inverted_index.systems | 10 |
| abstract_inverted_index.through | 106 |
| abstract_inverted_index.codebase | 132 |
| abstract_inverted_index.deployed | 104 |
| abstract_inverted_index.embedded | 42, 83 |
| abstract_inverted_index.hardware | 109 |
| abstract_inverted_index.powerful | 5 |
| abstract_inverted_index.problems | 24, 97 |
| abstract_inverted_index.provides | 70 |
| abstract_inverted_index.solver's | 103 |
| abstract_inverted_index.speedup, | 75 |
| abstract_inverted_index.tracking | 114 |
| abstract_inverted_index.validate | 101 |
| abstract_inverted_index.Crazyflie | 118 |
| abstract_inverted_index.examples, | 128 |
| abstract_inverted_index.framework | 6 |
| abstract_inverted_index.including | 111 |
| abstract_inverted_index.involving | 25 |
| abstract_inverted_index.problems, | 89 |
| abstract_inverted_index.benchmarks | 65 |
| abstract_inverted_index.developing | 35 |
| abstract_inverted_index.especially | 22 |
| abstract_inverted_index.generation | 55 |
| abstract_inverted_index.platforms, | 21 |
| abstract_inverted_index.quadrotor. | 119 |
| abstract_inverted_index.simulation | 107 |
| abstract_inverted_index.trajectory | 113 |
| abstract_inverted_index.challenging | 16 |
| abstract_inverted_index.controlling | 8 |
| abstract_inverted_index.deployment. | 63 |
| abstract_inverted_index.open-source | 131 |
| abstract_inverted_index.performance | 105 |
| abstract_inverted_index.constraints, | 12 |
| abstract_inverted_index.constraints. | 27 |
| abstract_inverted_index.experiments, | 110 |
| abstract_inverted_index.second-order | 48 |
| abstract_inverted_index.applications, | 43 |
| abstract_inverted_index.Conic-TinyMPC, | 124 |
| abstract_inverted_index.documentation, | 127 |
| abstract_inverted_index.Microcontroller | 64 |
| abstract_inverted_index.Model-predictive | 0 |
| abstract_inverted_index.state-of-the-art | 82 |
| abstract_inverted_index.order-of-magnitude | 95 |
| abstract_inverted_index.https://tinympc.org. | 134 |
| abstract_inverted_index.resource-constrained | 20 |
| abstract_inverted_index.conically-constrained | 112 |
| abstract_inverted_index.structure-exploiting, | 37 |
| abstract_inverted_index.two-order-of-magnitude | 74 |
| cited_by_percentile_year | |
| countries_distinct_count | 0 |
| institutions_distinct_count | 5 |
| citation_normalized_percentile |