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):
Configuration setup(software):
Testing Process:
Ensure ODrive is connected to a laptop and wired correctly
Add 5 V fuse to positive terminal of power supply
Open the odrivetool in an anaconda terminal
Start with a calibration for axis0 and axis1:
odrv0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
Switch to closed loop control for axis0 and axis1:
odrv0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
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
All 6 axis on 3 odrives are working correctly on motor gearbox set L2
All other joints are likely to experience manufacturing tolerancing issues
Suggesting Next Steps
Set up encoder motor set on skeleton board for software and firmware to test while mechanical fixes drive train issues
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
Mechanical side will RCA on manufacturing and assembly side
Grease the turning parts or using bearings to make connection smoother. Believe performance will be even better than now with working L2 set up
Need to test all the motor without load and test the motor functionality
Add On Follow Up Test
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
2 hypothesis: motor is bad, needs to be replaced
Odrive protection mechanism for different tuning motors
Internal fixture is causing additional friction
Observation: when force is being added on bad motors over current limit is not stopping the motor, causing overheating
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:
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