“…Many systems focus on enabling users to specify the structure and logic of a program using pre-specified robot primitives, such as grasps or spinning, that are often developed by expert robot programmers (e.g., [3,7,8,10,17,18,44,47,53,55,58,63,67,77,86,96,101,103,112,116,117]). Some end-user robot programs give the user more granular access by allowing end-users to specify the primitives used for subsequent programming (e.g., [34,55,68,69,108,112]) or by taking an end-to-end approach in which end-users are fully responsible for specifying every aspect of the program, as in imitation learning (e.g., [57,74]). On the other hand, other end-user robot programming systems do the bulk of the program specification, using techniques like automated planning (e.g., [68,69]).…”