Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

Что я еще не знал о LinuxCNC, что нам еще предстоит сделать

Сообщение Nick » 16 сен 2013, 23:08

PKM писал(а):LinuxCNC как воздух нужен lookahead.

Блин, почему вы мне раньше об этом не говорили :pssdoff:?!? Какие там features!!!

В общем, давайте успокоимся и определим первостепенные задачи, которые нам предстоит планомерно решить.

Задачи


1. Определиться с Lookahead.
2. S-кривые разгонаторможения.
3. ...
25. LinuxCNC Features

ЗЫ эта тема будет прилеплена, чтобы вы не забывали о ней :twisted:! Пора сделать что-то полезное для LinuxCNC, пора возвращать долги.
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1332
Заслуга: Developer
Медальки:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение PKM » 16 сен 2013, 23:10

Забыл еще один пункт:

... PROFIT!!!
Аватара пользователя
PKM
Почётный участник
Почётный участник
 
Сообщения: 4037
Зарегистрирован: 31 мар 2011, 18:11
Откуда: Украина
Репутация: 591
Медальки:
Настоящее имя: Андрей

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение nkp » 16 сен 2013, 23:11

ты видел "планы" на lcnc3 ??
nkp
Мастер
 
Сообщения: 7066
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1113
Медальки:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение nkp » 16 сен 2013, 23:34

Nick писал(а):1. Определиться с Lookahead.

в емс lookahead =>readahead
(чтоб легче было искать)
Код: Выделить всёРазвернуть
nkp@nkp-desktop:~$ grep -rl 'readahead' /home/nkp/emc2-dev-80db2a2
/home/nkp/emc2-dev-80db2a2/docs/src/remap/structure.txt
/home/nkp/emc2-dev-80db2a2/include/emc.hh
/home/nkp/emc2-dev-80db2a2/bin/milltask
/home/nkp/emc2-dev-80db2a2/src/objects/emc/task/emctaskmain.o
/home/nkp/emc2-dev-80db2a2/src/emc/task/emctaskmain.cc
/home/nkp/emc2-dev-80db2a2/src/emc/rs274ngc/interp_python.cc
/home/nkp/emc2-dev-80db2a2/src/emc/rs274ngc/rs274ngc_pre.cc
/home/nkp/emc2-dev-80db2a2/src/emc/nml_intf/emc.hh

основа - /src/objects/emc/task/emctaskmain.cc
nkp
Мастер
 
Сообщения: 7066
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1113
Медальки:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение michael-yurov » 20 сен 2013, 12:07

S кривые очень сложная задача, на мой взгляд.
Кажется мне, что численным дифференцированием ее по простому не решить, из за слишком грубого разбиения. А при более мелком разбиении будет чрезмерно высокая нагрузка на процессор.

Хотя, это просто сумбурные мысли спросонья.

Nick писал(а):Пора сделать что-то полезное для LinuxCNC, поравозвращать долги.

P.S. поравозвращать - не так пишется. Правильно - поразвращать!
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
 
Сообщения: 10089
Зарегистрирован: 26 июл 2012, 00:10
Откуда: Новоуральск, Свердловская область.
Репутация: 3644
Медальки:
Настоящее имя: Михаил Львович

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение tooshka » 20 сен 2013, 12:10

michael-yurov писал(а): А при более мелком разбиении будет чрезмерно высокая нагрузка на процессор.

Мне кажется современные процессоры справятся с этой задачей. Можно еще проц на видеокарте подключить, только кто софт напишет?
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
tooshka
Почётный участник
Почётный участник
 
Сообщения: 1766
Зарегистрирован: 24 окт 2012, 14:26
Откуда: Нижний Новгород
Репутация: 204
Медальки:
Настоящее имя: Андрей

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение michael-yurov » 20 сен 2013, 12:33

tooshka писал(а):Мне кажется современные процессоры справятся с этой задачей. Можно еще проц на видеокарте подключить, только кто софт напишет?

Можно произвести геометрические расчеты ("векторные", что ли), они более сложные, но намного более производительные, и не имеют ограничений по точности.
Но в этом случае уже не получится обрабатывать всякие NURBs кривые, из за чрезмерной сложности.

