# Fifth Motion Axis: Flex Compensation

20-9-2023

The fifth motion axis is a big feature I've planned for the Hangprinter v5. I'm adding another low anchor.

CAD work happens on the version_5 branch. Full firmware support was implemented in collaboration with jtimon on Github, and has already been merged into ReprapFirmware. See the merged pull request here.

One of the tricky parts was finding a good flex compensation.

### Flex Compensation

To understand how Hangprinter's flex compensation works, imagine all lines to be (stiff, linear) springs. In the image above, imagine the mover is not moving, and the lines are almost slack, just barely not sagging.

Now imagine that, the compensation algorithm wants to tighten the lines. It wants to wind in some millimeters of line onto each spool to set the whole system under tension. However, the compensation algorithm is not allowed to pull the mover out of position. The mover must remain still.

Finding a set of five lengths that achieve this is a basic problem of statics. We solve a system to balance out six forces, five from lines, and one from gravity pulling the mover.

Since we include gravity there, the algorithm really does two things:

1. Set correct pre-tension in all positions, giving better accuracy.
2. Compensating gravity, which also improves accuracy.

Finding solutions to the statics problem means solving an over-determined linear system. We get rid of the over-determination by splitting the system into two: pre-tension and gravity, and then each of those into four, setting each of the lower anchor's forces to zero in turn. The eight solutions can then be combined in any linear way to form a valid solution.

However, "in any linear way" means there are infinitely many valid solutions, in each point in the build volume! 😲 I found it tricky to decide which solutions to use, how to weigh the linear combination.

I decided to determine pre-tension with two (user-configurable) constants: max-force and target-force. But I also needed to distribute the forces between the four lower anchors in "a good way". Key to getting it good was to scale the pre-tension solutions so all have equal max force. I don't understand exactly why that works so well, but I'll use a plot to explain why the force distribution it creates is so good.

The four low anchors all have similar plots to each other, so I show only the A-anchor one. The top anchor has its own compensation pattern, but I'll focus only on the low anchors in this post. Full details are here.

Here are the good features that I looked for in my solution were, that can be also seen in the plot:

• Forces are generally small near the middle of the reachable plane (the area spanned by the four low anchors).
• Forces are generally bigger towards the edges of the reachable plane. We want to spend our main effort on counteracting the pull of gravity that drags the effector towards the middle, and otherwise keep forces as small as possible.
• Forces are generally smaller the further away from the anchor one gets. The anchors closest to the mover will generally be best able to control it, so the furthest anchor should gently "give up", without going completely slack, and the closer anchors should gradually "take over" by applying more force.
• The surface is smooth, there are no sudden changes of force.
• Trying to leave the reachable plane should never happen, other code takes care of that. If it happens anyway, the user is in a very bad situation. We therefore want compensation target forces to fall off smoothly but rapidly outside the reachable plane.

But forces doesn't tell the whole story, since the lines are modelled to be springs and these lines/springs change length and therefore stiffness across the build volume. The following two plots show the effect of enabling flex compensation, counting line length, not force.

I had really planned to write a little about the five-anchor forward transform, and how all of this was fed into the auto-calibration-simulation-for-hangprinter to get auto calibration with a five-anchor Hangprinter. Maybe even talk a little about how adding a Kalman filter to the auto-calibration could make it way more automatic and easy to use.

However, I'm out of writing time and this post is a bit heavy. So let's talk about that some other time.

- tobben

The fifth motion axis is a big feature I've planned for the Hangprinter v5. I'm adding another low anchor.

# Where I'm Going With This

25-8-2023

I've started working on version 5 of Hangprinter, the HP5. I plan to sell it as a kit once it's ready.

I've also started a proto-business where I sell ceramics printed with HP4. You can check out the products at torbjornludvigsen.com/shop, and soon hangprinter.com/shop.

The long-term vision is to build out an ecosystem of profitable Hangprinter enterprises.

### A Collective Rise

So I decided to rise and use my own machine. But what I really want is an ecosystem that rises with me, one that can grow in two ways:

1. Shared technical progress.
2. Companies making money.

I want as much as possible of both ways at once. Can it be done? Will my plan work? Any sign it might work makes me very excited. Having two such growth mechanisms work in tandem makes new industries take off.

### Tempering Expectations

Getting there will depend on the interplay between the companies that end up using and supplying Hangprinters. I can take both roles initially and give us a good start.

I want to do that despite knowing that in the very long run, there's always consolidation, as maturing industries tend to stop sharing technical progress. If we get to the point where I'm out-competed by other profitable Hangprinter firms, I'll celebrate. It would signal the realization of my long-term goal.

### Right Now

My current focus is two-fold:

• Validate that HP4 can generate an income, while
• making the HP5 design market ready.

