{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T20:53:23Z","timestamp":1760043203539,"version":"3.40.3"},"publisher-location":"Cham","reference-count":14,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030473600"},{"type":"electronic","value":"9783030473617"}],"license":[{"start":{"date-parts":[[2020,1,1]],"date-time":"2020-01-01T00:00:00Z","timestamp":1577836800000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2020,5,12]],"date-time":"2020-05-12T00:00:00Z","timestamp":1589241600000},"content-version":"vor","delay-in-days":132,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2020]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Programming industrial robots is challenging due to the difficulty of precisely specifying general yet robust operations. As the complexity of these operations increases, so does the likelihood of errors. Certain classes of errors during industrial robot operations can however be addressed using reverse execution, allowing the robot to temporarily back out of an erroneous situation, after which the operation can be automatically retried. Moreover reverse execution permits automatically deriving programs that physically reverse the operations of an industrial robot. This can be useful in industrial assembly, where a disassembly program can be automatically derived from the assembly program.<\/jats:p><jats:p>In this case study we investigate robotic assembly from the point of view of reversibility, investigating to what extent program inversion of a robotic assembly sequence for a given product can be considered to derive a robotic disassembly sequence for this same product, and investigating to what extent changing the execution direction at runtime (i.e., backtracking and retrying) using program inversion can be used as an automatic error handling procedure. The programming model used to reversibly control industrial robots is based on an abstract semantics-based model, extended with various features required for reversible control of industrial robots in real-world scenarios, and implemented as a domain-specific programming language.<\/jats:p>","DOI":"10.1007\/978-3-030-47361-7_8","type":"book-chapter","created":{"date-parts":[[2020,5,13]],"date-time":"2020-05-13T15:10:54Z","timestamp":1589382654000},"page":"177-186","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":3,"title":["Reversible Control of Robots"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-4119-2689","authenticated-orcid":false,"given":"Ulrik Pagh","family":"Schultz","sequence":"first","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2020,5,12]]},"reference":[{"key":"8_CR1","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"95","DOI":"10.1007\/978-3-540-95885-7_7","volume-title":"Membrane Computing","author":"O Agrigoroaiei","year":"2009","unstructured":"Agrigoroaiei, O., Ciobanu, G.: Dual P systems. In: Corne, D.W., Frisco, P., P\u0103un, G., Rozenberg, G., Salomaa, A. (eds.) WMC 2008. LNCS, vol. 5391, pp. 95\u2013107. Springer, Heidelberg (2009). https:\/\/doi.org\/10.1007\/978-3-540-95885-7_7"},{"issue":"3","key":"8_CR2","doi-asserted-by":"publisher","first-page":"278","DOI":"10.1016\/j.jlap.2010.03.003","volume":"79","author":"O Agrigoroaiei","year":"2010","unstructured":"Agrigoroaiei, O., Ciobanu, G.: Reversing computation in membrane systems. J. Logic Algebraic Program. 79(3), 278\u2013288 (2010)","journal-title":"J. Logic Algebraic Program."},{"unstructured":"Lanese, I., Mezzina, C.A., Tiezzi, F.: Causal-consistent reversibility. Bull. EATCS 114 (2014)","key":"8_CR3"},{"issue":"5","key":"8_CR4","doi-asserted-by":"publisher","first-page":"625","DOI":"10.1017\/S0263574717000613","volume":"36","author":"J Laursen","year":"2018","unstructured":"Laursen, J., Ellekilde, L., Schultz, U.: Modelling reversible execution of robotic assembly. Robotica 36(5), 625\u2013654 (2018)","journal-title":"Robotica"},{"doi-asserted-by":"crossref","unstructured":"Laursen, J.S., Schultz, U.P., Ellekilde, L.P.: Automatic error recovery in robot assembly operations using reverse execution. In: Evers, C., Sheaffer, J., Tourbabin, V., Naylor, P.A., Romanoni, A., Matteucci, M. (eds.) International Conference on Intelligent Robots and Systems (IROS 2015). IEEE\/RSJ (2015)","key":"8_CR5","DOI":"10.1109\/IROS.2015.7353609"},{"unstructured":"M\u00fche, H., Angerer, A., Hoffmann, A., Reif, W.: On reverse-engineering the KUKA robot language. In: Schultz, U.P., Stinckwich, S., Ziane, M. (eds.) Proceedings of the First International Workshop on Domain-Specific Languages for Robotic Systems (DSLRob 2010) (2010). arXiv:1009.5004 [cs.RO]","key":"8_CR6"},{"key":"8_CR7","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-56196-2","volume-title":"Membrane Computing. An Introduction","author":"G P\u01ceun","year":"2002","unstructured":"P\u01ceun, G.: Membrane Computing. An Introduction. Springer, Heidelberg (2002). https:\/\/doi.org\/10.1007\/978-3-642-56196-2"},{"doi-asserted-by":"crossref","unstructured":"Schultz, U.P.: Using scheme to control simulated modular robots. In: Danvy, O. (ed.) Proceedings of the 2012 Annual Workshop on Scheme and Functional Programming, pp. 90\u201395. ACM (2012)","key":"8_CR8","DOI":"10.1145\/2661103.2661114"},{"key":"8_CR9","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"97","DOI":"10.1007\/978-3-642-36315-3_8","volume-title":"Reversible Computation","author":"UP Schultz","year":"2013","unstructured":"Schultz, U.P.: Towards a general-purpose, reversible language for controlling self-reconfigurable robots. In: Gl\u00fcck, R., Yokoyama, T. (eds.) RC 2012. LNCS, vol. 7581, pp. 97\u2013111. Springer, Heidelberg (2013). https:\/\/doi.org\/10.1007\/978-3-642-36315-3_8"},{"key":"8_CR10","doi-asserted-by":"publisher","first-page":"35","DOI":"10.1017\/S0263574710000664","volume":"29","author":"U Schultz","year":"2011","unstructured":"Schultz, U., Bordignon, M., St\u00f8y, K.: Robust and reversible execution of self-reconfiguration sequences. Robotica 29, 35\u201357 (2011)","journal-title":"Robotica"},{"key":"8_CR11","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"111","DOI":"10.1007\/978-3-319-20860-2_7","volume-title":"Reversible Computation","author":"UP Schultz","year":"2015","unstructured":"Schultz, U.P., Laursen, J.S., Ellekilde, L.-P., Axelsen, H.B.: Towards a domain-specific language for reversible assembly sequences. In: Krivine, J., Stefani, J.-B. (eds.) RC 2015. LNCS, vol. 9138, pp. 111\u2013126. Springer, Cham (2015). https:\/\/doi.org\/10.1007\/978-3-319-20860-2_7"},{"key":"8_CR12","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"121","DOI":"10.1007\/978-3-319-40578-0_8","volume-title":"Reversible Computation","author":"N Tyagi","year":"2016","unstructured":"Tyagi, N., Lynch, J., Demaine, E.D.: Toward an energy efficient language and compiler for (partially) reversible algorithms. In: Devitt, S., Lanese, I. (eds.) RC 2016. LNCS, vol. 9720, pp. 121\u2013136. Springer, Cham (2016). https:\/\/doi.org\/10.1007\/978-3-319-40578-0_8"},{"issue":"1","key":"8_CR13","doi-asserted-by":"publisher","first-page":"43","DOI":"10.1109\/MRA.2007.339623","volume":"14","author":"M Yim","year":"2007","unstructured":"Yim, M., et al.: Modular self-reconfigurable robot systems [grand challenges of robotics]. IEEE Robot. Autom. Mag. 14(1), 43\u201352 (2007)","journal-title":"IEEE Robot. Autom. Mag."},{"doi-asserted-by":"crossref","unstructured":"Yokoyama, T., Axelsen, H.B., Gl\u00fcck, R.: Principles of a reversible programming language. In: Proceedings of the 5th Conference on Computing Frontiers (CF 2008), pp. 43\u201354. ACM (2008)","key":"8_CR14","DOI":"10.1145\/1366230.1366239"}],"container-title":["Lecture Notes in Computer Science","Reversible Computation: Extending Horizons of Computing"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-47361-7_8","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,7,3]],"date-time":"2024-07-03T10:04:12Z","timestamp":1720001052000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-030-47361-7_8"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020]]},"ISBN":["9783030473600","9783030473617"],"references-count":14,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-47361-7_8","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2020]]},"assertion":[{"value":"12 May 2020","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}}]}}