odrive.utils

class odrive.utils.BulkCapture(get_var_callback, data_rate=500.0, duration=2.0)

Asynchronously captures a bulk set of data when instance is created.

get_var_callback: a function that returns the data you want to collect (see the example below) data_rate: Rate in hz length: Length of time to capture in seconds

Example Usage:

capture = BulkCapture(lambda :[odrv0.axis0.encoder.pos_estimate, odrv0.axis0.controller.pos_setpoint]) # Do stuff while capturing (like sending position commands) capture.event.wait() # When you’re done doing stuff, wait for the capture to be completed. print(capture.data) # Do stuff with the data capture.plot_data() # Helper method to plot the data

exception odrive.utils.OperationAbortedException
odrive.utils.dump_errors(odrv, clear=False)

Prints a summary of the error status of the device on stdout.

odrive.utils.format_errors(odrv, clear=False)

Returns a summary of the error status of the device as RichText.

odrive.utils.fw_version_str_to_tuple(version_string)

Converts a version string to a tuple of the form (major, minor, revision, prerelease)

Example: “fw-v0.3.6-23” => (0, 3, 6, True)

If version_string does not match the pattern above, this function throws an Exception.

odrive.utils.print_drv_regs(name, motor)

Dumps the current gate driver regisers for the specified motor

async odrive.utils.ram_osci_run(odrv, expressions, trigger_point=0.0)

Configures the RAM oscilloscope with the specified expressions, optionally triggers it and waits for it to finish before downloading the data.

trigger_point: A number in [0.0, 1.0] or None.

If None, it is expected that a custom trigger in firmware is used after configuring the osci.

odrive.utils.rate_test(device)

Tests how many integers per second can be transmitted

odrive.utils.start_liveplotter(get_var_callback: Callable, legend: List[str] | None = None)

Starts a liveplotter. The variable that is plotted is retrieved from get_var_callback. This function returns immediately and the liveplotter quits when the user closes it.

odrive.utils.usb_burn_in_test(get_var_callback, cancellation_token)

Starts background threads that read a values form the USB device in a spin-loop