Design and Evaluation of a Rapid Programming System for Service Robots

Huang, J., Lau, T., & Cakmak, M. (2016). Design and Evaluation of a Rapid Programming System for Service Robots. In ACM/IEEE International Conference on Human-Robot Interaction (HRI) (pp. 295–302).


This paper introduces CustomPrograms, a rapid programming system for mobile service robots. With CustomPrograms, roboticists can quickly create new behaviors and try unexplored use cases for commercialization. In our system, the robot has a set of primitive capabilities, such as navigating to a location or interacting with users on a touch screen. Users can then compose these primitives with general-purpose programming language constructs like variables, loops, conditionals, and functions. The programming language is wrapped in a graphical interface. This allows inexperienced or novice programmers to benefit from the system as well. We describe the design and implementation of CustomPrograms on a Savioke Relay robot in detail. Based on interviews conducted with Savioke roboticists, designers, and business people, we learned of several potential new use cases for the robot. We characterize our system’s ability to fulfill these use cases. Additionally, we conducted a user study of the interface with Savioke employees and outside programmers. We found that experienced programmers could learn to use the interface and create 3 real-world programs during the 90 minute study. Inexperienced programmers were less likely to create complex programs correctly. We provide an analysis of the errors made during the study, and highlight the most common pieces of feedback we received. Two case studies show how the system was used internally at Savioke and at a major trade show.

BibTeX Entry

  title = {Design and Evaluation of a Rapid Programming System for Service Robots},
  author = {Huang, Justin and Lau, Tessa and Cakmak, Maya},
  booktitle = {ACM/IEEE International Conference on Human-Robot Interaction (HRI)},
  pages = {295--302},
  year = {2016},
  wwwcodeurl = {}