Odrive + Klipper/Danger Klipper: A few questions, some on fesability

I’ve been considering using the Odrive for a custom 3d printer build based on a Tronxy x5sa. However, I do no know how it works or what moters I can use. I’ll list everything below in more detail.

  1. Does it need to specifically be the servos from Odrive, or do servos like these work?

  2. Any advantages of the Odrive S1 over the 3.6 clone from MKS? I know the 3.6 is what Simon Vez used for a while but it gave him issues from what the dev of the proto1 told me.

  3. Can the Odrive be controlled from a headless device over USB i.e. the host for Klipper firmware, and how much processing power does it need from the controlling computer.

  4. How do these behave with resonance compensation? Klipper has input shaping but danger klipper on the bleeding edge branch has input smoothing, which uses polynomial functions. Similar issues with skew correction as well?

That’s all the questions I have right now.

Hi there!

  1. One of the advantages of the ODrive is that it’s compatible with just about any brushless motor out there! That being said, what you linked is a stepper motor, not a brushless motor. Any brushless motor with a compatible encoder should work just fine - keep in mind many come with hall sensors, which are too low resolution for the sort of precise positioning you need for a 3D printer - you’ll want something either with an integrated incremental encoder, or something where you can add your own (we recommend this one for most applications - it’s extremely high resolution, but others can work).
  2. I cannot even begin to state how much better the ODrive S1 is :wink: . I’m of course biased since I designed the thing, but in short, all v3.6 clones are made using shockingly cheap knockoff parts, so you will have issues. The v3.6 design in the first place is pretty flawed, it was designed for hobby applications and not the sort of industrial reliability and performance we’re targeting these days with the new-gen ODrives (S1/Pro), so S1 will provide immensely increased reliability and performance over anything v3.6. Additionally, the S1 is compatible with our newest generation of firmware, which adds even more improvements and fixes. I’d strongly recommend going with an S1 over a v3.6, and I’d never recommend going with a knockoff v3.6.
  3. Sure, you can control with a headless USB device. That being said, I’d recommend against it – USB isn’t deterministic (there are unknown/uncontrollable delays due to how the protocol works), so I’d strongly recommend using either UART or CAN – the latter is vastly preferred due to its added robustness. That being said, ODrive also has step/dir pins, which can work as a fallback (and are likely just fine).
  4. I can’t say I’ve used a Klipper based system before. But if the ODrive is suitably tuned, with a high-resolution encoder, it’ll follow any input command given to the extent of the motor/encoder pair’s theoretical performance. You can track extremely high frequency position commands, so it shouldn’t be an issue to follow whatever the Klipper controller’s putting out – especially if it works with stepper motors in the first place.

To add to 3 and 4, klipper can only really control steppers/servos with step and dir pins at current. It also needs an enable pin for steppers so hopefully odrive works with that. It might be possible to use PWM to control DC motors from a fan header but they usually don’t give a lot of power I think.

Also I asked about headless so I can send commands to it via Klipper’s macro system + gcode shell commands. Klipper is built to run on Linux in a headless situation, unless you add klipperscreen then it will add a X11 desktop to run that. Basically it would be: Macro > gcode shell command > serial USB > odrive. That’s for sending non important commands or updating its firmware.

I could also mount the folder the .txt file is in or create a symlink, assuming it’s stored on the host, to the folder the Klipper configs are stored in so I can change stuff in Fluidd.