1. A method of programming at least one robot by demonstration comprising: performing at least one demonstration of at least one task in the field of view of at least one fixed camera to obtain at least one observed task trajectory of at least one manipulated object, preferably at least one set of observed task trajectories; generating a generalized task trajectory from said at least one observed task trajectory, preferably from said at least one set of observed task trajectories; and executing said at least one task by said at least one robot in the field of view of said at least one fixed camera, preferably using image-based visual servoing to minimize the difference between the executed trajectory during said execution and the generalized task trajectory.