The BodyAngularVelocity object applies a torque (or rotational force) on a BasePart such that it maintains a constant angular velocity as determined by its BodyAngularVelocity/AngularVelocity|AngularVelocity property. This allows for the creation of parts that continually rotate. It is the rotational counterpart to a BodyVelocity. If you would like to maintain a constant angular displacement, use a BodyGyro instead.
The BodyAngularVelocity/AngularVelocity|AngularVelocity property (visualized above as a green line) controls the goal angular velocity of the applied torque: the direction of the DataType/Vector3 is the axis which the part rotates around, and the magnitude is the speed in radians/s. The BodyAngularVelocity/MaxTorque|MaxTorque property controls the maximum amount of torque that can be applied to the object, while the BodyAngularVelocity/P|P property controls the amount of power used in applying the torque.
Tip: Regarding the BodyAngularVelocity/AngularVelocity|AngularVelocity property, you can multiply a DataType/Vector3 by math.rad(360), or 2π, in order to convert angular frequency (rotations per second) into the desired angular velocity (radians per second). For example: Setting BodyAngularVelocity/AngularVelocity|AngularVelocity to Vector3.new(0, 1, 0) * math.rad(360) ≈ Vector3.new(0, 6.283, 0) will cause a part to spin around the Y axis once per second.