I am building a 2d delta arm where I use an ODrive to control two 660W BLDC motors. I am only controlling the motors within a range of approximately one revolution, which I guess is quite unique. The faster I can control the motors the better the system performs, so I am trying to maximize acceleration and deacceleration as much as possible without compromising too much on accuracy.
But when I made the jump from fw-v0.4 to fw-v0.5 the accuracy of the system diminished considerably. I think main reason for this is that acceleration and deacceleration is much slower. I do not know if this is due to some changes in how the control loop works on the new firmware or if I just have not configrued my ODrive properly.
How can I increase acceleration and deacceleration on the controller to it’s absolute maximum?
For the record I was not using any brake resistors when I was running fw-v0.4 and now I have been trying 0.5 Ohm resistors with the fw-v0.5 without any success. I’ve been running position control without any trajectory planning.
The best way to test this is to run the ODrive GUI and test movement performance while graphing input and estimated position and measured Iq and Id currents.
A few variables to tune would be:
Note: depending on which firmware version you are running, your variables may be in other locations than mine.
If you modify
current_lim_margin be sure to change
requested_current_range so that it is bigger than the total of those two.
For maximum position performance you probably want to set:
odrives.odrive0.axis1.controller.config.input_mode = 1 // INPUT_MODE_PASSTHROUGH
You will run into errors when testing this way. These errors will give you information about which settings or parameters are limiting you. You can look them up in the code or the documentation.