initial beep sound

Hi everyone,
I’m Nicholas from Italy.
My first problem is to lower the
initial beep volume of the initial calibration.
my marriage is in danger. Help, how to limit it?

After you have done the AXIS_STATE_MOTOR_CALIBRATION, you can save it so you don’t have to do it again:

  • If you are looking to start your machine as quickly as possible on bootup, also set <axis>.motor.config.pre_calibrated to True to save the current motor calibration and avoid doing it again on bootup.
  • Save the configuration by typing <odrv>.save_configuration() Enter.
  • Reboot ODrive after saving: <odrv>.reboot() Enter.
1 Like

hello and thank you for being so kind.
I would like python to make a series of angular positions through my_drive.axis0.controller.move_to_pos (N) to my engine but …
if I give the commands without a waiting time, the engine naturally gets confused.
I tried to calculate the precise execution time of the cycle (acceleration, linear motion and deceleration) but if the laps to do are few in number to make the calculation and therefore risk between one position and the other to see or the engine stopped or that does not end the movement
The best solution seemed to me to put a loop while the comparison between the encoder read and the angle position
while readingEncoder! = posAng:
my_drive.axis0.trap_traj.config.vel_limit = speed
my_drive.axis0.controller.move_to_pos (posAng)
readEncoder = round (my_drive.axis0.encoder.pos_estimate)
print (letturaEncoder)
but arrives well in the vicinity of the final reading then it takes a few seconds to ‘center’ it well.
How can I do? Thanks in advance

Use the Trapezoidal Trajectory planner, and look for it to change control modes after issuing a move. Use <odrv>.<axis>.controller.move_to_pos(<Float>)
and then
<odrv>.<axis>.controller.control_mode. This will prevent it from needing a lot of time to settle, and is easy to look for.

See Trapezoidal Trajectory Planner

Did you ever figure how to reduce the volume of the beep? It’s unnessarily loud and annoying. I am in the process of adjusting calibration and it has be be beeped over and over. Really need a volume control on this thing.

You shouldn’t ever need to run the motor calibration more than once – it gets saved across reboots. The volume is going to be dependent on the motor construction – it’s nearly silent on some motors, it’s just the outrunner style motors where it’s really loud.

Well the calibration passes but the performance isnt good. So Im tweaking setup parameters and calibrating again. Is this not correct? Why argue about this instead of making it possible to adjust the volume? Its too loud.

Oops, sorry if I didn’t explain – the beep is actually part of the calibration. Specifically, to measure the motor inductance, the ODrive sends a square wave voltage across the motor phases, and measures the current ripple. This physically flexes the motor rotor, causing it to act like a big speaker, which is the beep you’re hearing.

You can reduce the volume by reducing resistance_calib_max_voltage, but this will decrease the accuracy of the calibration.

All that being said, as long as the motor resistance/inductance calibration passes successfully, the values you’ll get will almost certainly not have any effect on the motor’s performance. As well, a lot of the tuning for best performance happens after the initial setup/calibration.

Could I ask which ODrive you’re using? And what are the actual performance issues you’re having? Happy to help give some recommendations/diagnosis given that.

Thank you for this explanation, far easier to understand why the sound is as it is. Good to know that I don’t really need to keep calibrating also. It wasn’t clear to me that some of the settings in the calibration phase wouldn’t be retained and used for future motion (well they will be retained but not used). So I think I understand you to be saying that all of those settings and the calibration itself are only to determine fundamental motor characteristics and get the position of the sensors aligned.

1 Like