Выравнивание стола сетки больше не обновляется после MemoryError
У меня были проблемы с печатью на моем i3 MK3, особенно когда дело касалось первого слоя. В марте 2020 года я установил плагин Prusa Mesh Leveling Plugin для Octoprint. С помощью этого плагина и модификации гайки Nylock я смог уменьшить дисперсию стола с 0,6 мм до 0,014 мм, и отпечатки получились великолепными. Это заняло около 25 раундов калибровки, и у меня не было никаких проблем с тем, что графика не обновлялась.
Вскоре после этого мой датчик накаливания перестал работать, и я заказал замену, которую установил вчера. Но сегодня мои отпечатки снова плохие, особенно первый слой. Поэтому я решил просто еще раз пробежаться по калибровке и сетчатому настольному выравниванию.
Во-первых, я повернул винты в неправильном направлении, поэтому результат стал хуже, и мне потребовалось несколько попыток, пока результаты не пошли в правильном направлении. В настоящее время я нахожусь на уровне дисперсии стола ~1,0 мм, что очень плохо, и мне нужно продолжать выравнивать стол.
Теперь графика больше не обновляется. Он всегда показывает одну и ту же картину.
Я также заметил несколько иное поведение процедуры выравнивания сетчатого стола. Обычно после запуска выравнивания сетки принтера требуется некоторое время (~5 секунд), прежде чем он отреагирует на другие команды, такие как движение по оси Z. Я использовал следующую технику, чтобы узнать, когда нужно перезагрузить графику:
- запустить выравнивание сетки стола
- скажите принтеру, чтобы он поднялся на 10 мм по оси Z
- как только печатающая головка переместилась вверх, появилась возможность перезагрузки графики
Теперь печатающая головка перемещается вверх сразу после выравнивания сетки стола, без задержки ~5 секунд, и графика не обновляется.
Я уже пробовал:
- нажмите кнопку "перезагрузить тепловую карту"
- снова запустите выравнивание стола сетки
- перезапуск Octoprint
- сброс настроек принтера с помощью кнопки X
- поиск места на диске через SSH
.
pi@octopi:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 7.3G 1.9G 5.1G 27% /
devtmpfs 182M 0 182M 0% /dev
tmpfs 186M 0 186M 0% /dev/shm
tmpfs 186M 2.7M 183M 2% /run
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 186M 0 186M 0% /sys/fs/cgroup
/dev/mmcblk0p1 42M 21M 21M 51% /boot
tmpfs 38M 0 38M 0% /run/user/1000
В файле журнала (octoprint.log
) с уровнем вывода , установленным на DEBUG
, я мог видеть запись:
2020-06-06 12:19:52,261 - octoprint.plugins.PrusaMeshMap - INFO - Generating heatmap
2020-06-06 12:19:52,288 - py.warnings - WARNING -
/home/pi/oprint/local/lib/python2.7/site-packages/matplotlib/pyplot.py:522:
RuntimeWarning: More than 20 figures have been opened.
Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are
retained until explicitly closed and may consume too much memory.
(To control this warning, see the rcParam `figure.max_open_warning`).
max_open_warning, RuntimeWarning)
Как видите, это было в 12:19. Последнее изображение, которое я видел, относится к 12:37.
Журналы также содержат сообщение в 12:40:
2020-06-06 12:40:39,262 - octoprint.util.comm - ERROR - Error while processing hook PrusaMeshMap:
Traceback (most recent call last):
File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint/util/comm.py", line 2849, in _readline
ret = hook(self, ret)
File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint_PrusaMeshMap/__init__.py", line 90, in mesh_level_check
self.mesh_level_generate()
File "/home/pi/oprint/local/lib/python2.7/site-packages/octoprint_PrusaMeshMap/__init__.py", line 236, in mesh_level_generate
fig.savefig(self.get_asset_folder() + '/img/heatmap.png', bbox_inches="tight")
[...]
File "/home/pi/oprint/local/lib/python2.7/site-packages/matplotlib/image.py", line 512, in _make_image
output = self.to_rgba(output, bytes=True, norm=False)
File "/home/pi/oprint/local/lib/python2.7/site-packages/matplotlib/cm.py", line 259, in to_rgba
xx = (xx * 255).astype(np.uint8)
MemoryError
В 12:46 я перезагрузил систему
2020-06-06 12:46:08,761 - octoprint.server.api.system - INFO - Performing command for core:reboot: sudo shutdown -r now
но, конечно, эта графика все еще отсутствует, и последняя доступная графика-это та, что с 12:37, Поэтому после перезагрузки нужно снова запустить выравнивание mesh-стола.
И все же не повезло...
OctoPrint версия 1.4.0, OctoPi версия 0.15.0 PE, плагин Prusameshmap: 0.3.0. Насколько я могу судить, это последняя доступная версия.
Что я могу сделать, чтобы снова начать выравнивание сетчатого стола?
@Thomas Weller, 👍2
Обсуждение2 ответа
Лучший ответ:
Я отформатировал SD-карту и установил Octoprint с нуля. Это ужасно, потому что я потерял все модели, которые загрузил.
Похоже, это ошибка в __init__.py OctoPrint-PrusaMeshMap (архивный репозиторий Github).
Этот код сохраняет тепловую карту в следующей строке:
fig.savefig(self.get_asset_folder() + '/img/heatmap.png', bbox_inches="tight")
Он использует Pyplot
import matplotlib.pyplot as plt
и поэтому код, вероятно, должен использовать (непроверенный!)
plt.close(fig)
del fig
чтобы освободить ресурсы. К сожалению, это невозможно записать как проблему, потому что репозиторий Github находится в архивном режиме и, следовательно, доступен только для чтения.
Вы нашли ошибку в плагине OctoPrint. Как вы заметили, одновременно можно создать/открыть не более 20 графиков. Это означает, что разработчик неправильно реализовал pyplot, это распространенная ошибка, с которой я сталкивался сам раз или два. Вы должны уведомить разработчика.
Проблема в том, что старый граф не уничтожен или не обновлен должным образом (я думаю, что он предназначен для обновления графика). Код проходит процедуру создания графика несколько раз, и после 20 графиков он выдаст сообщение об ошибке.
Если вы сбросите Pi или перезагрузите сервер Octoprint, то, вероятно, вам будет полезно перейти еще на 20 графиков.
- Клиппер, похоже, не настраивает Z после BED_MESH_CALIBRATE
- Нормальные заменители Raspberry Pi для запуска Octoprint или аналогичного ПО для Prusa i3 MK3S+?
- Рабочий стол Marlin, выравнивающий шаблон проверки сетки, игнорирующий смещение дома
- Зависает веб-страница OctoPrint (настройка на Raspberry Pi под управлением Raspbian)
- Настройка UBL впервые на Marlin 2.x на Prusa i3, как часто надо выравнивать стол с помощью G29?
- Прекращает ли Octoprint печать при обнаружении сбоя?
- Автоматическое выравнивание стола с сенсорным датчиком BL, падающим на стол
- Octoprint не обнаруживает последовательный порт нулевого RPi
Это все еще проблема? Я подозреваю, что это ошибка в плагине. Примечание [этот отчет об ошибке](https://github.com/PrusaOwners/OctoPrint-PrusaMeshMap/issues/31), это, вероятно, тот же вопрос, но он был закрыт!, @0scar
@0scar: он был закрыт, но с ним не связано исправление кода., @Thomas Weller