Настройка кинематики в EMC2

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение PKM »

Dmaster писал(а):а нафига нам подгружать файл другой кучерявой кинематики? Мы туда ссылаться будем, на какие-то переменные? не лучше-ль сразу сюды необходимый кусок кода сунуть?
Не лучше. В этом файле объявлены некие типы и функции, общие для всех. Сюда лучше даже и не лезть.
Dmaster писал(а):откуда приперлась переменная PM_PI
Из библиотеки Posemath. Это 3.141526... :)

Тебя интересует конкретно два места:

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

PmCartesian r = s2r(*(haldata->pivot_length) + joints[8], joints[5], 180.0 - joints[4]);
pos->tran.x = joints[0] + r.x;
pos->tran.y = joints[1] + r.y;
pos->tran.z = joints[2] + *(haldata->pivot_length) + r.z;
и

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

PmCartesian r = s2r(*(haldata->pivot_length) + pos->w, pos->c, 180.0 - pos->b);
joints[0] = pos->tran.x - r.x;
joints[1] = pos->tran.y - r.y;
joints[2] = pos->tran.z - *(haldata->pivot_length) - r.z;
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение Dmaster »

PKM писал(а):Сюда лучше даже и не лезть.
лезть конечно не надо, но понимать следовало бы)
PKM писал(а):Тебя интересует конкретно два места:
Спасибо) так вот начну спрашивать)
PmCartesian r = s2r(*(haldata->pivot_length) + joints[8], joints[5], 180.0 - joints[4]);
Тут ясно илняется длясполняется какой-то макрос. он наверное из дугой кинематики (смею предположить). вычисляется значение r для каждого из вариантов.
pos->tran.x = joints[0] + r.x;
что за tran?
" Linux CNC - наше всё"
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение PKM »

есть такая структура pos
в которой
pos->tran.x
pos->tran.y
pos->tran.z
pos->a
pos->b
pos->c
pos->u
pos->v
pos->w
соответствующие координаты рабочего органа

функция s2r описана чуть выше, считает компоненты 3Д вектора по его радиусу и двум углам.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение Serg »

Dmaster писал(а):а нафига нам подгружать файл другой кучерявой кинематики?
Там обявления типов, которе тут будут использоваться. kinematics.h в свою очередь пождгружает другие файлы - так можно половину linuxcnc себе в код вставить и потеряться там... :)
Dmaster писал(а):потом при ссылке на него будет вычисляться..
Нет, потом везде где встретися слово "d2r" оно будет просто заменено на то, что в определении после пробела.
Dmaster писал(а):но вот откуда приперлась переменная PM_PI и что это такое?.
Очевидно это значение числа π, определено где-то во включаемых файлах, скорее всего в каком-нибудь posemath.h.
Dmaster писал(а):Это , как я понял мы создаем в хале новый пин.
Нет, это переменная для хранения его значения.
Dmaster писал(а):тут мы объявляем статические локальные переменные
Нет, это объявление функции.
Dmaster писал(а):но вот что такое double мне не ясно нифига
тип переменной.
Dmaster писал(а):Пока хватит
Я тебе одын умный вэщь скажу, только ты нэ абижайся. (c) Рубик Хачикян.
Без знания хотя-бы азов языка C тебе всё это не осилить...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение PKM »

UAVpilot писал(а):Без знания хотя-бы азов языка C тебе всё это не осилить...
Я же осиливаю... интуитивно :hehehe:
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение Serg »

А зачем заниматься этой интуитивной фигнёй с неизвестным результатом в итоге, когда в инете лежит огромное множество хороших книг по языку C?.. Разве что свободное время некуда девать...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение nkp »

UAVpilot писал(а): в инете лежит огромное множество хороших книг по языку C?
наличие хороших книг еще не означает легкости восприятия :hehehe:
си такой себе ассемблер высокого уровня - чтоб хорошо знать - нужно знать как работает компьютер
не - ну конечно можно простенькое что нить "изобразить" ,но хоцца большего...
а там С++ ...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение PKM »

Нет времени методично изучать С начиная с азов. А так постепенно, по ходу дела... С помощью гугла, разумеется.
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение PKM »

И опять же, основная проблема - разобраться, что они там наворотили в емс. Логика работы, а не синтаксис.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение Serg »

Никто не предлагает "методично начиная с азов". Достаточно просто освоить эти самые азы. Мы тут уже вторую страницу их разжёвываем вместо того, чтоб заняться собственно кинематикой...
PKM писал(а):И опять же, основная проблема - разобраться, что они там наворотили в емс. Логика работы, а не синтаксис.
Без знания синтаксиса логику работы понять будет практически невозможно.

Простейший пример:
Есть две функции:

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

void f1(int v) {
  v++;
}

void f2(int *v) {
  *v++;
}
Вопрос: в чём разница и почему?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение Impartial »

PKM писал(а):Нет времени методично изучать С начиная с азов. А так постепенно, по ходу дела... С помощью гугла, разумеется.
Понимание С приходит с пониманием подобных выражений char (*(*x())[])().
Гугл тут, к сожалению бессилен.
Поэтому лучше учить.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение nkp »

Impartial писал(а):(*(*x())[])().
это скорей иероглиф :hehehe:
UAVpilot писал(а):Вопрос: в чём разница и почему?
вторая красивше - со звёздочками ;) не?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение Serg »

nkp писал(а):вторая красивше - со звёздочками ;) не?
Они принципиально разные, даже результат их работы будет разный...

P.S. Кстати, во второй специально допущена ошибка - в лучшем случае результат будет отличаться от ожидаемого, а в худшем программа может глючить совершенно непредсказуемым образом... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение PKM »

Да кто спорит. Учить лень только ;) Мотивации не хватает

Первая функция делает инкремент V
Во второй указатель увеличится на позицию.
Указатели меня напрягают, но почти уже привык...
Impartial писал(а):Гугл тут, к сожалению бессилен.
Конкретно эта функция разобрана в гугле... но это не опровергает, конечно :)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение Serg »

PKM писал(а):Конкретно эта функция разобрана в гугле... но это не опровергает, конечно :)
А какая ошибка там допущена гугл не говорит? :)

А вот ещё я тут с кинематиками развлекаюсь, можешь понять логику того, что здесь происходит?

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

joint_offset(i)  = offset[i];
:)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение nkp »

UAVpilot, напиши про ошибку - уже спать надо , буду думать - не усну :hehehe: :thinking:
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение Impartial »

Разобран потому, что из настольной книжки сишника. http://people.toiit.sgu.ru/Sinelnikov/P ... _Ritch.pdf
Я бы не рискнул такое написать.
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение PKM »

UAVpilot писал(а):А какая ошибка там допущена гугл не говорит?
Говорит, что зависит от языка: С или С++. В одном из них она ошибочна.
Но таких функций в линуксе нет, к счастью... :)
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение PKM »

UAVpilot писал(а):А вот ещё я тут с кинематиками развлекаюсь, можешь понять логику того, что здесь происходит?
Не издевайся, я пока еще по примерам программирую :)
Данный нюанс применения скобок хотелось бы знать :)

А что за кинематика? Для твоего мега-станка?
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Настройка кинематики в EMC2

Сообщение PKM »

UAVpilot писал(а):joint_offset(i)  = offset;

Не могу, объясняй :)
Ответить

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