VFD on the motor and a Proximity sensor or photo eye looking at something on the shaft of the rotating element. When a Stop command is given, the VFD is put into a “Creep Mode”, meaning slow speed / low Hz. That then enables the sensor and when the target passes, the VFD goes into Braking mode to stop the agitator. Depending on the mass in the drum and the duty cycle involved, you may need a VFD with Dynamic Braking using external resistors. If the duty cycle is very low, ie once or twice per hour or something like that, you could just use DC Injection Braking which is built-in on most VFDs. The difference is that DCIB dissipates the kinetic energy of the rotating mass into the motor itself, so it adds thermal stress to it, whereas Dynamic Braking dumps that energy off into resistors as heat. If you can, you could use two sensors, one to put it into creep mode and use Dynamic Braking, the second one initiating the hard stop as you get closer to the final desired position by triggering DCIB.
You may need to play with it a bit in that if the stop command is initiated when the trigger point is too close, it may not be able to stop it in time. So what you do is to observe that time it takes to stop and put a timer in that sensor circuit so that if the sensor is triggered before there is enough time to stop, it lets the agitator go around one more time in creep mode.
You COULD do this with an encoder or resolver, but honestly, that’s going to be more complicated than you might think. But we don’t know your level of programming savvy, so it’s up to you to decide. Using an encoder/resolver is more of a “motion control” application which means constantly tracking the position at all times and divining a deceleration profile to get the load to stop at an EXACT spot. That then requires additional intelligence in the control system, which means higher costs etc. It didn’t sound as though you need that level of resolution.