A method for programming by a data processing system a cobot for a plurality of cells of an industrial environment, comprising the following steps: a) providing a connecting software layer for connecting a virtual cobot to a physical cobot positioned in a physical lab cell comprising a set of physical lab objects (202, 203, 204) for teaching purposes; b) providing a virtual simulation system for simulating, in a virtual environment, a virtual cobot representing the physical cobot; c) providing a user interface for a user to interact with the virtual simulation system when teaching the physical cobot by hand-guiding the physical cobot with his/her hand; d) receiving information inputs on a virtual cobot representing the physical cobot, information inputs on a virtual lab cell representing the physical lab cell, information inputs on a plurality of virtual industrial cells (310, 311, 312) representing the plurality of cells of the industrial environment to be modeled, wherein each virtual industrial cell comprises a set of virtual industrial objects (302, 303, 304) representing a set of physical industrial objects (202, 203, 204) occupying the space of a corresponding cell of the industrial facility to be modeled, information inputs on the set of virtual lab objects (302, 303, 304) representing the set of the physical lab objects (202, 203, 204), information inputs on at least one additional virtual object (321, 322 323) not present in the lab cell; e) through the connecting software layer, connecting the virtual cobot and the physical cobot together so that when the physical cobot moves, the virtual cobot follows the movement in the virtual environment, and once the virtual cobot detects a possible collision, both the physical cobot and the virtual cobot receive a collision notification; f) generating a superimposed meta-cell by superimposing the plurality of virtual industrial cells (310, 311, 312) with the virtual lab cell so as to obtain a single superimposed meta cell comprising a set of superimposed virtual objects, wherein the single meta-cell is generated by reallocating all the virtual objects (302, 303, 304, 304, 321, 322, 323) from all the different virtual industrial cells (310, 311, 312) into the single meta-cell relative to each cobot base coordinates together with a virtual lab cell virtually representing the physical lab cell; g) positioning the virtual cobot in the generated superimposed meta cell; h) receiving inputs from the physical cobot's movement during teaching whereby the physical cobot is moved in the lab cell to the desired position(s) while providing, via the user interface, a visualization of the virtual cobot's movement within the superimposed meta cell so that collisions with any object are minimized; i) generating a robotic program based on the received inputs of the physical cobot's movement. a) providing a connecting software layer for connecting a virtual cobot to a physical cobot positioned in a physical lab cell comprising a set of physical lab objects (202, 203, 204) for teaching purposes; b) providing a virtual simulation system for simulating, in a virtual environment, a virtual cobot representing the physical cobot; c) providing a user interface for a user to interact with the virtual simulation system when teaching the physical cobot by hand-guiding the physical cobot with his/her hand; d) receiving information inputs on a virtual cobot representing the physical cobot, information inputs on a virtual lab cell representing the physical lab cell, information inputs on a plurality of virtual industrial cells (310, 311, 312) representing the plurality of cells of the industrial environment to be modeled, wherein each virtual industrial cell comprises a set of virtual industrial objects (302, 303, 304) representing a set of physical industrial objects (202, 203, 204) occupying the space of a corresponding cell of the industrial facility to be modeled, information inputs on the set of virtual lab objects (302, 303, 304) representing the set of the physical lab objects (202, 203, 204), information inputs on at least one additional virtual object (321, 322 323) not present in the lab cell; e) through the connecting software layer, connecting the virtual cobot and the physical cobot together so that when the physical cobot moves, the virtual cobot follows the movement in the virtual environment, and once the virtual cobot detects a possible collision, both the physical cobot and the virtual cobot receive a collision notification; f) generating a superimposed meta-cell by superimposing the plurality of virtual industrial cells (310, 311, 312) with the virtual lab cell so as to obtain a single superimposed meta cell comprising a set of superimposed virtual objects, wherein the single meta-cell is generated by reallocating all the virtual objects (302, 303, 304, 304, 321, 322, 323) from all the different virtual industrial cells (310, 311, 312) into the single meta-cell relative to each cobot base coordinates together with a virtual lab cell virtually representing the physical lab cell; g) positioning the virtual cobot in the generated superimposed meta cell; h) receiving inputs from the physical cobot's movement during teaching whereby the physical cobot is moved in the lab cell to the desired position(s) while providing, via the user interface, a visualization of the virtual cobot's movement within the superimposed meta cell so that collisions with any object are minimized; i) generating a robotic program based on the received inputs of the physical cobot's movement.