Думаю, компромисным был бы вариант разбиения траектории на линейные сегменты, и дальнейший расчет, на основе геометрии.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
 
Сообщения: 10089
Зарегистрирован: 26 июл 2012, 00:10
Откуда: Новоуральск, Свердловская область.
Репутация: 3644
Медальки:
Настоящее имя: Михаил Львович

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick » 20 сен 2013, 12:34

Проц считает траекторию и пихает ее в очередь для выполнения это делается не в риалтайме, из очереди берется траектория и в риалтайме выгоняется на исполнительные устройства. Если очередь кончится - то обработка просто приостановится до заполнения... т.е. это не так страшно :)
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1332
Заслуга: Developer
Медальки:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение tooshka » 20 сен 2013, 12:45

Как вариант считать траекторию на каком нибудь i7, а реалтайм останется на атоме. Как это в реальности сварганить ХЗ.
А вот интересно можно ли на современных многоядерниках заблокировать на одном из ядер изменение частоты, а на других работать?
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
tooshka
Почётный участник
Почётный участник
 
Сообщения: 1766
Зарегистрирован: 24 окт 2012, 14:26
Откуда: Нижний Новгород
Репутация: 204
Медальки:
Настоящее имя: Андрей

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение michael-yurov » 20 сен 2013, 13:26

tooshka писал(а):Как вариант считать траекторию на каком нибудь i7, а реалтайм останется на атоме. Как это в реальности сварганить ХЗ.

Все это уже слишком.
Лучше грамотно оптимизировать программу.

Теоретически - задача намного проще, чем то, что способен решать бюджетный процессор, просто нужно грамотно ее решить.

НО! я то то хотел сказать совсем не об этом, а о том, что LookAhead намного важнее, чем S кривые ускорения.
И сделать многострочный LookAhead намного проще.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
 
Сообщения: 10089
Зарегистрирован: 26 июл 2012, 00:10
Откуда: Новоуральск, Свердловская область.
Репутация: 3644
Медальки:
Настоящее имя: Михаил Львович

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick » 20 сен 2013, 13:31

А где можно посмотреть исходники kmotion, надо посмотреть, как у них там все устроенно :)
Use the Console, Luke.
Аватара пользователя
Nick
Мастер
 
Сообщения: 22330
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1332
Заслуга: Developer
Медальки:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение aaleksander » 20 сен 2013, 14:16

А где можно почитать про S-кривые и LookAHead?
А то как программист, помочь хочу, но в предметной области еще не очень разбираюсь.
aaleksander
Мастер
 
Сообщения: 576
Зарегистрирован: 23 авг 2013, 18:04
Откуда: г. Ухта
Репутация: 117
Медальки:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение michael-yurov » 20 сен 2013, 14:37

Nick писал(а):А где можно посмотреть исходники kmotion, надо посмотреть, как у них там все устроенно :)

Полагаю, расчет траектории где-то в какой-то библиотеке описан.
Вот все, что есть: http://yadi.sk/d/X_UzYScY9bTpT
Я установил Microsoft Visual Studio, и открыл проект из папки KMotion431j\PC VC Examples\KMotionCNC

Где там что там дальше - для меня загадка.

Вообще сама программа запускается из папки KMotion431j\KMotion\Release
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
 
Сообщения: 10089
Зарегистрирован: 26 июл 2012, 00:10
Откуда: Новоуральск, Свердловская область.
Репутация: 3644
Медальки:
Настоящее имя: Михаил Львович

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение michael-yurov » 20 сен 2013, 14:55

aaleksander писал(а):А где можно почитать про S-кривые и LookAHead?
А то как программист, помочь хочу, но в предметной области еще не очень разбираюсь.

Если вкратце и по простому, то:
Станок имеет массу и мгновенно ускоряться не может, он инертен, и моторы не всесильные, а это значит, что двигаться он может с ограниченным ускорением.
Для каждой оси - свое ограничение в зависимости от массы, подвижных частей и привода.
При все при этом, нельзя допустить ситуации, где одна ось успевает делать свою работу - а вторая отстает из за ограничения ускорения.
Т.е. расчет движения по траектории со ускорениями должен быть произведен заранее, с учетом ограничения всех осей.