I have some finished products, but I haven't sold them yet. So I have some selling to do.

Planning and programming the HP5 is mostly done. The remaining work includes CAN integration, CAD work, and tests on hardware.

### Much Publishing to Do

There will also be a push for documentation. I'll use the remaining budget from the patent case crowdfunding to upgrade hangprinter.org/doc with documentation good enough to serve as patent protection. I'll also release a series of blog posts detailing the progress made during the year-long patent case blackout.

Big thanks to everyone who stayed active and supportive during the blackout. The patent holders had a seven-digit USD budget and planned a Hangprinted shield over a nuclear reactor. I hope their plan is still on and wish for more big Hangprinter projects to pop up. I hope they'll say hi in the Discord chat.

- tobben

I've started working on version 5 of Hangprinter, the HP5. I plan to sell it as a kit once it's ready.

# Patent Got Narrowed

5-8-2023

## TLDR Version

A copycat Hangprinter patent popped up in 2022. The patent made the community nervous, so we wanted to take it down.

We got lots of help. I found an awesome lawyer. We presented our prior art analysis to the USPTO (United States Patent and Trademark Office). They largely agreed with our analysis. They rejected all the patent's original claims. They accepted a narrower version of them.

We are fine with the narrow version of the patent. It doesn't make us nervous.

## Quite Long Version

In January 2022, news of a very broad Hangprinter patent appeared on Twitter (here). Two news articles were published on 3dprintingindustry.com, here and here. I collected my prior art in an extensive blog post (here).

I talked to the Hangprinter community. Some engineers who are way more experienced with patents than me said the patent

1. claimed ownership of the basic Hangprinter idea,
2. already affected Hangprinter startup funding negatively, worldwide.
3. It might be invalidated or severely narrowed by presenting Hangprinter prior art to the USPTO.
4. It might also be withdrawn voluntarily by the patent holders, at least in theory.

In hindsight, this was all great insight.

But the case also caught the interest of a community I hadn't met before, the community of patent lawyers who care about or have opinions about open source. I had around 20 calls or video meetings with different helpers from this community, and around 14 email threads, some of extensive depth and length, during this period.

The sum of the info I got was a contradictory mess, and it was very hard to grasp what I should expect from the US patent system. Many urged me to don't do anything because a poorly executed patent fight would strengthen the patent instead of weakening it. Many even suggested that the patent holders would win, not because they're right, but simply because they're rich and powerful. Some were helpful and well-meaning, some were academic and had very fancy titles, and a few shouted at me in all-caps for thinking I could challenge a US patent.

I was told by the more serious-sounding ones that my prior art from up to one year prior to the patent application date was unusable due to a special loophole in US patent law. (This legal loophole has been plugged a long time ago.) I got cost estimations ranging from 30k to 500k USD.

In parallel with learning about the supposed horrors of the US patent system, I tried to talk to the patent's inventors via email. They seemed like good-hearted people but maybe a bit naive. As soon as their company's legal dept was involved the email thread went silent. They might have done that to protect me from saying stupid things unknowingly.

It also left the door open for the interpretation that the US patent system might just be compactly cynical. Apart from the real legal experts, half of the internet was telling me that the US patent system was God's punishment to humanity. The other half talked endlessly about how well-intentioned the patent system is, how good it is compared to China etc etc. I wanted out.

### A Sigh

This whole patent case could easily have been solved with a simple conversation. I would probably have given the patent holders a way better deal than the USPTO ultimately gave them, considering how eager I was to escape this patent case.

Days and nights of writing claim mappings, trying to get the format, the date-stamped sources, the linked proof of every date stamp, the exact wordings, the technical details into a state that the various lawyers approved of.

The patent text didn't even describe a sound physical geometry, but the lawyers seemed utterly unimpressed by physics, maths, and geometry-based arguments, which scared me a little. I had to "assume common misinterpretations" to even understand what the lawyers thought the text that I was supposed to argue with said. For a physicist and a coder, knowing that their misinterpretations might overrule reality was confusing and uncomfortable. I gave up for a while, and let all conversations die out, I needed silence.

### Doing It

After getting some rest, I felt like I should at least try to challenge the patent anyway. I'd been working on the Hangprinter Project for eight years after all, and the patent stood in the way of the most basic project goals. The do-nothing strategy was so boring and self-defeating. Even failure would feel better.

Besides, sometime in the past, it was a little dream of mine to clear up a large design space for others, similar to what the expiration of Stratasys' US patent 5121329 had done back in 2009. That expiration supercharged the Reprap Project's potential by removing lots of patent risk. I'd dreamt of supercharging the Hangprinter Project as well, but not passively by waiting for an old patent to expire. I wanted to actively remove a broad patent within the field of cable-driven Hangprinter-like machines, saving us the 20 years it takes for US patents to expire.

