Hi all, I’m still new to ODrive, recently got it about 3-4 days ago. I’m currently working on a 4-DOF robot arm controlled with an ESP32 and generated the joint coordinates with MATLAB Robotic Toolbox for the planned trajectory.
However, this requires the four motors to achieve its destination within the same time. I’ve seen functions like “odrv0.axis0.controller.config.input_mode = INPUT_MODE_TRAP_TRAJ”, but do not provide control over time taken. So now I ask if there’s a function or method to do this.
I suppose you could adjust trap_traj.config.vel_limit on the fly for each axis before each move…
This would be an approximation since you have acceleration and deceleration too, but you could probably factor that in.
Or yes, you could use INPUT_MODE_PASSTHROUGH or INPUT_MODE_FILTER_POS and set input_pos constantly. That’s what I do, and it works well. I am setting input_pos via CAN bus.
FILTER_POS is better because it will smooth out any sudden changes in setpoint, and you can configure the filter bandwidth to make it as smooth or aggressive as you like.