{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,12,18]],"date-time":"2025-12-18T14:13:48Z","timestamp":1766067228355,"version":"build-2065373602"},"reference-count":23,"publisher":"MDPI AG","issue":"4","license":[{"start":{"date-parts":[[2020,10,13]],"date-time":"2020-10-13T00:00:00Z","timestamp":1602547200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Computation"],"abstract":"<jats:p>Quadratic programming problems (QPs) frequently appear in control engineering. For use on embedded platforms, a QP solver implementation is required in the programming language C. A new solver for quadratic optimization problems, EmbQP, is described, which was implemented in well readable C code. The algorithm is based on the dual method of Goldfarb and Idnani and solves strictly convex QPs with a positive definite objective function matrix and linear equality and inequality constraints. The algorithm is outlined and some details for an efficient implementation in C are shown, with regard to the requirements of embedded systems. The newly implemented QP solver is demonstrated in the context of control allocation of an over-actuated vehicle as application example. Its performance is assessed in a simulation experiment.<\/jats:p>","DOI":"10.3390\/computation8040088","type":"journal-article","created":{"date-parts":[[2020,10,13]],"date-time":"2020-10-13T08:55:53Z","timestamp":1602579353000},"page":"88","update-policy":"https:\/\/doi.org\/10.3390\/mdpi_crossmark_policy","source":"Crossref","is-referenced-by-count":6,"title":["A QP Solver Implementation for Embedded Systems Applied to Control Allocation"],"prefix":"10.3390","volume":"8","author":[{"given":"Christina","family":"Schreppel","sequence":"first","affiliation":[{"name":"Institute of System Dynamics and Control, Robotics and Mechatronics Center, German Aerospace Center (DLR), 82234 We\u00dfling, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-7671-5251","authenticated-orcid":false,"given":"Jonathan","family":"Brembeck","sequence":"additional","affiliation":[{"name":"Institute of System Dynamics and Control, Robotics and Mechatronics Center, German Aerospace Center (DLR), 82234 We\u00dfling, Germany"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"1968","published-online":{"date-parts":[[2020,10,13]]},"reference":[{"key":"ref_1","doi-asserted-by":"crossref","unstructured":"Banjac, G., Stellato, B., Moehle, N., Goulart, P., Bemporad, A., and Boyd, S. (2017, January 12\u201315). Embedded code generation using the OSQP solver. Proceedings of the 56th Annual Conference on Decision and Control (CDC), Melbourne, Australia.","DOI":"10.1109\/CDC.2017.8263928"},{"key":"ref_2","doi-asserted-by":"crossref","first-page":"2657","DOI":"10.1109\/TASL.2012.2210875","article-title":"Real-Time Perception-Based Clipping of Audio Signals Using Convex Optimization","volume":"20","author":"Defraene","year":"2012","journal-title":"IEEE Trans. Audio Speech Lang. Process."},{"key":"ref_3","unstructured":"Amos, B., and Kolter, J.Z. (2017, January 6\u201311). OptNet: Differentiable Optimization as a Layer in Neural Networks. Proceedings of the 34th International Conference on Machine Learning, Sydney, Australia."},{"key":"ref_4","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1007\/s11081-011-9176-9","article-title":"CVXGEN: A code generator for embedded convex optimization","volume":"13","author":"Mattingley","year":"2011","journal-title":"Optim. Eng."},{"key":"ref_5","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1007\/BF02591962","article-title":"A numerically stable dual method for solving strictly convex quadratic programs","volume":"27","author":"Goldfarb","year":"1983","journal-title":"Math. Program."},{"key":"ref_6","unstructured":"Di Gaspero, L. (2020, September 25). QuadProg++, University of Udine, Italy. Available online: https:\/\/github.com\/liuq\/QuadProgpp."},{"key":"ref_7","unstructured":"Sherikov (2020, September 25). qpmad. Available online: https:\/\/github.com\/asherikov\/qpmad."},{"key":"ref_8","unstructured":"Barraud (2020, September 25). QP a General Convex qpp Solver. Available online: https:\/\/www.mathworks.com\/matlabcentral\/fileexchange\/67864-qp-a-general-convex-qpp-solver."},{"key":"ref_9","unstructured":"Schittkowski, K. (2020, August 20). QL: A Fortran Code for Convex Quadratic Programming\u2014User\u2019s Guide. Available online: http:\/\/www.easy-fit.de\/QL.pdf."},{"key":"ref_10","doi-asserted-by":"crossref","first-page":"21","DOI":"10.1145\/101363.101366","article-title":"A Fortran to C converter","volume":"9","author":"Feldman","year":"1990","journal-title":"ACM SIGPLAN Fortran Forum"},{"key":"ref_11","unstructured":"Brembeck, J. (2018). Model Based Energy Management and State Estimation for the Robotic Electric Vehicle RoboMObil. [Ph.D. Thesis, Technische Universit\u00e4t M\u00fcnchen]."},{"key":"ref_12","unstructured":"Brembeck, J., Ho, L.M., Schaub, A., Satzger, C., Tobolar, J., and Hirzinger, J.B.u.G. (2011, January 14\u201319). ROMO\u2014The Robotic Electric Vehicle. Proceedings of the 22nd IAVSD International Symposium on Dynamics of Vehicle on Roads and Tracks, Manchester, UK."},{"key":"ref_13","unstructured":"Powell, M. (1983). ZQPCVX, A Fortran Subroutine for Convex Quadratic Programming, University of Cambridge."},{"key":"ref_14","unstructured":"Werner, J. (2020, August 20). Vorlesung \u00fcber Optimierung. Universit\u00e4t Hamburg. Available online: https:\/\/num.math.uni-goettingen.de\/werner\/optim.pdf."},{"key":"ref_15","unstructured":"Liedel, M. (2012). Sichere Mehrparteienberechnungen und datenschutzfreundliche Klassifikation auf Basis horizontal partitionierter Datenbanken. [Ph.D Thesis, Universit\u00e4t Regensburg]."},{"key":"ref_16","unstructured":"Motor Industry Software Reliability Association (2020, May 26). MISRA-C: 2012. Available online: https:\/\/www.misra.org.uk\/."},{"key":"ref_17","doi-asserted-by":"crossref","unstructured":"Brembeck, J., and Ritzer, P. (2012, January 3\u20137). Energy optimal control of an over actuated Robotic Electric Vehicle using enhanced control allocation approaches. Proceedings of the IEEE Intelligent Vehicles Symposium, Alacala de Henares, Spain.","DOI":"10.1109\/IVS.2012.6232147"},{"key":"ref_18","unstructured":"Ritzer, P., Winter, C., Brembeck, J., and Peter, R. (July, January 28). Advanced path following control of an overactuated robotic vehicle. Proceedings of the IEEE Intelligent Vehicles Symposium (IV), Seoul, Korea."},{"key":"ref_19","doi-asserted-by":"crossref","first-page":"1087","DOI":"10.1016\/j.automatica.2013.01.035","article-title":"Control allocation\u2014A survey","volume":"49","author":"Johansen","year":"2013","journal-title":"Automatica"},{"key":"ref_20","doi-asserted-by":"crossref","unstructured":"Brembeck, J. (2019). Nonlinear Constrained Moving Horizon Estimation Applied to Vehicle Position Estimation. Sensors, 19.","DOI":"10.3390\/s19102276"},{"key":"ref_21","unstructured":"Modelica Association (2020, May 28). Modelica. Available online: http:\/\/www.modelica.org."},{"key":"ref_22","doi-asserted-by":"crossref","unstructured":"Brembeck, J. (2019). A Physical Model-Based Observer Framework for Nonlinear Constrained State Estimation Applied to Battery State Estimation. Sensors, 19.","DOI":"10.3390\/s19204402"},{"key":"ref_23","doi-asserted-by":"crossref","unstructured":"Neudorfer, J., Armugham, S.S., Peter, M., Mandipalli, N., Ramachandran, K., Bertsch, C., and Corral, I. (2017). FMI for Physics-Based Models on AUTOSAR Platforms. SAE Tech. Pap. Ser.","DOI":"10.4271\/2017-26-0358"}],"container-title":["Computation"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.mdpi.com\/2079-3197\/8\/4\/88\/pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,11]],"date-time":"2025-10-11T10:20:34Z","timestamp":1760178034000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.mdpi.com\/2079-3197\/8\/4\/88"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,10,13]]},"references-count":23,"journal-issue":{"issue":"4","published-online":{"date-parts":[[2020,12]]}},"alternative-id":["computation8040088"],"URL":"https:\/\/doi.org\/10.3390\/computation8040088","relation":{},"ISSN":["2079-3197"],"issn-type":[{"type":"electronic","value":"2079-3197"}],"subject":[],"published":{"date-parts":[[2020,10,13]]}}}