Tag Archives: quada0

mjbots November 2020 Update

Here’s the approximately annual giant video update:

If you’re interested in any of the topics in more detail, I’ve collected links to individual posts for each of the referenced items below.

Thanks for all your support in the last year!

Moteus

Announcement of moteus r4.3: Production moteus controllers are here!

Automated programming and test setup: Programming and testing moteus controllers

Dynamometer: Measuring torque ripple, Initial dynamometer assembly

Continuous rotation: Unlimited rotations for moteus

The virtual wall control mode: New “stay within” control mode for moteus

Handling magnetic saturation: Dealing with stator magnetic saturation

moteus r4.5

qdd100

Discussion of the overall design, and details on individual sub-components:

And the pre-production mk2 servos: Pre-production mk2 servos

Accessories

fdcanusb: Introduction and bringing it up

power_dist: The failed r2, the closer to working r3, and the final r3.1

pi3hat: Initial announcement, bringing it up, and measuring its performance

Demonstrations

Ground truth torque testing: Ground truth torque testing for the qdd100

Skyentific’s telepresence clone: qdd100 telepresence demo

kp and kd tuning: Spring and damping constants

quad A1 – Hardware

Lower leg updates:

Chassis: The first introduction, and some minor tweaks

Cable conduit changes: New leg cable management

quad A1 – Software

Cartesian coordinate control: Cartesian leg PD controller

Pronking: Successful pronking!

tplot2 and its sub-pieces:

Simulation: Resurrected quadruped simulator

nrf24l01 transceiver and its sub-components

Smooth leg motion: Improved swing trajectory

Balancing

All four feet off the ground: Higher speed gait formulation, and Stable gait sequencing

Improved stand up sequence: quad A1 stand-up sequence part N

Speed records:

New quad raspberry pi interface board

With the new FD-CAN based moteus controllers I need a way for the raspberry pi to communicate with them.  Thus I’ve got a new adapter board in house that I’m bringing up:

dsc_0339

This one has 5 independent FD-CAN channels, an IMU, a port for an nrf2401l RF transceiver as well as a buck converter to power the computer from the main battery bus.

The prototypes were largely constructed by MacroFab, although I did the Amass connectors and the STM32s because supply chain issues prevented me from getting those parts to MacroFab in time.

Next I’ll start bringing up the various pieces!

Final lower leg assembly

After casting the feet, the final step was to join the lower leg with the 3d printed foot bracket.  This I just did with some slow cure epoxy.

dsc_0280

It seems strong enough for now, I was able to manually apply 10kg of load to a single leg while perfectly horizontal with no signs of stress, which should be good enough for a 4g 4 legged jump.

All the legs (and a spare) are now assembled with belts and a lower pulley ready to go on a robot!

dsc_0283

Casting feet

Previously, I described the overall plan for my improved foot.  To make that work, I needed to cast a 3d printed part into the squash ball such that it would likely stay attached during operation, be suitable rigid and yet damped, and do so repeatably.

To start with, I used a random single yellow dot squash ball with a hole cut in one side using a pair of side cutters.  For the casting foam, I just used Smooth-On Flex Foam-IT 17, which is what Ben Katz originally used at least.  Initially I just mixed up a batch, poured it in to a random level, stuck my bracket in and hoped for the best.

dsc_0219

Well, something sure happened!  But not exactly what I wanted.  The foam didn’t fill in the interior cavity, nor make a great connection overall with the bracket.  On top of that, the process wouldn’t exactly be described as “repeatable”.  Since I just eyeballed the level of foam, there was no way to get the same amount in.

For my next runs, I decided to do everything by weight.  I tried a few different foam masses, curing orientations, and venting strategies.  Eventually, I got something that seems to look pretty good.  We’ll see how well it works on the actual machine shortly!

Here’s a bunch of different intermediate attempts:

And here’s a cutaway of the process I’ve settled on for now.  This particular one has a slight bit of overfill on one edge that is more than is typical, but the inside fill is pretty good:

dsc_0243

 

 

quad A0 – Improved foot design

As mentioned long ago in my post on failing more gracefully, it was obvious I wanted to strengthen the lower leg and foot mechanism to remove the point of failure observed there.  For now, I’m attempting to basically copy the original Mini-Cheetah foot principle, although with more 3d printing and less machining.

20200211-mk2-foot

The basic idea is to print the entire lower leg in a single go laying on its side, so that delamination is unlikely.  The foot bracket will be cast into a squash ball, then epoxied onto the lower leg.

Next up, we’ll see my experiments in casting!

mk2 leg knee stud

One of the parts on the original quad A0’s leg that was prone to failure was the “knee stud”, a little cylinder that acted as the mating interface between the upper leg and the lower leg.  It directly attaches to the upper leg, and has bearings that ride between it and the lower leg.  The entire tension of the leg belt is born in shear by this part.

20200206-knee-stud

In the mk1 leg, this part was 3d printed with heat set inserts used to form the threaded holes.  This mostly worked, although occasionally the stud could shear along the 3d printed lamination lines.  Thus, for the mk2 leg, I’m making this part out of 6061.

dsc_0204-1

The first op takes a 0.875 inch cylinder, and does all the work on one of the sides.  That includes roughing it down to length, getting the outer diameter that the bearing rests on accurate, and drilling and threading the holes.

dsc_0222
5x knee studs with the first op done

At that point, the part is turned over and bolted into a 3d printed fixture.

dsc_0223

Then, all the tool paths are repeated on the other side, as well as the middle being cut away.  I didn’t really worry about surface finish on the middle section, since it will never be seen.  This of course would be much easier on a CNC lathe with live tooling, but hey, you use what you’ve got!

dsc_0228
All 5 that I made

Updated leg design for mk2 servo

