I am undertaking a design project at the moment: https://hackaday.io/project/154264-rm1-an-affordable-industrial-robotic-arm
…that uses the ODrive to drive the six motors that form the basis for my robotic arm.
Previously my idea was to have each joint with its own independent PID controller, with each PID controller being fed continuous joint angle commands from an IK solver (requiring three regular ODrives). This will probably work just fine, but if possible, I’d like to implement a controller that offers better performance.
There are some papers (e.g. https://arxiv.org/pdf/1506.09084.pdf) that demonstrate model predictive control of robotic arms, which seems much better than what I’ve described above.
This control implementation would necessitate a 6-axis servo controller - i.e. a device that can read the outputs of six encoders, do some combined control computation, and output torque commands to the six corresponding motors at high frequency as part of its control loop.
At the moment, I don’t believe the current ODrive is capable of this (as most other servo drives aren’t), but is there any feasible way to redesign the ODrive without too many modifications to allow it to control six axes instead of two?
If anyone has any ideas on how I might be able to accomplish this, your comments are much appreciated.