Hi,
I can’t find any option to export or capture data like vel_estimate? any ideas how to do it ?
Adrian.
Hi,
I can’t find any option to export or capture data like vel_estimate? any ideas how to do it ?
Adrian.
There is no option that I know of right now, but…
Launch ODrive tool then paste these functions into the interpreter:
# Convert to nested list structure for CSV output (outputs as rows instead of columns)
def convert_list_for_csv(input_list):
return list(map(lambda element: [element], input_list))
# Output a given list to a CSV file
def write_output_to_file(input_list, file_name):
output = convert_list_for_csv(input_list)
with open(file_name, "w", newline='') as csv_file:
writer = csv.writer(csv_file, delimiter=',')
writer.writerows(output)
print("Output written to", file_name)
Now when you sample your data (using odrivetool), just save it to a list:
# Move and record velocity estimate
from time import sleep
velocity_list = []
def move_and_log(position):
odrv0.axis0.controller.input_pos(position)
# trajectory_done requires using the motion planner but you could use a different conditional
# such as vel_estimate > x or elapsed time
while not odrv0.axis0.controller.trajectory_done:
velocity_list.append(odrv0.axis0.encoder.vel_estimate)
sleep(0.01) # Need to prevent overloading the ODrive's communication interface. Increase / decrease as needed
Hope this helps