Definitions
Robots are in general controlled using a computer, and the actions of the computer – and thus the robot – are expressed using a programming language. A programming language is a formal notation for writing programs that can be interpreted or compiled to an executable representation. Programming languages are commonly classified according to their paradigm, such as procedural, object-oriented, functional, or logical.
Overview
Robotic systems blend hardware and software in a holistic way that intrinsically raises many crosscutting concerns such as concurrency, uncertainty, and time constraints (Schlegel et al., 2015). These concerns make programming robotic systems challenging as expertise from multiple domains needs to be integrated conceptually and technically. Programming languages play a central role in providing a higher level of abstraction.
This chapter reviews the state of the art...
References
Agha G (1990) Concurrent object-oriented programming. Commun ACM 33(9):125–141
Angerer A, Hoffmann A, Schierl A, Vistein M, Reif W (2013) Robotics API: object-oriented software development for industrial robots. J Softw Eng Robot (JOSER) 4(1):1–22
Armstrong J (2007) Programming Erlang: software for a concurrent world. Pragmatic Bookshelf
Asama H, Matsumoto A, Ishida Y (1989) Design of an autonomous and distributed robot system: actress. In: Proceedings of the 1989 IEEE/RSJ international conference on intelligent robots and systems (IROS 1989), vol 89, pp 283–290
Bagnall B (2012) Maximum Lego NXT: building robots with java brains. Variant Press
Baillie JC (2005) Urbi: towards a universal robotic low-level programming language. In: Proceedings of the 2005 IEEE/RSJ international conference on intelligent robots and systems (IROS 2005). IEEE, pp 820–825
Barnes DJ (2002) Teaching introductory java through lego mindstorms models. In: ACM SIGCSE Bulletin, vol 34. ACM, pp 147–151
Biggs G, MacDonald B (2003) A survey of robot programming systems. In: Proceedings of the Australasian conference on robotics and automation, pp 1–3
Blank D, Kumar D, Meeden L, Yanco H (2004) Pyro: a python-based versatile programming environment for teaching robotics. J Educ Res Comput (JERIC) 4(3): 1–15
Bratko I (2001) Prolog programming for artificial intelligence. Pearson Education, Canada
Brugali D, Brooks A, Cowley A, Côté C, DomÃnguez-Brito A, Létourneau D, Michaud F, Schlegel C (2007) Trends in component-based robotics. In: Brugali D. (ed) Software engineering for experimental robotics. Springer tracts in advanced robotics, vol 30. Springer, Berlin, Heidelberg pp 135–142
Burnett MM (2017) Visual language research bibliography. http://web.engr.oregonstate.edu/~burnett/vpl.html#V2
Charniak E, Riesbeck CK, McDermott DV, Meehan JR (2014) Artificial intelligence programming. Psychology Press, New York
Collett TH, MacDonald BA, Gerkey BP (2005) Player 2.0: toward a practical robot programming framework. In: Proceedings of the Australasian conference on robotics and automation (ACRA 2005), p 145
Cox IJ, Gehani NH (1989) Concurrent programming and robotics. Int J Robot Res 8(2):3–16
van Deursen A, Klint P, Visser J (2000) Domain-specific languages: an annotated bibliography. ACM Sigplan Notices
FANUC (2006) Operators manual—r-j3ic controller arc tool
Ferrein A (2010) Robot controllers for highly dynamic environments with real-time constraints. KI-Künstliche Intelligenz 24(2):175–178
Floyd RW (1979) The paradigms of programming. Commun ACM 22(8):455–460
Fowler M (2004) UML distilled: a brief guide to the standard object modeling language. Addison-Wesley Professional
Fowler M (2010) Domain-specific languages. Addison-Wesley
Fraanje R, Koreneef T, Mair AL, de Jong S (2016) Python in robotics and mechatronics education. In: 2016 11th France-Japan 9th Europe-Asia congress on mechatronics (MECATRONICS)/17th international conference on research and education in mechatronics (REM), pp 014–019
Gamma E (1995) Design patterns: elements of reusable object-oriented software. Pearson Education India
GmbH KR (2010) Kuka system software 5.5
Hammond K, Michaelson G (2003) Hume: a domain-specific language for real-time embedded systems. In: International conference on generative programming and component engineering (GPCE’03). Springer, pp 37–56
Horswill ID (2000) Functional programming of behavior-based systems. Auton Robot 9(1):83–93
Hudak P, Courtney A, Nilsson H, Peterson J (2003) Arrows, robots, and functional reactive programming. In: Advanced functional programming. Springer, pp 159–187
Johnson GW (1997) LabVIEW graphical programming. Tata McGraw-Hill Education
Kernighan BW, Ritchie DM (2006) The C programming language
Kuo Yh, MacDonald BA (2005) A distributed real-time software framework for robotic applications. In: Proceedings of the 2005 IEEE international conference on robotics and automation (ICRA 2005). IEEE, pp 1964–1969
Laird JE (2008) Extending the soar cognitive architecture. Front Artif Intell Appl 171(1):224–235
Lee EA (2006) The problem with threads. Computer 39(5):33–42
Lozano-Perez T (1983) Robot programming. Proc IEEE 71(7):821–841
Mérillon F, Réveillère L, Consel C, Marlet R, Muller G (2000) Devil: An IDL for hardware programming. In: Proceedings of the 4th conference on symposium on operating system design & implementation, vol 4. USENIX Association, p 2
Mernik M, Heering J, Sloane A (2005) When and how to develop domain-specific languages. ACM Comput Surv 37(4):316–344
Miller DJ, Lennox CR (1991) An object-oriented environment for robot system architectures. IEEE Control Syst 11(2):14–23
Mohamed N, Al-Jaroodi J, Jawhar I (2008) Middleware for robotics: a survey. In: 2008 IEEE conference on robotics, automation and mechatronics. IEEE, pp 736–742
Montemerlo M, Roy N, Thrun S (2003) Perspectives on standardization in mobile robot programming: the carnegie mellon navigation (carmen) toolkit. In: Proceedings of the 2003 IEEE/RSJ international conference on intelligent robots and systems (IROS 2003), vol 3. IEEE, pp 2436–2441
Nilsen K (1998) Adding real-time capabilities to java. Commun ACM 41(6):49–56
Nordmann A, Hochgeschwender N, Wigand D, Wrede S (2016) A survey on domain-specific modeling and languages in robotics. J Softw Eng Robot (JOSER) 7(1):75–99
Papathomas M (1989) Concurrency issues in object-oriented programming languages. In: Object Oriented Development, chap. 12, pp 207–245
Peterson J, Hudak P, Elliott C (1999) Lambda in motion: controlling robots with haskell. In: International symposium on practical aspects of declarative languages. Springer, pp 91–105
Quigley M, Conley K, Gerkey B, Faust J, Foote T, Leibs J, Wheeler R, Ng AY (2009) ROS: an open-source robot operating system. In: ICRA workshop on open source software, Kobe, vol 3, p 5
Robotics A (2012) Introduction to rapid programming—operating manual
Sanner MF et al (1999) Python: a programming language for software integration and development. J Mol Graph Model 17(1):57–61
Schiffer S, Baumgartner T, Beck D, Maleki-Fard B, Niemüller T, Schwering C, Lakemeyer G (2012) robOCD: robotic order cups demo–an interactive domestic service robotics demo. In: Poster and demo session at the 35th German conference on artificial intelligence (KI 2012), pp 150–154
Schlegel C, Schultz UP, Stinckwich S, Wrede S (2015) Proceedings of the sixth international workshop on domain-specific languages and models for robotic systems (DSLRob 2015). ArXiv:1601.00877 [cs.RO]
Shaw M, DeLine R, Klein DV, Ross TL, Young DM, Zelesnik G (1995) Abstractions for software architecture and tools to support them. IEEE Trans Softw Eng 21(4):314–335
Steele GL (1999) Growing a language, keynote at OOPSLA 1998. Higher-Order Symb Comput 12(3): 221–236
Sutter H (2005) The free lunch is over: a fundamental turn toward concurrency in software. Dr Dobb’s J 30(3):202–210
Szyperski C, Bosch J, Weck W (1999) Component-oriented programming. In: European conference on object-oriented programming (ECOOP’99). Springer, pp 184–192
Thrun S (2000) Towards programming tools for robots that integrate probabilistic computation and learning. In: Proceedings of the 2000 IEEE international conference on robotics and automation (ICRA 2000). IEEE, San Francisco
Trinder PW, Loidl HW, Pointon RF (2002) Parallel and distributed Haskells. J Funct Program 12(5):469–510
Vaughan RT, Gerkey BP, Howard A (2003) On device abstractions for portable, reusable robot code. In: Proceedings of the 2003 IEEE/RSJ international conference on intelligent robots and systems (IROS 2003), vol 3. IEEE, pp 2421–2427
Wikipedia (2017a) Comparison of programming paradigms. https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms
Wikipedia (2017b) Lego mindstorms: programming language. https://en.wikipedia.org/wiki/Lego_Minds torms#Programming_language
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Section Editor information
Rights and permissions
Copyright information
© 2021 Springer-Verlag GmbH Germany, part of Springer Nature
About this entry
Cite this entry
Schultz, U.P. (2021). Programming Languages in Robotics. In: Ang, M.H., Khatib, O., Siciliano, B. (eds) Encyclopedia of Robotics. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-41610-1_6-2
Download citation
DOI: https://doi.org/10.1007/978-3-642-41610-1_6-2
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-41610-1
Online ISBN: 978-3-642-41610-1
eBook Packages: Springer Reference EngineeringReference Module Computer Science and Engineering
Publish with us
Chapter history
-
Latest
Programming Languages in Robotics- Published:
- 20 October 2020
DOI: https://doi.org/10.1007/978-3-642-41610-1_6-2
-
Original
Programming Languages in Robotics- Published:
- 29 July 2020
DOI: https://doi.org/10.1007/978-3-642-41610-1_6-1