  The great diversity of end-user tasks ranging from manufacturing environments
to personal homes makes pre-programming robots for general purpose applications
extremely challenging. In fact, teaching robots new actions from scratch that
can be reused for previously unseen tasks remains a difficult challenge and is
generally left up to robotics experts. In this work, we present iRoPro, an
interactive Robot Programming framework that allows end-users with little to no
technical background to teach a robot new reusable actions. We combine
Programming by Demonstration and Automated Planning techniques to allow the
user to construct the robot's knowledge base by teaching new actions by
kinesthetic demonstration. The actions are generalised and reused with a task
planner to solve previously unseen problems defined by the user. We implement
iRoPro as an end-to-end system on a Baxter Research Robot to simultaneously
teach low- and high-level actions by demonstration that the user can customise
via a Graphical User Interface to adapt to their specific use case. To evaluate
the feasibility of our approach, we first conducted pre-design experiments to
better understand the user's adoption of involved concepts and the proposed
robot programming process. We compare results with post-design experiments,
where we conducted a user study to validate the usability of our approach with
real end-users. Overall, we showed that users with different programming levels
and educational backgrounds can easily learn and use iRoPro and its robot
programming process.
