Weird outputs when running motor (vel_estimator problem?)

I’m trying to run a Portescap 35ECS80 10B 11 motor with my odrive pro, but whenever I try to control with velocity, it’ll move for a second and then error out and stop with the position oscillating and the velocity running away. Any idea what could be going on? I’ve tried playing around with the gains and setting no integrator gain and setting the velocity gain very low but nothing. It seems to calibrate just fine.

Interesting! Can you show your config, either via screenshots of each page in the config tab, or via the “python commands” page on the final config step?


here ya go!


it seems like something is going on with the velocity estimator

Yeah, I’m not sure why the velocity estimator thinks you’re going at 2000k rev/s, that’s a lot :slight_smile:

Two questions:

  1. When running the calibration in the GUI, when the motor slowly spins in one direction then the other, is there any load on the motor? Does it seem to spin smoothly? I may recommend changing motor current limit and calibration lock-in current both to 15A and trying again, ensuring there’s no load on the motor.
  2. When the ODrive is in idle, and you move the motor just by hand, does the vel_estimate seem reasonable? Or does it spike super high again like this?
  3. Does this issue only show up at very high speeds, or does it persist even at low speeds?
  4. Does the velocity estimate settle to zero when the motor’s not moving, or does it stay at those high speeds?
  5. Any possibility this could be a wiring issue? Would you be able to send some pictures of the wiring from the motor/encoder to the ODrive?
  1. During calibration, it feels a little rough but for the most part is spins smoothly. I can definitely try changing the current limits and get back to you.
  2. When in idle, even it starts at 0 for everything, spinning the shaft manually causes the vel estimate to go crazy as shown.
  3. Happens at all speeds.
  4. Velocity estimate continues to climb as shown even after the odrive has errored out and the motor is not spinning. Sometimes when I unplug the odrive to reset the values, it’ll actually still think the velocity is increasing after I’ve plugged it back into my laptop.
  5. I’ve double and triple checked my wiring, even with my EE friend when I asked him. The encoder setup works perfectly fine on another motor I have so I don’t think that’s an issue. I can still send a pic if you’d like.

Okay, that’s super weird.

Could you let me know the value of the following:

hall_encoder0.config.hall_polarity
hall_encoder0.config.edge0
hall_encoder0.config.edge1
hall_encoder0.config.edge2
hall_encoder0.config.edge3
hall_encoder0.config.edge4
hall_encoder0.config.edge5

The image you showed of the hall states is also pretty weird. Was the image you showed with the motor not moving / ODrive in idle?

We had a hall-related bug but that was fixed in 0.6.11 (which it seems you’re running). Could you try downgrading to 0.6.10 and seeing if this issue persists? You’d likely run into the bug when actually running the motor, but if hall behavior seems reasonable at low speed / when turning the motor by hand, that could definitely indicate some sort of regression. Very weird though that this hasn’t shown up with any other customers.

One last thing – if you have an oscilloscope, it would be great to see the actual hall levels as the motor is turned (slowly) by hand.

Also, does this still happen with axis0.interpolator.config.dynamic set to False? Will need a save_configuration() (while ODrive is in idle) before the setting takes effect.