High-Level Questions about Quadruped Application

Hello, I’m designing a 3DOF quadruped leg. I’ve got a single actuator (motor, gearbox) functioning with the ODrive web GUI.

I’m going to be designing the leg now, and since I don’t know much about electronics, wanted to ask for some help on how I’ll need to approach things, and how the ODrives will integrate into everything.

I’ll be using 3 ODrive S1s, all on the high-speed side of my actuators. I purchased a teensy (which I’ve not used before, but, I’ve seen commonly used) and a 6S Lipo battery.

I apologize that this is all very vague, and very open questions. If there’s any resources specific to this type of question, or previous posts, feel free to link!

Some questions I have:

  • How will I need to wire my ODrive’s together, I assume I will daisy chain them, but what wires will I need? Want to purchase things so they get here for when I am done the leg design, since I’m on a short timeline

  • For the question above, I am asking about both power and actual communication between ODrives

  • Do I need to calibrate the ODrives with the motor alone? Can I just calibrate them when they’re part of the gearboxes already? I assumed I could calibrate it as a part of the gearbox, but never really did my due-dilligence

  • When I have my leg assembled, will I calibrate all my ODrives during that? Or will I need to have calibrated everything prior with individual gearboxes, and then assemble the leg using those previous parameters?

  • Is there any high level question I’m missing that I’ll need to keep in mind?

Hi! These are some good questions!

How will I need to wire my ODrive’s together, I assume I will daisy chain them, but what wires will I need? Want to purchase things so they get here for when I am done the leg design, since I’m on a short timeline

For multi-ODrive systems, we always recommend CAN – we have a CAN guide here, and a (teensy-compatible) Arduino example here. In that case, you just need to daisy-chain together the CAN connectors – we sell some cables to make that easy! I’d also recommend getting a USB-CAN adapter for testing/debugging, but that’s optional.

The only other thing you’ll have to figure out is power routing – that can be a bit more difficult to daisy-chain, so usually I think it’s worth just having a power distribution block or busbar in the robot body and then doing some cable runs to each ODrive. Alternatively if you feel comfortable soldering high gauge wires, you can do some wire splicing on a single wire run – I’ve gotten some incredibly sketchy things to work in my time :slight_smile: but that takes a bit more work than doing separate wires (and then makes it harder to individually power-down/disconnect a given ODrive, if desired).

Do I need to calibrate the ODrives with the motor alone? Can I just calibrate them when they’re part of the gearboxes already? I assumed I could calibrate it as a part of the gearbox, but never really did my due-dilligence

Encoder calibration is generally sensitive to load on the motor. It has some robustness/resiliency towards frictional/inertial load (e.g. an unloaded motor with a gearbox), but biased loads (such as a system under gravity) will very easily invalidate a calibration. It’s theoretically better to just calibrate with the bare motor, but if it’s just motor+gearbox (and it isn’t some incredibly high friction gearbox), there’s effectively no difference or loss of calibration accuracy. The one thing to avoid if possible is calibrating with the gearbox connected to the joint already, as gravity will act as a biased load. You can improve calibration resiliency towards loads by increasing the calibration lock-in current to around 3/4 of the maximum continuous current of your motor – see here.

When I have my leg assembled, will I calibrate all my ODrives during that? Or will I need to have calibrated everything prior with individual gearboxes, and then assemble the leg using those previous parameters?

I would recommend calibrating the gearboxes individually without anything connected. However, if you do need to calibrate with everything as a final system, I think that as long as you turn the robot on its side side (so that the gearbox axis is perpendicular with the floor, e.g. no gravity acting to load the gearbox in one direction or the other) and crank the calibration lock-in current to near the motor’s max continuous current, it’ll be just fine.

Is there any high level question I’m missing that I’ll need to keep in mind?

I think you got it overall!