A method for measurement of three-dimensional welding torch orientation for manual arc welding process, comprising: - receiving by a computer system signals from an inertial measurement unit IMU affixed to a welding torch; characterized by - analyzing by said computer system said signals to detect whether said welding torch is in quasi-static equilibrium; - generating by said computer system a gravitational acceleration vector based on a portion of said signals received while said welding torch is in said quasi-static equilibrium; and - performing by said computer system during welding a real-time calibration of said inertial measurement unit based on said gravitational acceleration vector, wherein said performing said real-time calibration comprises determining the angle between an axis of a coordinate system of said inertial measurement unit and said gravitational acceleration vector; - determining orientation of said inertial measurement unit in real-time based on said signals and based on the values determined during said real-time calibration; and - processing said signals using a quaternion-based unscented Kalman filter and an auto-nulling algorithm, wherein the unscented Kalman filter is designed to estimate the three dimensional orientation with the rotation quaternion included in its state vector, and wherein the auto-nulling algorithm is expressed by wherein s ω is the angular velocity of the IMU sensor, s ω i is the angular velocity at i th /present sampling time, i.e., at time i which is the present time, N is the number of the readings needed to calculate an average/mean, μ s is the estimate of the angular velocity in the initial period when the IMU is set still: with s ω k ( k = 1,..., M) being the angular velocity reading from the still period, μ ( i) is the mean of the angular velocity at i th sampling time when the IMU is judged to be at still: with N being the number of readings from the IMU after being judged to be still, and s ω k ( k = i - N,..., i) being these readings, μ ( ξ) is the most recently updated (at time ξ<i) drift of the IMU sensor that is available at the present time i. - receiving by a computer system signals from an inertial measurement unit IMU affixed to a welding torch; characterized by - analyzing by said computer system said signals to detect whether said welding torch is in quasi-static equilibrium; - generating by said computer system a gravitational acceleration vector based on a portion of said signals received while said welding torch is in said quasi-static equilibrium; and - performing by said computer system during welding a real-time calibration of said inertial measurement unit based on said gravitational acceleration vector, wherein said performing said real-time calibration comprises determining the angle between an axis of a coordinate system of said inertial measurement unit and said gravitational acceleration vector; - determining orientation of said inertial measurement unit in real-time based on said signals and based on the values determined during said real-time calibration; and - processing said signals using a quaternion-based unscented Kalman filter and an auto-nulling algorithm, wherein the unscented Kalman filter is designed to estimate the three dimensional orientation with the rotation quaternion included in its state vector, and wherein the auto-nulling algorithm is expressed by wherein s ω is the angular velocity of the IMU sensor, s ω i is the angular velocity at i th /present sampling time, i.e., at time i which is the present time, N is the number of the readings needed to calculate an average/mean, μ s is the estimate of the angular velocity in the initial period when the IMU is set still: with s ω k ( k = 1,..., M) being the angular velocity reading from the still period, μ ( i) is the mean of the angular velocity at i th sampling time when the IMU is judged to be at still: with N being the number of readings from the IMU after being judged to be still, and s ω k ( k = i - N,..., i) being these readings, μ ( ξ) is the most recently updated (at time ξ<i) drift of the IMU sensor that is available at the present time i. s ω is the angular velocity of the IMU sensor, s ω i is the angular velocity at i th /present sampling time, i.e., at time i which is the present time, N is the number of the readings needed to calculate an average/mean, μ s is the estimate of the angular velocity in the initial period when the IMU is set still: with s ω k ( k = 1,..., M) being the angular velocity reading from the still period, μ ( i) is the mean of the angular velocity at i th sampling time when the IMU is judged to be at still: with N being the number of readings from the IMU after being judged to be still, and s ω k ( k = i - N,..., i) being these readings, μ ( ξ) is the most recently updated (at time ξ<i) drift of the IMU sensor that is available at the present time i.