1. A method for programming a robot comprising: creating an immersive virtual environment (IVE) using a virtual reality system (VRS); receiving, by the VRS, parameters corresponding to a real-world robot; creating, by the VRS within said IVE, a virtual robot, wherein the virtual robot is a simulation of the real-world robot based on the received parameters; transmitting, by the VRS, a representation of said IVE to a user; receiving, by the VRS, input from the user, wherein said VRE is configured to allow the user to interact with the virtual robot using said user input; providing, by the VRS within said IVE, robot feedback to the user, wherein said robot feedback includes a current state of the virtual robot; training, in the VRS, the virtual robot in the IVE by the user; and programming, by the VRS, the real-world robot based on the virtual robot training.