Close
0%
0%

TipTap

A 3d-printed bipedal robot.
A desktop option for semi-direct drive walking research.

Public Chat
Similar projects worth following
By keeping things small I aim to create a sub $500 walking robot that can be used to test out control algorithms and simulation fidelity using semi-direct drive control.

I started this project in 2017 as a way to teach myself how all this stuff works on weekends. Advice is very much appreciated (This is all a learning experience for me). Thanks for looking and have a great day!

A Brochure of design goals for the project (which are no where near complete):

Work so far:

As a first step I built a Port-Hamiltonian simulation framework in MATLAB, in order to teach myself the low-level math/physics. It turned out to be extremely slow, and so I could only use it for 2D sims. Here is my first attempt at a low-cost heuristic based stabilization controller (very Monty-Python-esc I know).

More recently I've moved to an articulated body Featherstone simulation framework in MATLAB. Here is another even simpler heuristic based control scheme:

Eventually I'll work on efficiency and stability, but for now this does have the advantage of being naively extensible to arbitrary N-Jointed x N-Limbs without a training period. My next steps are to progress more on the hardware end in order to test any controllers on actual hardware.

On the hardware end, I made many many early mistakes, including under-sizing motors and components. I created a small 3d-Printable 9:1 planetary gearbox that overlays each motor which fixed that issue:

Here is a video of an early prototype leg:

The cable design turned out to be very difficult to work with and produced unnecessary strain on the motor housing, so I moved to a belt/gear design even though it adds weight. The 9:1 planetary 3d-printed gears also needed a redesign to produce better printer yields. The next iteration included more robust components, though it's far from a final design. Producing such small parts in order to try and conserve weight and size means I'm always finding new bottlenecks that need to be fixed.

My current learning/fumbling is focused on driving the BLDC motors, I'm currently experimenting with ODrive, though its form factor will require more redesign.

EndeffectorTorqueHoming.gif

Example of 0-gravity end-effector torque control

Graphics Interchange Format - 2.79 MB - 01/05/2019 at 16:46

Preview
Download

Towards More Agile and Inexpensive Robotics 1_28_2018.pptx

A presentation about why I think this is an interesting project.

presentation - 28.63 MB - 01/05/2019 at 16:45

Download

  • 1 × BeagleBone Blue
  • 2 × ODrive
  • 24 × 623ZZ 3mm x 10mm x 4mm Shielded Deep Groove Precision Ball Bearing
  • 2 × AST 6706-2RS Thin Section Bearing
  • 72 × 96817A156 Thread Forming Screw for Thin Plastic

View all 13 components

  • Reducing lashing in leg/hip

    Darren V Levine02/09/2019 at 23:59 0 comments

    I updated the leg design with slightly thicker limbs and added a supportive bar on the external femur. The extra bar allows the belt to be tightened down significantly more, reducing play to a much more acceptable level. Here's a picture of the new leg all assembled and instrumented:

    Other progress:

    I'm did some more work to improve yield issues with the very small planetary gears on each motor (the teeth are the width of my printer's nozzle), in particular upgrading my 3D printer's firmware last weekend helped a bit. Although it is time consuming, a few more iterative tweaks are probably in order. Not having to resort to metal gears will be a huge cost/time saver in the final product.

    I'm using 333 degree potentiometers on each joint instead of encoders to significantly reduce cost and size. They produce a single analog signal that needs ADC sampling and kalman filtering (due to reduced performance in vibration). At the moment, I'm doing that in software on the beaglebone (located on the back of the robot), which works decently well. So, I'm hopeful this cut-corner will work out. However, I'll now need to either convert that signal to one compatible with the Odrive's discrete encoder inputs, or modify the Odrive's firmware to do the job. Still more tinkering to do on that front.

    As for the idea of building my own motor controller, after looking at the various resources and designs available such as Ben Katz's: http://dspace.mit.edu/handle/1721.1/118671#files-area, I'm both more excited about making a custom board, and more aware of how large of an endeavor it would be ( VESC (Best Open Source ESC) || DIY or Buy). So, I'll likely do it as a separate project once I'm happy with TipTap's base model platform.

    That's it for now. Thanks for looking!

