Programming robot work flows with a task modeling approach