Графити бот и блок управления EggBot

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Графити бот и блок управления EggBot

Сообщение 2cme »

После пуска EggBot, решил приспособить блок управления от EggBot к графити боту (http://hektor.ch), который давно хотел повторить.
Nick, пожалуйста помоги, напиши расширение для Inkscape, которое позволяет выполнять печать. Возможно можно адаптировать решение из этой темы Graffiti-cnc Треугольная система координат.
В сети нашел только этот, возможно поможет.
И еще EBBCommands.

http://hektor.ch/Work/In+a+Beautiful+Pl ... Place.mov/
Вложения
Exhebition.jpg (4818 просмотров) <a class='original' href='./download/file.php?id=6211&mode=view' target=_blank>Загрузить оригинал (22.08 КБ)</a>
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

О, прототип оказывается есть. Да, на нем имеет смысл делать все эти преобразования из Graffiti.

Вот, что мне нужно - нужен пример входного файла для eggbot. Он умеет управлять сразу двумя осями? Т.е. может ли он выполнять что-то вроде G00 X-- Y--?
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Команды отправляются как на COM порт (физически это виртуальный USB COM порт), формат команд посмотри EBBCommands. После выполнения команды приходит ответ 'ok'.
Насколько я понял G00 X-- Y-- тождественна команда:

Код: Выделить всё

The "SM" Command (stepper motor move)

    Format: "SM,<duration>,<axis1>,<axis2><CR>"
        <duration> is a value from 1 to 65,535 and is in milliseconds. It represents the total length of time you want this move to take.
        <axis1> and <axis2> are values from -32,767 to +32,767 and represent the number of steps for each motor to take in <duration> milliseconds.
        If both <axis1> and <axis2> are zero, then a delay of <duration> ms is executed. <axis2> is an optional value, and if it is not included in the command, zero steps are assumed for axis 2.

    Use this command to make the motors draw a straight line at constant velocity. The maximum speed that the EBB can generate is 25,000 steps/s. It is helpful to use this command with zeros for both <axis> parameters after moving the pen up or down to give it time to finish moving before starting the next motor move.
    Example: "SM,1000,250,-766"
    Return Packet: "OK"

Желательно чтобы команды отправлялись из Inkscape, подобно оригинальному расширению EggBot Control.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

Ага, тогда все, что нужно - сделать Gкод при помощи inkscape и дописать простенький процессор, который переводи команды типа
G01 в "SM,<duration>,<axis1>,<axis2><CR>"

Хотя, похоже придется парсить Gкод, т.к. в этом SM команды задаются в относительных координатах. И еще надо как-то скорость пересчитывать.
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Во вложении орининальное расширение, может будет полезно. Там на python все написано.
В папке "serial" - работа с COM портом.
Вложения
Eggbot2.2.1.zip
(188.95 КБ) 597 скачиваний
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Nick писал(а):Хотя, похоже придется парсить Gкод, т.к. в этом SM команды задаются в относительных координатах. И еще надо как-то скорость пересчитывать.
А зачем такие сложности? Может посмотреть как это сделано в оригинальном расширении и добавить функцию преобразования одной системы координат в другую, или там все намного сложнее?
Насколько я понял вот функция отвечающая за печать, но я не силен в python.

Код: Выделить всё

	def plotToEggBot( self ):
		'''Perform the actual plotting, if selected in the interface:'''
		#parse the svg data as a series of line segments and send each segment to be plotted

		if self.serialPort is None:
			return

		if self.options.startCentered and ( not self.getDocProps() ):
			# Cannot handle the document's dimensions!!!
			inkex.errormsg( gettext.gettext(
			'The document to be plotted has invalid dimensions. ' +
			'The dimensions must be unitless or have units of pixels (px) or ' +
			'percentages (%). Document dimensions may be set in Inkscape with ' +
			'File > Document Properties' ) )
			return

		# Viewbox handling
		# Also ignores the preserveAspectRatio attribute
		viewbox = self.svg.get( 'viewBox' )
		if viewbox:
			vinfo = viewbox.strip().replace( ',', ' ' ).split( ' ' )
			if ( vinfo[2] != 0 ) and ( vinfo[3] != 0 ):
				sx = self.svgWidth / float( vinfo[2] )
				sy = self.svgHeight / float( vinfo[3] )
				self.svgTransform = parseTransform( 'scale(%f,%f) translate(%f,%f)' % (sx, sy, -float( vinfo[0] ), -float( vinfo[1] ) ) )

		self.ServoSetup()

		# Ensure that the engraver is turned off for the time being
		# It will be turned back on when the first non-virtual pen-down occurs
		if self.options.engraving:
			self.engraverOff()

		if bDebug:
			self.debugOut = open( DEBUG_OUTPUT_FILE, 'w' )
			if bDrawPenUpLines:
				self.debugOut.write( 'IN;SP1;' )
			else:
				self.debugOut.write( 'IN;PD;' )

		try:
			# wrap everything in a try so we can for sure close the serial port
			#self.recursivelyTraverseSvg(self.document.getroot())
			self.penDownActivatesEngraver = True
			self.recursivelyTraverseSvg( self.svg, self.svgTransform )
			self.penUp()   #Always end with pen-up

			# Logically, we want to turn the engraver off here as well,
			# but we put that in our finally clause instead
			# self.engraverOff()

			# return to home, if returnToHome = True
			if ( ( not self.bStopped ) and self.options.returnToHome and ( self.ptFirst ) ):
				self.fX = self.ptFirst[0]
				self.fY = self.ptFirst[1]
				#self.penUp()
				self.nodeCount = self.nodeTarget    # enablesfpx return-to-home only option
				self.plotLineAndTime()
			#inkex.errormsg('Final node count: ' + str(self.svgNodeCount))  #Node Count - Debug option
			if ( not self.bStopped ):
				self.svgLayer = 0
				self.svgNodeCount = 0
				self.svgLastPath = 0
				self.svgLastPathNC = 0
				self.svgTotalDeltaX = 0
				self.svgTotalDeltaY = 0

		finally:
			# We may have had an exception and lost the serial port...
			self.penDownActivatesEngraver = False
			if ( not ( self.serialPort is None ) ) and ( self.options.engraving ):
				self.engraverOff()
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Еще как вариант, может трансформировать сам рисунок перед печатью.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

2cme писал(а):self.plotLineAndTime()
Насколько я понял, вот эта функция делает расчет вывода...

В пасинге в принципе ничего особо сложного нет... попробую сегодня вечером накатать...

Краткая инструкция по пользованию Graffiti:
Вложения
gcodetools - graffiti.png (4774 просмотра) <a class='original' href='./download/file.php?id=6230&mode=view' target=_blank>Загрузить оригинал (195.51 КБ)</a>
gcodetools graffiti.svg
(222.29 КБ) 1018 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

А вот и скриптик:
Пользовать его так:
python gcode-eggbot-converter.py graffiti.ngc

где graffiti.ngc - выход graffiti от gcodetools.
На выхде появится файл graffiti.ngc.egg, который будет содержать команды в формате EggBot. Останется только построчно скормить его в com.

PS в начале скрипта есть три переменные задающие масштаб:
scale_x = 100 # (steps per 1 unit)
scale_y = 100 # (steps per 1 unit)
scale_f = 1. # (1 = (Feed) mm/min )
Вложения
gcode-eggbot-converter.py.tar.gz
(719 байт) 754 скачивания
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Не получается создать graffiti.ngc.
Открыл файл gcodetools graffiti.svg, запустил Graffiti (gcodetools 1.7), нажал применить:

Код: Выделить всё

Warning! Tool has parameter that default tool has not ('Lift knife at corner ':'0.0')
Warning! There are some paths in the root of document, but not in any layer! Using Bottom-most layer for them.
No paths are selected! Trying to work on all available paths.
Traceback (most recent call last):
File "gcodetools.py",  line 6749, in <module>
   gcodetools.affect()
...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

А дальше что в ошибке?
Блин совсем забыл сегодня пофиксил несколько багов в gcodetools-dev, т.к. с прошлой версией он выдавал ошибки. Но забыл сделать push в репозиторий на ланчпаде... Завтра вывешу, только бы не забыть...
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

ok, Жду.
Nick писал(а): Останется только построчно скормить его в com.
На этапе отладки сделаю через PuTTY, а потом можно сделать через Inkscape?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

В принципе - можно будет и через сделать, но сначала лучше отработать схему на макете. Если будет нормально работать, то доведем до ума.
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Скачал gcodetools-dev, установил, но почемуто не совсем корректно установилось (рисунки во вложении), в чем я ошибся?
После выполения Graffiti выдало сообщени:

Код: Выделить всё

Warning! There are some paths in the root of the document, but not in any layer! Using bottom-most layer for them.
No paths are selected! Trying to work on all available paths.
Будут пробывать конвертировать для EggBot.
Вложения
gte2.PNG (4740 просмотров) <a class='original' href='./download/file.php?id=6251&mode=view' target=_blank>Загрузить оригинал (14.46 КБ)</a>
gte1.PNG
gte1.PNG (4.96 КБ) 4740 просмотров
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

Выполни в консоли python create_inx.py в папке, куда все скачал - тогда создадутся все необходимые формочки расширений.
2cme писал(а):Warning! There are some paths in the root of the document, but not in any layer! Using bottom-most layer for them.
Ты svg в чем-то другом создавал?
Когда выберешь контур снизу пишется в каком слое он находится, если там "корень" - значит контур не в слоях, а просто в корне документа.
Лучше всего сделать Файл-Новый и скопировать туда нужные контуры - так можно избежать большинства проблем с svg полученными со стороны.
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Nick писал(а):Лучше всего сделать Файл-Новый и скопировать туда нужные контуры - так можно избежать большинства проблем с svg полученными со стороны.
Nick, пожалуйста сделай файл-заготовку, в который достаточно будет скопировать рисунок.
Nick писал(а):Выполни в консоли python create_inx.py в папке, куда все скачал - тогда создадутся все необходимые формочки расширений.
Ок, понял (;
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

Да там просто все. Открываешь Graffiti в нем Orientation Points, выбираешь Graffiti point и два раза применить. Появятся два маркера, перетаскиваешь их на нужные места. Потом открываешь вкладку Graffiti и жмешь применить. Все.

ЗЫ в этом сообщении есть svg Графити бот и блок управления EggBot #8
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Nick писал(а):В принципе - можно будет и через сделать, но сначала лучше отработать схему на макете. Если будет нормально работать, то доведем до ума.
Я через PuTTY команды выполняю сформированые gcode-eggbot-converter.py, очень утомительно. Nick пожалуйста сделай чтобы можно было из программы автоматом их отправлять. А также по возможнсть опцию выбора режима микрошага.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

Надо Gcodetools и Eggbot как-то скрестить...

А как оно вообще хоть что-то рисует или нет?
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Вот что получается при прямой печати из расширения EggBot (это без преобразования Graffiti):
Вложения
rg_eeb_01.png (4659 просмотров) <a class='original' href='./download/file.php?id=6629&mode=view' target=_blank>Загрузить оригинал (1.79 МБ)</a>
1234.svg
(14.95 КБ) 669 скачиваний
Последний раз редактировалось 2cme 21 июл 2012, 20:20, всего редактировалось 1 раз.
Ответить

Вернуться в «LinuxCNC»