View project log

Enjoy this project?

Share

Discussions

Chris wrote 02/13/2019 at 04:40 point

Those gears are very nice! What material are you printing in / what size nozzle?

  Are you sure? yes | no

Darren V Levine wrote 02/15/2019 at 07:51 point

Thanks! They're PLA. I'm using a lulzbot mini with a 0.5mm nozzle, I've been able to get about half of that at the tips on the gear teeth fairly reliably after adding some belt tighteners to the printer. Smaller than that and I end up needing to take too much time filing down the defects to get smoothly working gears, which is too bad because smaller teeth would allow me to fit more teeth on the smaller sun gear, and that would help a few operational aspects.

  Are you sure? yes | no

Asher Gomez wrote 01/09/2019 at 18:08 point

Nice project!

  Are you sure? yes | no

TTN wrote 01/09/2019 at 10:45 point

Any chance you'll post the files for this bad boy? You've done an incredible job of the CAD work. Looks fantastic but also very functional. I'm tempted to print one because it looks so awesome. I better not get sucked into trying to code it up to walk or balance! ;-)

  Are you sure? yes | no

Darren V Levine wrote 01/11/2019 at 17:52 point

Thanks! I will be posting files. But after I've done more design iterations/testing. The current printed prototype has a few flaws that I'd like to fix before releasing it to the public. Namely I need to design in more pre-loading into rolling direction of the legs, because right now flexure in the leg assembly lets the foot's end-effector travel an unacceptable 3/4 of an inch in the roll direction, though I am quite happy with the deflection in the pitch direction. I also need to finalize the motor driver design and account for that volume in the torso design, which isn't done at the moment.

  Are you sure? yes | no

Jarrett wrote 01/07/2019 at 17:28 point

Also, what BLDC motors are you using?

I've got some teeny tiny ones I'd like to using along with a cycloidal gearbox, but I don't have a good intuitive feel for torque numbers and how they "feel" in the real world.

  Are you sure? yes | no

Darren V Levine wrote 01/11/2019 at 17:44 point

Neither do I unfortunately. I ended up doing some lever arm calculations according to the size of my robot's limbs and an estimated final weight (with a factor of safety of only 1.5 because it's difficult to go higher). I then did some searching for BLDC motors that met those specs, unfortunately suppliers don't seem to always list torques, and there are plenty of high end options that would blow my budget (usually when an encoder is packaged into the motor), so I eventually settled on a "IPOWER MOTOR GBM3506-130T". Since while their 1.5KG/cm torque isn't good enough for crazy stuff like backflips, it is good enough for walking and at only $18 a pop, helps keeps the entire assembly under my price target. I'll of course be testing their torque claim with my ODrive, and potentially selecting another motor if the results don't live up to their spec'd torque.

  Are you sure? yes | no

Jarrett wrote 01/07/2019 at 17:21 point

Watching this one closely, something similar has been on my "to-do" list for years!

  Are you sure? yes | no

Darren V Levine wrote 01/07/2019 at 00:57 point

