Bed Level Visualizer vs actual bed

There have been similar reports about getting stuck on retrieving mesh. The timeout value should cause that to reset itself. But there was also another issue recent regarding large numbers in the results, which your output definitely falls under. I've never seen anyone using those distortion correction matrix before. I would suspect that if this was working for you before I don't see how it would be displayed in the tab because it would be outside the +/- 2mm range from 0 that is graphed.

So after going back and reviewing the code again I don't see how this ever worked for you even before the upgrade. The regular expression used (below) to match offset distances required a comma separated line of numbers that is composed of a single digit number followed by a decimal point followed by any number of digits.

^((G33.+)|(Bed.+)|(\d+\s)|(\|\s*)|(\[?\s?\+?\-?\d?\.\d+\]?\s*\,?)|(\s?\.\s*)|(NAN\,?))+$

This regex hasn't changed since version 0.1.8.

I am having troubles testing. In most cases I either get failure, due to sensor did not untrigger, or the result is not displayed. The result of one of successful tests is shown below. Test object was at 0,0 corner and with rotation set to 90 appeared in 0,Ymax corner, which means rotation is clockwise.
2020-01-11 00_11_15-OctoPrint
It is past midnight here on West coast. I will try to find time this weekend and run more tests. May need to find the reason of untrigger errors first.

Thanks

Yes, the rotation is clockwise.

So in my case using an Ender3 I managed to map the following:

So without touching the Bed Level view, then pressing "reset camera to default" my points are as follows:

3dprint_bed_level

Hope this helps someone...

Fixed the sensor and run 3 more tests all without test object and with manually leveled bed. First test with flips off and rotation off completed successfully. Another with the same settings and one more with rotation 90 and flip-X failed to parse the result and eventually timed out. Each test in my setup takes about 10 minutes and is rather time consuming.
It is probably a big change, but if you'll ever decide to rewrite this plugin, you may want to consider storing data as it was received from the printer and then apply flip and/or rotation to that stored data. In such case user won't need to re-run measurements every time he/she realizes that chart needs to be flipped or rotated.

Thanks

What is your timeout value set to? If it's not long enough I could see that happening taking into account the 10 minutes to complete. I'm not familiar enough with Repetier firmware to know if there is a reporting option versus having to run the leveling process completely like there is in some Marlin leveling options like UBL. It stores the mesh in EEPROM and you can run separate command to just get the report.

What command are you using in Repetier to run the leveling? I'd like to do some more research. Still not sure how you are getting those large numbers you posted before to display on the graph since they are outside the bounds of the +/- 2mm range. Can you post your settings for the gcode and the responses from the terminal tab for me?

Just took a quick look and it seems that the command G33 L0 would list the offsets stored in EEPROM if that option is enabled and not run the full probing process.

https://reprap.org/wiki/G-code#G33:_Measure.2FList.2FAdjust_Distortion_Matrix_.28Repetier_-_Redeem.29

I usually print with PETG and running measurements with bed heated to 80 degrees. If the bed before the test is at room temperature, to heat it up at complete measurements takes about 10 minutes. My timeout is set to 15 min. Plugin times out few minutes AFTER completing measurements and presents the last chart that it was able to parse.

Below are the details of last successful measurements/parsing.



GCode:

M117 Homing...
G28
M117 Lowering bed 20mm
G1 Z20 F400
M117 Heating bed...
M140 S80 ;Start heating bed
M190 S80 ;Wait for bed to reach temp before proceeding
M117 Activating Z-probe
G1 X100 Y100 F6000 ; center printhead
G1 X-9 S1 F4000 ; Pull probe down Step 1
G1 Y-3 F4000 ; Pull probe down Step 2
G1 Y20 F6000 ; Move head back to bed center Step 3a
G1 X20 S0 F6000  ; Move head back to bed center Step 3b
G1 X0 Y0 F4000  ; Move head back to bed center Step 3c
M117 Phase 1 (G32)
G32 S2 ; S2 Saves in EEPROM
G1 X0 Y0
G1 Z10 F400
M117 Phase 2 (G33)
@BEDLEVELVISUALIZER
G33
M500 ; save config in EEPROM
M117 Deactivating Z-probe
G1 X100 Y100 F6000 ; center printhead
G1 X-9 S1 F4000 ; Pull probe up Step 1
G1 Y204 F4000 ; Pull probe up Step 2
G1 Y100 F6000  ; Move head back to bed center Step 3a
G1 X100 S0 F6000 ; Move head back to bed center Step 3b
M117 Heated bed off
M140 S0 ; Disable heated bed

serial.log (91.6 KB)

Thanks