Since the mk2 moteus servo has slightly different dimensions and a different mounting pattern than my original, I needed up update the full rotation leg design to handle it.  The basic concept is the same, except for some in-progress work on the foot design which I’ll write up later.  The only significant changes were that because of the mk2 design, access to the power and data connectors is much easier.

Here’s a brief CAD snapshot:

20200205-mk2-leg

New quad power distribution board

Finally returning back to other pieces of my quad roadmap, I finished getting an updated power distribution board ready for the quad A0.  This board is one I had made many months ago and mostly brought up, but then didn’t quite finish.  The r1 was when I first discovered my unfortunate stm32g4 pinout problems that doomed 3 of my in flight boards.  The pictures here are of r2, which suffered from yet more pinout problems, resulting in more than my usual number of blue wires.  Fortunately, identifying those problems here let me fix them ahead of time for the fdcanusb and moteus r4 boards.

dsc_0193

This version has a probably overkill XT90 input connector, 6x XT30 output connectors, a connector for a lighted toggle switch and an FD-CAN port.  The CAN port will eventually allow me to implement a soft power off, although I haven’t done that yet.

When hooked up to a moteus dev kit, it does do the proper pre-charging thing:

dsc_019420200131-precharge

fdcanusb

One of the necessary pieces for bringing up the moteus brushless controller and for ongoing development with it is being able to communicate with the device on the desk.  There aren’t many options for desktop FDCAN communication currently, and certainly none that are in the affordable range occupied by the CANUSB family of devices which I’ve used before and was very happy with.  Thus I created “fdcanusb”, a USB to FDCAN converter that allows one to communicate with FDCAN devices via a USB interface using a documented protocol, no drivers necessary.

The notable features:

  • USB 2.0 full speed host interface
  • ISO 11898-1: 2015 FDCAN interface on industry standard DB9 connector
  • Standards compliant bitrates up to 1/5Mbps supported
  • Software controllable termination
  • Frame sizes up to 64 bytes
  • Non-standards compliant bitrates allowed
  • Documented CDC ACM based host protocol (virtual COM port)
  • Apache 2.0 licensed firmware based on the STM32G474 controller

All for an expected sales prices of around $100.

This does come with some caveats: For one there is no galvanic or optoisolation, you get a common mode range of around +- 12V.  Another is that using just a USB 2.0 full speed interface means it may not be able to keep a FDCAN bus fully saturated at high bitrates.  Finally, the firmware will start out with just the bare bones capabilities, but can be extended to support features such as error injection, triggers, buffering, and more compact protocols in the future.

I’ve got the first functioning prototypes of these boards in hand now:

fdcanusb_r2
PCB render

dsc_2026
Set up for test

Next up I’ll describe bringing up this board.

moteus servo mk2: Planet Input

As the first part of the new moteus servo mk2, and continuing in my series of learning about CNC by building parts for the quadruped, next up I machined the input to the planet gears on my Pocket NC V2-50.  This was a part, that for my quad A0 build, I used a 3d printed part in PETG as it is probably the least stringent part in the gearbox in terms of tolerances and load, although I still expect the plastic ones will likely wear and fail after some time with heavy use.

Part description

In the gearbox, this planet input interfaces to a number of different sub-assemblies:

planet_input_exploded

The planet output inserts into its studs, the planet shafts insert into recessed holes in the face, and the planet input bearing fits into its center.  Bolts fit through the back to pull the planet output towards the input.  There is also an indexing cutaway on the outside for an eventual absolute position system.

Setup

I made these from round stock, 1.75in in diameter cut to 1″.  The machining was done in two setups, each using the Sherline 4 jaw chuck mounted to the B axis of the Pocket NC.

dsc_1765
Stock

In the first setup, the back side was roughed out, the center hole was cut out, and each of the holes for the bolts was bored along with a countersunk region.

The second setup, flipped over, first roughed, then proceeded to finish each of the necessary surfaces.  There were two more interesting bits here.  First, I made an alignment fixture so that I could get the holes from the back and front half to align.  That consisted of a cylindrical shell that fit into the mounting pattern on the B table of the pocket NC and a thin plate that fit under the part.  The thin plate just stays in place during the machining operation, where the shell pulls out.

dsc_1722

The other interesting part was that I ended up clearing away a bit of the inside of each stud so that my bit could reach down to finish the bearing mounting surface.  That way I could get away with just using an 11mm flute, which already gave a terrible enough surface finish that going longer would have only made worse.

More pullout

As I’ve observed in the past, I had yet another problem with tool pullout during this part.  Here, the problem was very similar to my past incident, when Fusion left a thin wall, then tried to punch through it.  My fix from then was doing the right thing, however the wall was just too thick I believe, causing the toolholder to lose grip.  In this clip, you can see that after it breaks through the wall, the mill cuts through some stock as it repositions over.  The slip was only about 0.3mm, but that’s enough to mess things up.

However, this time I think I figured out an even better solution.  Simply lie to Fusion 360 about the diameter of the cutting tool and say it is slightly undersized.  That results in fusion leaving the adaptive passes closer together, and thus no thin walls or foils are left behind.  It would be nice if that were just an option in the adaptive settings.  I suppose you could override it in the “Compare and Edit” window, but creating a faux “tool” just for roughing makes it easier for me to see that I’ve applied the override correctly.

Result

Here’s a video showing the different tool paths for the finished part:

dsc_1762
4x “good enough” planet inputs

Future work

The stock cut of 1″ is oversized in this part and adds a bit more than an hour to the cycle time over a minimum sized piece of stock.  I need to get a setup for cutting stock smaller than an inch here soon.

Also, I’ve discovered that ekramer3 has been testing the 4mm single flute Datron endmill, which should be able to nearly double the MRR for the roughing passes.  I’ll give that a try on the next part I make.