You can’t produce much torque by simply rotating the field without knowing where the rotor is: Which direction are you producing torque in? That depends on the position of the rotor. If you produce a static field and force the rotor by hand, it will initially oppose you, but push it a little more and the torque will flip the other way. The point of maximum torque production is just before the point it flips backwards.
Hoverboards use Hall sensors, which are a kind of low-resolution absolute encoder, designed for (crude) six-step commutation. They give you the minimum amount of info that you need in order to know which combination of phase states is next in the sequence - like the mechanical commutator of a brushed DC motor.
I say it’s crude, because it’s just enough info to ensure that the torque is always produced in the same direction. The disadvantage is that the magnitude of torque varies greatly with position - i.e. they have a lot of torque ripple.
If you want your wheels to work like a hoverboard, then you need to get wheels with Hall sensors, not incremental encoders. (maybe yours have Hall sensors as well, on different wires)
Whereas drones use a different assumption: A propeller has no load at low speeds, so they can spin the propeller (weakly) without feedback, until they are able to get a voltage signal back from the motor. From this, they can estimate the rotor angle. It’s called sensorless commutation, but it is only possible when there is no load at low speed, i.e. a propeller or fan.
For robotics, the most important thing is to be able to control the torque - we don’t just want a motor that produces an average torque in one direction (like a brushed DC motor or 6-step commutated BLDC motor) we need to be able to control the torque to a fine degree, even at stall. To do that, the angle of the field is always kept at the point where it produces the maximum torque, and we vary the magnitude. But to keep that angle, we need accurate position information.
Many people use ODrive for wheeled robots (and other robotics scenarios where you cannot mechanically disconnect the load, such as a robot arm) and for these applications you have two options:
- Use an encoder with an index pulse, so that you just need to move the motor a little bit to know where the zero position is for the incremental encoder
- Use an absolute encoder e.g. ODrive supports AS5047p and MA732 SPI encoders.