Feature idea: bed temperature loss compensation

Thanks for the feedback.

One of the core goals when I started Klipper was to facilitate experimentation with 3d printers. It was a core reason why I chose Python for the host code, why I implemented the module abstractions in the host and mcu code, the choice of text names for mcu/host commands, etc. . Arguably, the genesis of the project was my desire to experiment with modeling of pressure in the extruder.

So, I love it when people perform experiments and share their results! It was not my intent to discourage you from experimenting. Indeed, thermal modeling is an area that Iā€™ve also been thinking about and I wanted to share some of my thoughts on the subject. If you go on to experiment in this area Iā€™m definitely interested in your results.

I built Klipper with an explicit goal of making it easier to experiment, but it has never been a goal of mine to maintain a central repository containing those many experiments. I know this distinction may seem silly or counter-intuitive, but it is an important distinction. Namely, I donā€™t believe a repository holding many past experiments is a particularly good starting point for a new experiment. (Two problems repeatedly come up when experimenting in experimental repos: an experiment may need to change core interfaces and it becomes very difficult for a developer to make those changes without breaking other experimental features, with the developer often struggling to know what breaking code is experimental or widely used; and, if problems occur with a new experimental feature it becomes very difficult to know if thatā€™s due to fragility in the new experiment or fragility in some other experimental code.) I also am just not personally interested in spending time maintaining a repo of experimental features.

So, the obvious question is - what new features will get merged into Klipper and would this new proposed feature be one of them?

When looking at new features to be merged into Klipper, I generally look to see if there are many users from different backgrounds and different printers excited about the feature, see users test the feature, see users do comparative testing involving prints, and see pictures highlighting before and after pictures showing a measurable improvement that the feature offers. This often occurs over months.

For this particular feature, I have no idea if it would be merged. I donā€™t know how one could even start to consider that.

You mentioned ā€œaxis twist compensation, and z_thermal_adjustā€ in your message. You may be surprised to learn that those features were discussed for months and had many users reporting results (including pictures).

Itā€™s also worth pointing out that I also run many experiments that I donā€™t feel are suitable for the main branch. You can find some of them at GitHub - KevinOConnor/klipper-dev: Kevin's development repository for Klipper experiments. (Iā€™ve had many more never published).

The ā€œsee lots of users test and provide pictures of measurementsā€ is not an absolute metric of course. Itā€™s not necessary in some cases - for example if someone submits support for a new micro-controller architecture I would not ask for ā€œpicturesā€ as it is obvious that a printer with that micro-controller either ā€œworksā€ or ā€œdoesnā€™t workā€ with the support. In some cases, like setting up a new API or refining an existing API, there is no reason to suspect a print quality difference - in those cases I still like to see feedback from other contributors, discussions on long-term maintenance, and itā€™s not unusual for discussions to last months. If I canā€™t get a good feel for a ā€œmeasurable improvementā€ then Iā€™m likely not going to merge - the goal isnā€™t to ā€œmergeā€, the goal is to have well tested code that provides excellent quality results in real-world usage.

So, Iā€™m happy to see you experiment, and Iā€™d be curious to see your results. If the goal is to improve 3d printing, to experiment, and to gain new insights, then I donā€™t see ā€œmergingā€ as a requirement.

Cheers,
-Kevin

Thanks, this is very helpful to understand how the community works.
I think I have some idea where the disconnect is - the Klipper contributors documentation is missing this angle entirely. Also the PR and discourse structure is not reflecting this in any meaningful way.

After reading your response here is what makes sense to me:

For bugfixes, code ceanups = just create a PR and done.

Fore new features, behavior changes:

  • writing the code is easy but upstreaming is hard and this is by design

  • please create an experimentation/feedback thread in the Test Requests discourse area,

  • provide a patch to test and instructions how and what to expect.

  • If you want to help testing, here are the experiments that need testers.

  • and here are instructions to apply an experiment to your local printer, ideally if Klipper has some built-in support to patch and clean up.

Does this resonate with you? Can we implement this?

My first inclination is when youā€™re possibly needing a third thermister for chamber temp, it might be possible to use the toolheadā€™s thermister so long as the heater is cut off and it lowers below a set ambiant point.

Thanks for the feedback. There has been some discussion on this recently - for example: New submission process for feature enhancements and Update contributing steps (use Discourse first) by KevinOConnor Ā· Pull Request #6384 Ā· Klipper3d/klipper Ā· GitHub . So, yes, I agree we should improve communication in this area and feedback/suggestions are welcome.

Cheers,
-Kevin

Correct me if Iā€™m wrong here, but printers that seem to gain the most from this feature are the ones with thick MIC6 beds with silicone heating pads where the heater thermistor is far away from the bed surface, right? Nowadays MIC6 plates tend to come with pre-drilled holes that make it very easy to install plate thermistors. From that angle I tend to agree that a dual thermistor setup would be easier and more reliable for most users.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.