Progress Update

A project log for ODrive - High performance motor control

Hobby brushless motors are incredibly cheap and powerful. However we need a way to make robots out of them. ODrive is that way.

Oskar WeiglOskar Weigl 03/10/2017 at 01:486 Comments

It's time for an update.

There has been some significant progress on the software including two major new features. The v3.1 hardware that I wrote about in the previous post has been further tested, this time not only by myself, but by several early developers. We managed to find only one serious hardware bug so far, which is fixed by replacing four capacitors. With the fixes to those bugs, the alpha testing stage is around the corner.

New Features

Two new major features are ready: USB Serial and brake resistor control.

USB CDC - The main way for the ODrive to communicate with a PC or embedded computer (such as the RaspberryPI) is via USB Serial (aka USB CDC). This interface will be used both for sending configuration and commissioning commands, and interfacing with existing tools that have G-Code style output. With further extension, it can also support binary, and various application specific, protocols. Yay for open source.
With significant help and contribution from @nickaknudson we now have a working USB CDC interface, which runs in a task parallel to the motor control tasks. The current implementation is very basic, it parses the commands and relays position commands directly to the motor control task. Going forward we will add trajectory generation to support coherent movement between multiple axes. Then we can handle the basic G0 and G1 G-Code "go-to" commands.

Brake resistor - Software support for a brake resistor is now in place. This means that we can safely dissipate the energy absorbed when decelerating. This is important since many power supplies cannot handle reverse energy flow. The implementation has the two motor controllers estimate their power draw, and then calculates the net power draw from the power rail. If it is negative in total, the pulse width of the brake resistor control is set to exactly dissipate and hence cancel this power.

Demo - In the above video you can see a demo of both features.

Hardware bug found

Everyone knows that voltage amplifiers have high input impedance, and low output impedance. Right? Well, apparently not.

Above is a figure from the DRV8301 datasheet. 100 ohm output impedance doesn't qualify as low output impedance in my book... So this extra output impedance is causing a way too large "R" in the RC filter that filters the current sensor output. Hence the current sensing is way too slow, and barely usable.

The fix involves replacing the capacitors highlighted in green painted labels with 2.2nF capacitors.

Replacing 0603 capacitors on lots of boards gets quite tedious. Nevertheless, I don't want to ship out any of the remaining ODrive 3.1 boards with known errors on them. As you can see, I have 8 left, and they should all work now. If you are interested in claiming one of them, sign up for an Initial Development board on this form.

Crowdsourced Testing

I'm incredibly grateful for the people who were brave enough to pay for a board that was completely untested and with missing core features, and generous to spend their time helping to test those features as the were being brought up. You know who you are: Thank you!

Below are some videos of some ODrives out there ;D

ODrive v3.2 and Alpha Testing

Already almost 200 of you have signed up for a board and at the same time shared with me the amazingly diverse projects that you want to use ODrive for. There were many projects that I expected like 3D printers, CNC mills, and Pick and Place machines. However there were so many cool and diverse projects I didn't expect. Here are some examples that was mentioned by more than one person each:

I aim to have a quote ready for the manufacture of ODrive v3.2 at the beginning of April, and with that, I will open pre-orders for the Alpha release. I will send an email to everyone signed up on the google form. It will also be possible for anyone else who wants to join in during the couple of weeks that the pre-order is open, before manufacturing starts.

Full Throttle

The project is gaining momentum. With the fantastic response from the community, I am motivated to spend more time on this. In April, I will quit my current job, and I will be able to work on ODrive full time. This should lead to approximately a factor 8 increase in my contribution rate.

Lets do this!


volatile666 wrote 03/10/2017 at 19:13 point

Oh yes, its alive! I love it!
Seeing all those small power supplies... Have you ever tested the current/power limit the board will take? I could help you with that...

  Are you sure? yes | no

Oskar Weigl wrote 03/10/2017 at 19:21 point

I haven't dared pushing it yet. I want to get a thermal camera first.

If you want to do some experiments, please go ahead ;D. Just make sure you don't set the current limit to over what the current sensors can measure. If you do it will just blow itself up xP

  Are you sure? yes | no

volatile666 wrote 03/10/2017 at 19:48 point

I do have access to a good thermal camera, 200A PSUs and all that stuff (I guess the limit will be well below 200A? I could go higher if needed). Ill just have to wait for my board to arrive (in the next development phase).
I also have some big motors (250A) I could throw that power at, just need to think of a way to mechanically load them...

  Are you sure? yes | no

Oskar Weigl wrote 03/10/2017 at 19:50 point

@volatile666: Sweet!! At my old work we tested the vehicle traction motors with a back-to-back rig where two motors drove each other, and the power was just circulating around on a shared DC bus.

  Are you sure? yes | no

Douglas Plumley wrote 03/10/2017 at 17:19 point

Looking awesome Oskar!  Hoping to get involved at some point in the near future for some exosuit fun :)

  Are you sure? yes | no

Oskar Weigl wrote 03/10/2017 at 17:22 point

Please do! ;D

  Are you sure? yes | no