Just replaced my entire GCode with G33 L0 and received the following output. Unfortunately the plugin was not able to parse it and timed out again. Tried with and without "Remove Row Labels" option.

Send: N7 G33 L0*66
Recv: FIRMWARE_NAME:Repetier_1.0.3 COMPILED:Jul 13 2019 FIRMWARE_URL:https://github.com/repetier/Repetier-Firmware/ PROTOCOL_VERSION:1.0 MACHINE_TYPE:Core_XY EXTRUDER_COUNT:2 REPETIER_PROTOCOL:3
Recv: Cap:PROGRESS:1
Recv: Cap:AUTOREPORT_TEMP:1
Send: N8 M155 S5*108
Recv: Cap:EEPROM:1
Recv: Cap:AUTOLEVEL:1
Recv: Cap:Z_PROBE:1
Recv: Cap:SOFTWARE_POWER:0
Recv: Cap:TOGGLE_LIGHTS:0
Recv: Cap:PAUSESTOP:1
Recv: Cap:PREHEAT:1
Recv: Printed filament:4167.94m Printing time:40 days 19 hours 1 min
Recv: PrinterMode:FFF
Recv: ok 7
Recv: G33 X-12.00 Y5.00 Z0.085
Recv: G33 X-12.00 Y28.12 Z0.122
Recv: G33 X-12.00 Y51.25 Z0.108
Recv: G33 X-12.00 Y74.37 Z0.107
Recv: G33 X-12.00 Y97.50 Z0.089
Recv: G33 X-12.00 Y120.62 Z0.074
Recv: G33 X-12.00 Y143.75 Z0.047
Recv: G33 X-12.00 Y166.88 Z0.030
Recv: G33 X-12.00 Y190.00 Z-0.036
Recv: G33 X10.63 Y5.00 Z0.050
Recv: G33 X10.63 Y28.12 Z0.098
Recv: G33 X10.63 Y51.25 Z0.071
Recv: G33 X10.63 Y74.37 Z0.087
Recv: G33 X10.63 Y97.50 Z0.067
Recv: G33 X10.63 Y120.62 Z0.061
Recv: G33 X10.63 Y143.75 Z0.040
Recv: G33 X10.63 Y166.88 Z0.000
Recv: G33 X10.63 Y190.00 Z-0.032
Recv: G33 X33.25 Y5.00 Z0.022
Recv: G33 X33.25 Y28.12 Z0.024
Recv: G33 X33.25 Y51.25 Z0.071
Recv: G33 X33.25 Y74.37 Z0.035
Recv: G33 X33.25 Y97.50 Z0.050
Recv: G33 X33.25 Y120.62 Z0.048
Recv: G33 X33.25 Y143.75 Z0.011
Recv: G33 X33.25 Y166.88 Z-0.019
Recv: G33 X33.25 Y190.00 Z-0.050
Recv: G33 X55.88 Y5.00 Z-0.038
Recv: G33 X55.88 Y28.12 Z-0.001
Recv: G33 X55.88 Y51.25 Z0.021
Recv: G33 X55.88 Y74.37 Z0.009
Recv: G33 X55.88 Y97.50 Z0.027
Recv: G33 X55.88 Y120.62 Z0.001
Recv: G33 X55.88 Y143.75 Z-0.000
Recv: G33 X55.88 Y166.88 Z-0.030
Recv: G33 X55.88 Y190.00 Z-0.053
Recv: G33 X78.50 Y5.00 Z-0.021
Recv: G33 X78.50 Y28.12 Z-0.023
Recv: G33 X78.50 Y51.25 Z0.011
Recv: G33 X78.50 Y74.37 Z0.018
Recv: G33 X78.50 Y97.50 Z0.017
Recv: G33 X78.50 Y120.62 Z0.009
Recv: G33 X78.50 Y143.75 Z-0.006
Recv: G33 X78.50 Y166.88 Z0.003
Recv: G33 X78.50 Y190.00 Z-0.041
Recv: G33 X101.12 Y5.00 Z-0.042
Recv: G33 X101.12 Y28.12 Z-0.029
Recv: G33 X101.12 Y51.25 Z0.041
Recv: G33 X101.12 Y74.37 Z0.024
Recv: G33 X101.12 Y97.50 Z0.019
Recv: G33 X101.12 Y120.62 Z0.031
Recv: G33 X101.12 Y143.75 Z0.043
Recv: G33 X101.12 Y166.88 Z0.019
Recv: G33 X101.12 Y190.00 Z-0.005
Recv: G33 X123.75 Y5.00 Z-0.046
Recv: G33 X123.75 Y28.12 Z-0.040
Recv: G33 X123.75 Y51.25 Z0.017
Recv: G33 X123.75 Y74.37 Z0.021
Recv: G33 X123.75 Y97.50 Z0.003
Recv: G33 X123.75 Y120.62 Z0.029
Recv: G33 X123.75 Y143.75 Z0.010
Recv: G33 X123.75 Y166.88 Z0.029
Recv: G33 X123.75 Y190.00 Z0.019
Recv: G33 X146.38 Y5.00 Z-0.071
Recv: G33 X146.38 Y28.12 Z-0.038
Recv: G33 X146.38 Y51.25 Z0.014
Recv: G33 X146.38 Y74.37 Z0.015
Recv: G33 X146.38 Y97.50 Z0.017
Recv: G33 X146.38 Y120.62 Z0.024
Recv: G33 X146.38 Y143.75 Z0.038
Recv: G33 X146.38 Y166.88 Z0.013
Recv: G33 X146.38 Y190.00 Z0.002
Recv: G33 X169.00 Y5.00 Z-0.079
Recv: G33 X169.00 Y28.12 Z-0.043
Recv: G33 X169.00 Y51.25 Z-0.017
Recv: G33 X169.00 Y74.37 Z0.015
Recv: G33 X169.00 Y97.50 Z0.023
Recv: G33 X169.00 Y120.62 Z0.051
Recv: G33 X169.00 Y143.75 Z0.036
Recv: G33 X169.00 Y166.88 Z0.043
Recv: G33 X169.00 Y190.00 Z0.032
Recv: ok 8