Thanks! I hadn't seen any of those! Though the reference material Gabriel Levine just posted on his walker's ( https://hackaday.io/project/160882-blackbird-bipedal-robot ) project page has the under-actuated stuff in lecture-form it looks like. All this new material will keep me busy for a while!

I especially like the drake work. That's one of the things I'm really excited about, for this project. If I can make the hardware fairly reliable, and really cheap/accessible, then it should be fairly easy for the Drake team or anyone else to implement their work on my hardware. I would like to eventually get a few different controls schemes loaded onto the same robot to do comparison videos even.

Also, best of luck with your company! If you do eventually decide to work on developing a small version of the Odrive, do let me know, I would be an eager customer of something small with torque control and torque sensing. I agree about Odrive being overkill for a lot of smaller applications (even though I'm a huge fan of what they've accomplished).

https://hackaday.io/project/157586-powerful-brushless-dc-motor-drivercontroller is a wonderful project that takes a step in the right direction I think of giving out generic design diagrams, but the hurdle of using these pdf designs to customize -> source-parts -> layout-pcb -> manufacture a prototype board, means it just won’t reach as many people as something so accessible like ODrive. Sorry to hear your last attempts at humanoids didn't work out. I'm attempting to make all my mistakes on the small/cheap end of things, though now I'm discovering miniaturization has its own set of challenges :/

  Are you sure? yes | no

Gabrael Levine wrote 01/07/2019 at 04:09 point

Ben Katz did a great job designing a miniature brushless servo controller: http://dspace.mit.edu/handle/1721.1/118671#files-area

He published the design files, so I'd recommend starting there if you want to make a small driver board. They're using it in the in the Mini Cheetah and the Little Hermes biped (http://web.mit.edu/jlramos/www/LilHERMES_Robot.html), which is about the same size as your robot. 

  Are you sure? yes | no

anton.fosselius wrote 01/05/2019 at 07:16 point

Are you planning to share your files? Would love to contribute/help where possible.

Take a look at https://studywolf.wordpress.com

For control material ;)

Also look at :

http://gazebosim.org

For simulation.

Odrive supports 2 motors, so i guess you would need 2x odrives, what CPU/control boards are you looking at?

  Are you sure? yes | no

Darren V Levine wrote 01/05/2019 at 16:55 point

Thanks for the resources! I actually found this nice paper on different simulation tools when I started: https://arxiv.org/pdf/1402.7050.pdf , I ended up trying gazebo, but didn't like how little insight as to the mathematics it gave me, so I figured that by coding up my own, it would help me learn. Plus now I can re-code any portion of my matlab code into c easily for the final control software to make it lighter weight and run faster on my embedded system. Unfortunately as a side effect, my software is much slower, and has fewer features than something like Gazebo, but I think I've personally gained in that trade-off in mathematical intuition. Studywolf does mostly non-floating body, so I've found some of his work hard to translate, but I love how great he is at explaining things, and I hadn't read that particular post thanks! I did build upon his posts to develop my end-effector torque controller: (see the "EndeffectorTorqueHoming.gif" project file for an example).

I've been meaning to get into training schemes eventually, Berkeley's robotics lab has some absolutely fantastic papers that I've been reading: http://rail.eecs.berkeley.edu/code.html in regard to that sort of thing. I made a presentation about the need for robust learning schemes, heavily based on Sergey Levine's work awhile back (see the "Towards More Agile and Inexpensive Robotics 1_28_2018.pptx"  project file).

Yup, 2 Odrives will be needed if I go that route, though I'm hoping to find a smaller/cheaper alternative, since that would be the difference between a $300  robot and a $500 robot and quite a bit of bulk. Unfortunately my weakest area is circuit design, and so designing my own purpose built board for that may not be feasible in the near future, even though I would like to learn how.

The current control board enclosed on the robot in the pictures is a "beaglebone blue", fairly cheap, and has all the sensors/IOs/processing-speed I need for control and state estimation.

As for collaboration, I'd love to! Though all my work is in a very unfinished/non-production state at the moment (and I don't always have that much free time to work on this), so I was planning on releasing files once they would be more useful to a larger audience. If you have any ideas for collaborations just let me know :)

  Are you sure? yes | no

anton.fosselius wrote 01/06/2019 at 08:55 point

have you seen https://projectchrono.org

I just recently got notified about it. saw that it was not included in the paper.

I just quit my job on an IoT/GPS tracking company and are starting on a RnD electronics company, will work with electronics, ASIC/FPGA and firmware development. developing a motor control board for small bipeds are quite high on my todo list. I find Odrive/VESC to be overkill for smaller robots, have been looking on some Quadrocopter control boards but not yet found something that fits my needs.

My longtime goal have been to develop a full size humanoid for less then 1000$ initial inspiration was CHARLI and then Cassie. But have so far only produced 3 biological bipeds that turns out to be a real timesink, and way out of budget  ;)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates