A Systematic Approach to Learning Robot Programming with ROS