Страница 6 из 10

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

Добавлено: 09 янв 2015, 00:37
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;

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

Добавлено: 09 янв 2015, 00:59
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?

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

Добавлено: 09 янв 2015, 01:16
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Д вектора по его радиусу и двум углам.

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

Добавлено: 09 янв 2015, 02:02
Serg
Dmaster писал(а):а нафига нам подгружать файл другой кучерявой кинематики?
Там обявления типов, которе тут будут использоваться. kinematics.h в свою очередь пождгружает другие файлы - так можно половину linuxcnc себе в код вставить и потеряться там... :)
Dmaster писал(а):потом при ссылке на него будет вычисляться..
Нет, потом везде где встретися слово "d2r" оно будет просто заменено на то, что в определении после пробела.
Dmaster писал(а):но вот откуда приперлась переменная PM_PI и что это такое?.
Очевидно это значение числа π, определено где-то во включаемых файлах, скорее всего в каком-нибудь posemath.h.
Dmaster писал(а):Это , как я понял мы создаем в хале новый пин.
Нет, это переменная для хранения его значения.
Dmaster писал(а):тут мы объявляем статические локальные переменные
Нет, это объявление функции.
Dmaster писал(а):но вот что такое double мне не ясно нифига
тип переменной.
Dmaster писал(а):Пока хватит
Я тебе одын умный вэщь скажу, только ты нэ абижайся. (c) Рубик Хачикян.
Без знания хотя-бы азов языка C тебе всё это не осилить...

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

Добавлено: 09 янв 2015, 02:18
PKM
UAVpilot писал(а):Без знания хотя-бы азов языка C тебе всё это не осилить...
Я же осиливаю... интуитивно :hehehe:

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

Добавлено: 09 янв 2015, 02:25
Serg
А зачем заниматься этой интуитивной фигнёй с неизвестным результатом в итоге, когда в инете лежит огромное множество хороших книг по языку C?.. Разве что свободное время некуда девать...

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

Добавлено: 09 янв 2015, 02:33
nkp
UAVpilot писал(а): в инете лежит огромное множество хороших книг по языку C?
наличие хороших книг еще не означает легкости восприятия :hehehe:
си такой себе ассемблер высокого уровня - чтоб хорошо знать - нужно знать как работает компьютер
не - ну конечно можно простенькое что нить "изобразить" ,но хоцца большего...
а там С++ ...

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

Добавлено: 09 янв 2015, 02:37
PKM
Нет времени методично изучать С начиная с азов. А так постепенно, по ходу дела... С помощью гугла, разумеется.

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

Добавлено: 09 янв 2015, 02:39
PKM
И опять же, основная проблема - разобраться, что они там наворотили в емс. Логика работы, а не синтаксис.

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

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

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

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

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

void f2(int *v) {
  *v++;
}
Вопрос: в чём разница и почему?

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

Добавлено: 09 янв 2015, 02:47
Impartial
PKM писал(а):Нет времени методично изучать С начиная с азов. А так постепенно, по ходу дела... С помощью гугла, разумеется.
Понимание С приходит с пониманием подобных выражений char (*(*x())[])().
Гугл тут, к сожалению бессилен.
Поэтому лучше учить.

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

Добавлено: 09 янв 2015, 02:51
nkp
Impartial писал(а):(*(*x())[])().
это скорей иероглиф :hehehe:
UAVpilot писал(а):Вопрос: в чём разница и почему?
вторая красивше - со звёздочками ;) не?

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

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

P.S. Кстати, во второй специально допущена ошибка - в лучшем случае результат будет отличаться от ожидаемого, а в худшем программа может глючить совершенно непредсказуемым образом... :)

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

Добавлено: 09 янв 2015, 03:03
PKM
Да кто спорит. Учить лень только ;) Мотивации не хватает

Первая функция делает инкремент V
Во второй указатель увеличится на позицию.
Указатели меня напрягают, но почти уже привык...
Impartial писал(а):Гугл тут, к сожалению бессилен.
Конкретно эта функция разобрана в гугле... но это не опровергает, конечно :)

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

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

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

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

joint_offset(i)  = offset[i];
:)

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

Добавлено: 09 янв 2015, 03:11
nkp
UAVpilot, напиши про ошибку - уже спать надо , буду думать - не усну :hehehe: :thinking:

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

Добавлено: 09 янв 2015, 03:12
Impartial
Разобран потому, что из настольной книжки сишника. http://people.toiit.sgu.ru/Sinelnikov/P ... _Ritch.pdf
Я бы не рискнул такое написать.

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

Добавлено: 09 янв 2015, 03:13
PKM
UAVpilot писал(а):А какая ошибка там допущена гугл не говорит?
Говорит, что зависит от языка: С или С++. В одном из них она ошибочна.
Но таких функций в линуксе нет, к счастью... :)

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

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

А что за кинематика? Для твоего мега-станка?

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

Добавлено: 09 янв 2015, 15:12
PKM
UAVpilot писал(а):joint_offset(i)  = offset;

Не могу, объясняй :)