odrive R&D

Problem statement

UW Robotics uses odrive V3.6(NRND) as the motor driver to control the odrive 150kv brushless motor. The goal of this document is to describe the current drive setup and to give a guide on how to set up the drive if someone needs to test it. This document also contain characterization data of the current setup.

Environment Setup:

Wiring diagram(hardware):

image-20240522-001804.png

Configuration setup(software):

Testing Process:

  1. Ensure ODrive is connected to a laptop and wired correctly

  2. Add 5 V fuse to positive terminal of power supply

  3. Open the odrivetool in an anaconda terminal

  4. Start with a calibration for axis0 and axis1:

odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
  1. Switch to closed loop control for axis0 and axis1:

odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
  1. Test velocity with velocity control:

odrv0.axis0.controller.input_vel = *insert number*

Characterizing result:

  • mechanical motor interference may be causing too much torque, generating high currents

 

Testing result(May 22):

Environment setup:

  • 3 odrive and 6 motor + gearset

  • all the direction will be described in left and right relative to when a person is facing the skeleton board


Test 1:

Request the right most odrive to turn the right middle motor at speed 10 and 20

Result: both working as expected and are providing strong torque when trying to stop the turning

 

Test 2:

middle odrive and right last motor

Sent command for full axis calibration, calibration was completed, but when it was turning in reverse direction, observed motor was turning with difficulty. Decided to proceed with velocity testing at 10

7.5 A fuse, sent 3 closed loop control. First time the motor turned, then stopped, 2nd and 3rd did not turn motor locked in. Would twitch but not turn.

7.5 A fuse did not blow but wires are significantly heating, cause safety concern. Powered off after smelling smoke. Switch out alligator clips if overheating occurs.

 

Test 3: Used odrive 2 with left middle motor, calibration and velocity 10 ran as expected. Points towards mechanical issue with the mounting

 

Test Summary

  1. All 6 axis on 3 odrives are working correctly on motor gearbox set L2

  2. All other joints are likely to experience manufacturing tolerancing issues

Suggesting Next Steps

  1. Set up encoder motor set on skeleton board for software and firmware to test while mechanical fixes drive train issues

  2. If command send for close loop control does not work, power off and do not send additional commands as that will overheat motor driver in lock-in state. Motor driver and wires will overheat significantly and cause fumes and damage to rest of electronics

  3. Mechanical side will RCA on manufacturing and assembly side

  4. Grease the turning parts or using bearings to make connection smoother. Believe performance will be even better than now with working L2 set up

  5. Need to test all the motor without load and test the motor functionality

 

Add On Follow Up Test

  1. Started with L3 motor, in earlier testing was not giving enough torque. Took motor and encoder off drive train to test separately. When speed was set to 10, applied force on motor outer shell. Observed motor would stop when force is applied, then when force is taken off the motor would not recover rotation. Wire would heat up when this happens from current draw

    1. 2 hypothesis: motor is bad, needs to be replaced

    2. Odrive protection mechanism for different tuning motors

    3. Internal fixture is causing additional friction

  2. Observation: when force is being added on bad motors over current limit is not stopping the motor, causing overheating

  3. Note: Forces were added directly on outer shell of the motor. Performance would be better when it is mounted with the wheel

Summary

All 5 motors disassembled 3 motors were labelled as bad, other 2 performed strong torque resistance that we expected. More tests needed.

  • L3, R1, L1

Testing Results May 23rd

Test 1:

Retested the 5 motors, confirmed that 2 were behaving as expected exerting necessary torque while the other three would lock-in and draw too much current heating up the wires when torque was applied

Note: Some of the wires came out of the encoders, need to be addressed and fixed

 

Test 2:

Using the 2 good motors, mounted them onto the drive train, respectively R2 and R3. R2 ran as expected after being mounted, calibration was successful and motor ran for 1 minute at velocity 10 and 20.

R3 would go through calibration sequence but when ran at velocity it would lock-in. Hypothesis is mechanical issue with the mounting or alignment. Additional test to losen the screws mounting the drivetrain did not work, motor would not run in closed loop on velocity 10.

 

Test 3:

Took apart one of the bad motors (L3) from the fixture to test seperately from gearbox and fixture. Calibration would be succesful but motor would not exert sufficient torque when running at velocity. Same behavior as tests prior, when torque is exerted motor would lock/stop and draw current heating up the wires.

Summary of Results

R3 is likely a fixture misalignment/tolerancing issue as motor fixture runs as expected when not attached to drivetrain however doesn’t behave when it is mounted.

Other 3 motors could be broken, not enough torque. Further testing/research required to see if different drivers would help or if motors are just broken. Test results point that it is likely not a fixture or gearbox issue.

Next steps:

Test out the new spark drivers to see if they are compatible with the motors and if we are getting same results as the odrives

Take out the test motor and mount it to the fixture to see if that one works, if thats the case maybe buy replacement motors.

Outstanding tickets:

<action name>, <Assignee>

 

Reference and Datasheet
odrive software guide: Getting Started — ODrive Documentation 0.5.6 documentation

odrive V3.6: ODrive v3.6 (NRND) — ODrive

odrive 150kv: Dual Shaft Motor - D6374 150kv — ODrive

CUI AMT10E2-V capacitive encoder: https://www.cuidevices.com/product/resource/amt10e-v.pdf