I read the patent text again and found that I might have a chance. So I decided to put in a non-zero effort toward the old dream.

I put together a fundraising campaign to pay for legal expenses (here). I didn't spread it much. I published it a single tweet saying "Hangprinter has been stolen by patent trolls. Here's a kind of hopeless fundraiser for those who can afford to help us fight back legally."

It got way more attention and funding than I had expected. But also way less than the 60k USD I thought I needed.

All communication channels heated up again, helpers appearing everywhere. 3D Printing Industry published a third article (here), and techdirt wrote one (here). Moderators of the 3Dprinting community on Reddit offered me a pinned AMA (ask me anything) session on their page (here). I spoke to anyone who would speak to me, and to anyone they asked me to contact. Most often that meant their lawyer, or to people at the company who held the patent. One time it meant the "Patent Ombudsman" at the USPTO other times it was law professors. I applied for pro bono legal help through a bunch of different programs. Writing those applications took lots of time but I didn't get any meaningful answers.

### Path to Clarity

Someone asked if I'd contacted EFF (Electronic Frontier Foundation). Out of the hundreds of emails and forum posts, this one made the biggest difference. I had been meaning to contact EFF for months, but that plan had drowned in all the fuzz. So I sent an email to info@eff.org. I was amused to get an answer from a person with the title "Mark Cuban Chair to Eliminate Stupid Patents".

After some back and forth I was introduced to the Public Interest Patent Law Institute (PIPLIUS, here). We had another go at claim mapping, and we tried finding someone who could represent Hangprinter in the US.

It was Alex at PIPLIUS who told me about the famous Gnome patent case (here), and introduced me to the IP lawyer who won that case for the open source side.

He already knew about the Hangprinter patent and had even tried talking to me on Twitter. He agreed to take the case and offered a very low rate. It wasn't pro bono (free) but I'll explain why I found the rate to be very low.

He knew my budget since the crowdfunding campaign was public. Lawyers charge in advance so my basic understanding of game theory told me that I'd probably have to send the whole crowdfunded sum to whatever lawyer I hired, all at once. I had gotten 196k SEK from the campaign (190k SEK after adding Paypal donations and subtracting fees).

I paid 4000 USD (43072 SEK at the time) for the initial unpatentability analysis, and later a 1500 USD (16834 SEK) flat fee for the full ex partes reexamination process with the USPTO. He also helped reduce my fee paid to the USPTO by arguing that I should be categorized as a small entity. The USPTO fee was 3150 USD (35351 SEK) and was forwarded by the lawyer. This left ca 95k SEK (currently equal to 9k USD) of donated money in my bank account. More on that later.

For 20% of the price (or at an 80% discount) of the lowest rate any other lawyer had proposed (which was 26850 USD), this lawyer did everything possible to invalidate or severely narrow the patent through an ex partes reexamination process. Including clearing up the misunderstanding that prior art needed to be more than a year older than the patent application. This improved the claims mapping considerably. He wrote the final analysis and handled the endless back-and-forth with the USPTO while patiently answering my questions along the way.

### Ex Partes Reexamination

From this point on in the story, there's a paper trace at the USPTO's website, here. It shows our ex partes reexam request from October 2022. To see the analysis we put forth, see "Receipt Original Ex Parte Reexamination by 3rd party fewer than 40 Pages Rule 1.20(C)(1)". Warning: It's 39 pages of legalese.

The trace shows that the re-exam was ordered in January 2023, meaning the USPTO agreed that our prior art and analysis raised a new question of patentability. Our application for reexamination was granted.

In April we got the USPTO examiner's analysis in the form of a "Non-Final Action". I think their analysis was largely in line with ours. All claims were rejected.

The ex partes reexamination procedure was chosen partly because it's cheap. However, it has the downside that the patent holder gets the last word. In June, the patent holders used this opportunity to ask if a narrowed-down version of their claims could be accepted.

I didn't analyze the new claims closely yet, since I still hoped the USPTO examiner would reject them. However, in July we got the Notice of Intent to Issue a Reexam Certificate. The revised claims had been accepted.

Looking closely, I could confirm that none of the existing Hangprinters are covered by the revised claims. They now covered only one specific design path, building upon Hangprinter. This design path gets legally closed off by the patent, so the question became if the closed path was an interesting one.

### Result

I was pleasantly surprised by just how narrow the claims had become. The geometrical mistakes from the original patent remained, claiming for example that D-anchors always pull the effector along the Z-axis. Better yet, the all-important claim 1 had been made twice as long, now specifying a combination of the following features:

1. (Separate?) guy wires stabilizing a suspended top anchor.
2. One lower anchor's cables form a horizontal parallelogram, and another lower anchor's cables form a vertical parallelogram.
3. At least one anchor lacks positional control and provides only tension control.
4. Anchors move up/down to always be in the horizontal plane that goes through the effector.

New independent claims 21 and 24 were added, but they share the same features, except maybe claim 24 avoids the "horizontal plane" part of feature 4, I'm not sure.

Apart from being easy to work around, none of these features are desirable, and their combination is particularly awful. So the revised patent closes off an entirely uninteresting design path. Let me explain.

#### 1

Using guy wires to stabilize the top anchor as described in the patent makes the top anchor into a Hangprinter effector in itself. Nesting one Hangprinter inside another is needlessly complex and adds many points of failure to the design. Besides, it was already suggested in the public Hangprinter Facebook group in March 2018, so it shouldn't be patentable (here) but who cares.

See the appendix of my Hangprinter-is-Prior-Art post for more details and more sound alternatives, here.

#### 2

There's nothing special about vertical or horizontal parallelograms. Any parallelogram fixates rotational degrees of freedom equally well. Making all anchors equal to each other is more desirable since it reduces special cases and the number of unique parts.

#### 3

Constantly pulling the effector towards one point (an anchor) reduces accuracy and greatly increases the wear and energy usage of the machine. It also limits max speed and max acceleration. Having two types of lower anchors that work differently from each other makes new and exotic failure modes possible, in hardware as well as in software. We've had toggleable torque mode (allowing users to set a tension rather than a position) in all Hangprinter anchors since 2017. There are good reasons why we've never left it on during print.

#### 4

It is desirable to be able to pull the effector in all directions, including downwards. There are lots of forces from the print that push the effector upwards. If no anchor can pull the effector downwards, then you get wobbling and artifacts in your print, or your effector needs to be very heavy which will slow you down.

### Why This is a Good Result

The narrowed patent only covers machines that have all the features described above, all at once. If you find yourself wanting to implement 1 or 2 or 3 of those features, then you don't have to worry about the patent. Make a slight deviation, a tiny angle, or something, and you can probably have all 4.

This is in contrast to before when you couldn't have even 1 of those features. If an anchor was considered to do "tension control", then even existing Hangprinters, and almost any related machine design, was covered by the old patent. With the new patent, we don't have to worry and can simply forget about it.

### Looking Forwards

I published much less than usual during the past year, out of fear that whatever I publish might hurt my case, or be interpreted as legal advice, or tempt the patent holders to copy more of my stuff into patent applications.

Despite not publishing, I have been developing and innovating at full speed this entire time, except for the four weeks I did blockchain stuff (see my previous post). I now have lots of Hangprinter-related inventions lying around that need to be published properly. I feel like the Hangprinter Community needs to secure the real interesting design paths and make sure they stay open. The way forward is to find promising design paths and then publish high-quality prior art into the public domain.

That's what I will use the remaining 95k SEK from the crowdfunding campaign for. The title of the campaign was "Help Keep Hangprinter Free" so I'll put all the money into that purpose. I'll make sure we're better prepared next time around. This time we were simply lucky that the path that closed was such an uninteresting one.

### The Positive Take That I See Too Seldom

A patent case shouldn't make us sad or angry. If we see no patent vultures then the invention in our hands is probably not very valuable. If we find large entities spending money and taking risks to try and patent our things, then it's a sign we're on a valuable path.

Any valuable design space will fill up with selfish for-profit players over time, even the Hangprinter space, and we should be fine with that. This patent case was not meant to expel for-profit companies from the community. It was fought to make room for more of them by making sure there's plenty of low-hanging fruit left that everybody and nobody owns.

I'm looking forward to expanding the world of open source by continuing to give my Hangprinter developments as gifts to everyone, and by keeping the community open. Come make a profitable Hangprinter business with us. Just don't patent other people's inventions.

- tobben

A copycat Hangprinter patent popped up in 2022. The patent made the community nervous, so we wanted to take it down.

Yearly archive: 2014, 2015, 2016, 2017, 2018, 2020, 2021, 2022, 2023

Hangprinter Project: [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31], [32], [33], [34], [35], [36], [37], [38], [39], [40], [41], [42], [43], [44], [45], [46], [47], [48], [49], [50], [51], [52], [53], [54], [55], [56], [57], [58], [59], [60], [61], [62], [63], [64], [65], [66], [67], [68], [69], [70], [71], [72], [73], [74], [75], [76], [77], [78], [79], [80], [81], [82]

Hangprinter Project Homepage: hangprinter.org

Print Issue Solution Filter Project: [1], [2], [3], [4]

Sourcing RepRappro Mendel in Larvik: [1], [2], [3], [4], [5], [6], [7]