A method for defining a robotic machine task, comprising: collecting a sequence of a plurality of images showing at least one demonstrator performing a task which comprises at least one manipulation of at least one object and showing the at least one object being manipulated by said at least one demonstrator; performing an analysis of said sequence of a plurality of images to: (a) identify demonstrator body parts manipulating said at least one object, and (b) identify said at least one manipulation of said at least one object, to determine an orientation and/or position of the at least one object relative to the demonstrator, and to determine at least one effect that the at least one manipulation has on the at least one object; determining, according to said analysis, at least one robotic machine movement to perform said task; calculating a modified task, based on said task, by applying at least one transformation on said at least one robotic machine movement; and generating at least one motion command for instructing said robotic machine to perform said modified task; characterized by: the manipulation of the object is identified by segmenting the at least one object manipulated by the demonstrator and by segmenting the demonstrator body parts; and the transformation is a time dimension transformation, which is performing said at least one robotic machine movement in reversed manner; wherein applying the at least one transformation includes applying at least one space dimension transformation that comprises a rotation of a direction of said at least one robotic machine movement. collecting a sequence of a plurality of images showing at least one demonstrator performing a task which comprises at least one manipulation of at least one object and showing the at least one object being manipulated by said at least one demonstrator; performing an analysis of said sequence of a plurality of images to: (a) identify demonstrator body parts manipulating said at least one object, and (b) identify said at least one manipulation of said at least one object, to determine an orientation and/or position of the at least one object relative to the demonstrator, and to determine at least one effect that the at least one manipulation has on the at least one object; (a) identify demonstrator body parts manipulating said at least one object, and (b) identify said at least one manipulation of said at least one object, to determine an orientation and/or position of the at least one object relative to the demonstrator, and to determine at least one effect that the at least one manipulation has on the at least one object; determining, according to said analysis, at least one robotic machine movement to perform said task; calculating a modified task, based on said task, by applying at least one transformation on said at least one robotic machine movement; and generating at least one motion command for instructing said robotic machine to perform said modified task; characterized by: the manipulation of the object is identified by segmenting the at least one object manipulated by the demonstrator and by segmenting the demonstrator body parts; and the transformation is a time dimension transformation, which is performing said at least one robotic machine movement in reversed manner; wherein applying the at least one transformation includes applying at least one space dimension transformation that comprises a rotation of a direction of said at least one robotic machine movement. the manipulation of the object is identified by segmenting the at least one object manipulated by the demonstrator and by segmenting the demonstrator body parts; and the transformation is a time dimension transformation, which is performing said at least one robotic machine movement in reversed manner; wherein applying the at least one transformation includes applying at least one space dimension transformation that comprises a rotation of a direction of said at least one robotic machine movement.