Так вот, если все это дело сравнить с движением на автомобиле по криволинейной дороге, то Look Ahead - это дальность взгляда водителя.
Если водитель не представляет, что будет через 10 метров (густой туман), то он не может смело двигаться со скоростью 150 км/ч, т.к. в случае возникновения опасности или изменения траектории просто не успеет сбросить скорость.
Если же водитель наизусть помнит всю трассу (ну, или ближайшие несколько километров), то он сможет двигаться с максимальной допустимой скоростью на данной траектории так, что в кювет он не уедет и на ближайшем перекрестке сможет остановиться и повернуть.

Т.е. если буфер LookAhead маленький, то придется двигаться по траектории очень осторожно, а это потеря времени, и постоянные ускорения и замедления в начале и конце каждого маленького участка трассы.


На тему S кривых,
обычно станки двигаются с ограничением ускорений по осям так, что ускорение в каждый момент времени либо нулевое, либо максимальное, либо максимальное отрицательное.
Если сравнивать с автомобилями, то получается движение, как у троллейбуса - либо газ в пол, либо движение, либо торможение.

А вот движение с ускорением по S кривой - это плавное нажатие педали газа (не изменение скорости, а именно плавное изменение ускорения), и плавное нажатие и отпускание педали тормоза.

Хотя, можно двигаться, и как троллейбус, но все же нагрузка на механику будет меньше, если ускорение будет изменяться плавно.

Все бы хорошо, но если просто ограничить изменение ускорения получится рассогласование движения по осям.

Т.е. в итоге задача планировщика траектории состоит в том, чтобы так ограничить скорость движения на каждом участке траектории, чтобы скорость менялась плавно, а в случае с S-кривыми - еще и ускорение менялось плавно.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
 
Сообщения: 10089
Зарегистрирован: 26 июл 2012, 00:10
Откуда: Новоуральск, Свердловская область.
Репутация: 3644
Медальки:
Настоящее имя: Михаил Львович

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение aaleksander » 20 сен 2013, 15:11

Спасибо за развернутый ответ.
Получается, что задача планировщика траектории - в нужных местах расставить G08, G09, G96 с нужными значениями? Так чтоли? :thinking:
Или вы хотите тюнить LinuxCNC чтобы он это на лету делал?

P.S. чтобы не было рассогласования по осям, надо рулить вектором перемещения, а не каждой координатой отдельно.

Я пока в этой области чайник, но интересно.
aaleksander
Мастер
 
Сообщения: 576
Зарегистрирован: 23 авг 2013, 18:04
Откуда: г. Ухта
Репутация: 117
Медальки:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Nick » 20 сен 2013, 15:12

michael-yurov писал(а):...
Т.е. если буфер LookAhead маленький, то придется двигаться по траектории очень осторожно, а это потеря времени, и постоянные ускорения и замедления в начале и конце каждого маленького участка трассы.

Это то понятно, интересует взгляд на все это с точки зрения математики :).
Насколько я понимаю, в LinuxCNC при скруглении траектории по G61 (т.е. без скруглений) рассчитывается скорость исходя из торможения в точке угла, а при добавлении g64 делается тоже самое, только к расстоянию до угла прибавляется значение параметра P... Т.е. все получается достаточно просто :).

michael-yurov писал(а):Все бы хорошо, но если просто ограничить изменение ускорения получится рассогласование движения по осям.

Т.е. в итоге задача планировщика траектории состоит в том, чтобы так ограничить скорость движения на каждом участке траектории, чтобы скорость менялась плавно, а в случае с S-кривыми - еще и ускорение менялось плавно.

В принципе для неприрывного случая проблем нет. Проблема возникает при перемещении с кусочно непрерывным (даже кусочно постоянным) jerk. Вот тут начинают возникать всякие приколы связанные с тем, что тяжело рассчитать расстояние до остановки в случаях когда точки перелома попадают на середину интервала разбиения по времени.

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

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение michael-yurov » 20 сен 2013, 15:16