Yeah, I think it's stopping the collection of points as soon as it hits that ok just prior to the offsets list When using G33 L0. I remember someone else actually submitted a PR for the Repetier support, so I'll have to look to see how that is getting parsed. I do know there is a repetier flag and it looks for those G33 lines that tell the offset.

I've pushed an update to the 0.1.12 branch that incorporates a debug logging option. This will help me in understanding what's going on with your situation. If you don't mind, re-install using the URL below in plugin manager and then in the settings check the box to enable debug logging once the UI reloads.

https://github.com/jneilliii/OctoPrint-BedLevelVisualizer/archive/0.1.12.zip

Try running through your normal process and then download the file plugin_bedlevelvisualizer_debug.log from the logging section of OctoPrint, change a setting run an update, download the file again, repeat as necessary.

Here are 2 files.
plugin_bedlevelvisualizer_debug1.log (68.7 KB)
plugin_bedlevelvisualizer_debug2.log (151.1 KB)
I was running GCode posted earlier in this thread. The first test had neither Flip nor Rotate options selected and completed successfully.
The 2nd file is result of running the same gcode with Rotate set to 90 and Flip X checked. This attempt failed to parse and eventually timed out.
Then I tried to run G33 L0, but it did not generate debug file and also timed out.

Thanks

Did you guys see the Prusa Leveling Guide Plugin??? There is even a graphics of the board with the number of screw turns needed to fix the level! How cool is that!

Unfortunately, it seems to work only on Prusa as I tried it on my Anet and was not working at all.

That's right, it parses output of G81 command that is not supported by any other firmware except Prusa. I wonder how hard would be to modify the plugin and add support of Marlin and Repetier firmware.
@Prusa_Owners: Could one of you please respond to this post with terminal output of G81 command.

Thanks

I was able to narrow down the problem and found the workaround for my particular case. It appears that plugin fails to parse Repetier's G33 printout only when Flip-X option is selected. This eventually causes timeout.
As mentioned in my earlier post in this thread, I either had to select Flip X and rotate 90 degrees clockwise, or Flip Y and rotate 90 degrees counterclockwise. So, I ended up flipping Y and rotating 270 degrees clockwise.
These tests were done on Repetier version 1.0.4. I volunteered to participate in Repetier ver.2 beta testing and soon should be able to validate how the plugin works with new code.

Thanks

FYI - I just got done testing my Ender5+ and hopefully this helps someone map the Octoprint Bed Visualizer output to physical printer bed:

Ender5+
Physical Front Left: (0,0) (X,Y)
Physical Front Right: (350,0) (X,Y)

  • OctoPrint 1.6.1

For reference, the bed visualizer camera views shown have (0,0) as the closest corner to the front

You may check for some debris on the print bed and - if you have - below the steel sheet.
Also for something that may pulls up the printhead/sensor at the certain position.

lol...I actually recommend using something in a corner when first setting up the plugin, to help identify if you need to use any of the flip options. I suspect this is what was happening here...

1 Like

Ooops! I should read a post entirely and not in the middle of the night.