To answer why… We need to control one brushless motor already. I have experience with the VESC and the Odrive, but I like the Odrive more. The brushless motor is the robot wheel drive motor aka the traction motor. The brushed motor is for steering.
So I need to control two motors. The Odrive is perfectly capable (electrically) of driving a brushed motor (i’ve designed several of my own brushless motor controllers).
We were going to use a separate brushed motor controller, but I realized it simplifies our overall system to use a single motor controller architecture. Also our robot is large and driving two traction motors with the Odrive would mean long encoder and phase wires, which is undesirable. I’m comfortable with software development on embedded systems so I’m not afraid to try something unsupported - thats what makes Open Source so valuable!
Thanks @jalbob for the heads up on the measure phase resistance section. Yes I would make a new motor type. The FOC part is easy as commutation on a brushed motor is fixed of course, so it’s more about where all I need to touch the code. If I proceed with this I will try to set up a fork on my github so others can see what I am doing, and hopefully it could lead to a pull request. Even though the Odrive is slightly more controller than I need for this one motor, its low cost, open attitude, and its ability to drive our brushless traction motor all make it attractive here.