А что такое G08, G09, G96?

aaleksander писал(а):Или вы хотите тюнить LinuxCNC чтобы он это на лету делал?

Нам нужно, имея на руках G-код в текстовом виде, получить в итоге массив точек в пространстве чтобы они лежали на траектории через фиксированные промежутки времени, уже с учетом ограничения скоростей и ускорений для всех осей и для ограничения скорости подачи.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
 
Сообщения: 10089
Зарегистрирован: 26 июл 2012, 00:10
Откуда: Новоуральск, Свердловская область.
Репутация: 3644
Медальки:
Настоящее имя: Михаил Львович

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение michael-yurov » 20 сен 2013, 15:21

Nick писал(а):Это то понятно, интересует взгляд на все это с точки зрения математики .
Так это я так, для aaleksander объяснял задачу.

Nick писал(а):Насколько я понимаю, в LinuxCNC при скруглении траектории по G61 (т.е. без скруглений) рассчитывается скорость исходя из торможения в точке угла, а при добавлении g64 делается тоже самое, только к расстоянию до угла прибавляется значение параметра P... Т.е. все получается достаточно просто
Насколько я понимаю - там при активации G64, мы знаем, какой радиус скругления будет между следующими сегментами и можем двигаться с такой скоростью, чтобы к точке начала скругления успеть сбросить скорость до величины допустимой при движении по этому радиусу скругления (можно грубо посчитать на основе центростремительного ускорения).
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
 
Сообщения: 10089
Зарегистрирован: 26 июл 2012, 00:10
Откуда: Новоуральск, Свердловская область.
Репутация: 3644
Медальки:
Настоящее имя: Михаил Львович

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение Сергей Саныч » 20 сен 2013, 15:25

aaleksander писал(а):Или вы хотите тюнить LinuxCNC чтобы он это на лету делал?
Да. Поскольку система с открытым кодом, ничто не препятствует (теоретически) любым ее усовершенствованиям.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
 
Сообщения: 7452
Зарегистрирован: 30 май 2012, 14:20
Откуда: Тюмень
Репутация: 2281
Медальки:

Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел

Сообщение michael-yurov » 20 сен 2013, 15:27

Nick писал(а):В принципе для неприрывного случая проблем нет.
Если речь о непрерывно дифференцируемой функции, то как бы у нас вся траектория такая, кроме точек, где необходимо остановитсья для смены направления.

Nick писал(а):Проблема возникает при перемещении с кусочно непрерывным (даже кусочно постоянным) jerk.
Вот это не понимаю. У нас же Jerk ограничен фиксирвоанным значением, он либо максимальный, либо, минимальный, либо нулевой.

Nick писал(а):Вот тут начинают возникать всякие приколы связанные с тем, что тяжело рассчитать расстояние до остановки в случаях когда точки перелома попадают на середину интервала разбиения по времени.
Да и наплевать. Все равно при дроблении по 1 мс не получится достаточно плавно менять ускорение.

Nick писал(а):Как таковую кривую вписать в график движения не так уж и сложно...
А я над этим несколько суток думал.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
 
Сообщения: 10089
Зарегистрирован: 26 июл 2012, 00:10
Откуда: Новоуральск, Свердловская область.
Репутация: 3644
Медальки:
Настоящее имя: Михаил Львович

След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: Alex lamaka, alex998, amikhailov, Antony, artclonic, Bing [Bot], Chili, Cvazist, Dimka_almighty, DrDWoo, fara8018, foto-boss, frezeryga, Google [Bot], Ifish, jo_key, key, kts, Lafayette, Leonid Vs, leprud, Lunatic, Majestic-12 [Bot], McNikolson, MGG, michael-yurov, nik1, NKS, nva-tuning, Рамиль, peratron, Quark, Rion, Rom327, savo, scroober, SeReGa Sh, Smlua, softovik, sorter, SVP, toxakorzh, tsurika, Uda4LIVEc, verser, viael, Yahoo [Bot], Yandex [bot], Yarrr, ЧПУ-шник, шпиндель

Поделиться

Reputation System ©'