Skip to main content

Programming Languages in Robotics

  • Living reference work entry
  • Latest version View entry history
  • First Online:
Encyclopedia of Robotics
  • 191 Accesses

Synonyms

General-purpose languages; Robot programming; Scripting; Software development

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...

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

References

  • Agha G (1990) Concurrent object-oriented programming. Commun ACM 33(9):125–141

    Article  Google Scholar 

  • 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

    Google Scholar 

  • Armstrong J (2007) Programming Erlang: software for a concurrent world. Pragmatic Bookshelf

    Google Scholar 

  • 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

    Google Scholar 

  • Bagnall B (2012) Maximum Lego NXT: building robots with java brains. Variant Press

    Google Scholar 

  • 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

    Google Scholar 

  • Barnes DJ (2002) Teaching introductory java through lego mindstorms models. In: ACM SIGCSE Bulletin, vol 34. ACM, pp 147–151

    Google Scholar 

  • Biggs G, MacDonald B (2003) A survey of robot programming systems. In: Proceedings of the Australasian conference on robotics and automation, pp 1–3

    Google Scholar 

  • 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

    Article  Google Scholar 

  • Bratko I (2001) Prolog programming for artificial intelligence. Pearson Education, Canada

    MATH  Google Scholar 

  • 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

    Google Scholar 

  • 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

    Book  MATH  Google Scholar 

  • 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

    Google Scholar 

  • Cox IJ, Gehani NH (1989) Concurrent programming and robotics. Int J Robot Res 8(2):3–16

    Article  Google Scholar 

  • van Deursen A, Klint P, Visser J (2000) Domain-specific languages: an annotated bibliography. ACM Sigplan Notices

    Google Scholar 

  • FANUC (2006) Operators manual—r-j3ic controller arc tool

    Google Scholar 

  • Ferrein A (2010) Robot controllers for highly dynamic environments with real-time constraints. KI-Künstliche Intelligenz 24(2):175–178

    Article  MathSciNet  Google Scholar 

  • Floyd RW (1979) The paradigms of programming. Commun ACM 22(8):455–460

    Article  Google Scholar 

  • Fowler M (2004) UML distilled: a brief guide to the standard object modeling language. Addison-Wesley Professional

    Google Scholar 

  • Fowler M (2010) Domain-specific languages. Addison-Wesley

    Google Scholar 

  • 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

    Google Scholar 

  • Gamma E (1995) Design patterns: elements of reusable object-oriented software. Pearson Education India

    Google Scholar 

  • GmbH KR (2010) Kuka system software 5.5

    Google Scholar 

  • 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

    Google Scholar 

  • Horswill ID (2000) Functional programming of behavior-based systems. Auton Robot 9(1):83–93

    Article  Google Scholar 

  • Hudak P, Courtney A, Nilsson H, Peterson J (2003) Arrows, robots, and functional reactive programming. In: Advanced functional programming. Springer, pp 159–187

    Google Scholar 

  • Johnson GW (1997) LabVIEW graphical programming. Tata McGraw-Hill Education

    Google Scholar 

  • Kernighan BW, Ritchie DM (2006) The C programming language

    Google Scholar 

  • 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

    Google Scholar 

  • Laird JE (2008) Extending the soar cognitive architecture. Front Artif Intell Appl 171(1):224–235

    Google Scholar 

  • Lee EA (2006) The problem with threads. Computer 39(5):33–42

    Article  Google Scholar 

  • Lozano-Perez T (1983) Robot programming. Proc IEEE 71(7):821–841

    Article  Google Scholar 

  • 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

    Google Scholar 

  • Mernik M, Heering J, Sloane A (2005) When and how to develop domain-specific languages. ACM Comput Surv 37(4):316–344

    Article  Google Scholar 

  • Miller DJ, Lennox CR (1991) An object-oriented environment for robot system architectures. IEEE Control Syst 11(2):14–23

    Article  Google Scholar 

  • 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

    Google Scholar 

  • 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

    Google Scholar 

  • Nilsen K (1998) Adding real-time capabilities to java. Commun ACM 41(6):49–56

    Article  Google Scholar 

  • 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

    Google Scholar 

  • Papathomas M (1989) Concurrency issues in object-oriented programming languages. In: Object Oriented Development, chap. 12, pp 207–245

    Google Scholar 

  • 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

    Google Scholar 

  • 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

    Google Scholar 

  • Robotics A (2012) Introduction to rapid programming—operating manual

    Google Scholar 

  • Sanner MF et al (1999) Python: a programming language for software integration and development. J Mol Graph Model 17(1):57–61

    Google Scholar 

  • 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

    Google Scholar 

  • 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]

    Google Scholar 

  • 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

    Article  Google Scholar 

  • Steele GL (1999) Growing a language, keynote at OOPSLA 1998. Higher-Order Symb Comput 12(3): 221–236

    Article  Google Scholar 

  • Sutter H (2005) The free lunch is over: a fundamental turn toward concurrency in software. Dr Dobb’s J 30(3):202–210

    Google Scholar 

  • Szyperski C, Bosch J, Weck W (1999) Component-oriented programming. In: European conference on object-oriented programming (ECOOP’99). Springer, pp 184–192

    Google Scholar 

  • 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

    Google Scholar 

  • Trinder PW, Loidl HW, Pointon RF (2002) Parallel and distributed Haskells. J Funct Program 12(5):469–510

    Article  MathSciNet  MATH  Google Scholar 

  • 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

    Google Scholar 

  • 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

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ulrik Pagh Schultz .

Editor information

Editors and Affiliations

Section Editor information

Rights and permissions

Reprints and permissions

Copyright information

© 2021 Springer-Verlag GmbH Germany, part of Springer Nature

About this entry

Check for updates. Verify currency and authenticity via CrossMark

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

Policies and ethics

Chapter history

  1. Latest

    Programming Languages in Robotics
    Published:
    20 October 2020

    DOI: https://doi.org/10.1007/978-3-642-41610-1_6-2

  2. Original

    Programming Languages in Robotics
    Published:
    29 July 2020

    DOI: https://doi.org/10.1007/978-3-642-41610-1_6-1