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

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

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

Сообщение PKM »

Ага, надо предварительно запустить

sudo apt-get install libmodbus-dev
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

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

dan@dan-desktop:~/linuxcnc-dev/src$ make 
Makefile:71: Makefile.inc: Нет такого файла или каталога
Makefile:82: *** Makefile.inc must specify RTPREFIX and other variables.  Останов.
dan@dan-desktop:~/linuxcnc-dev/src$ ./configure sudo make setup
configure: WARNING: you should use --build, --host, --target
configure: WARNING: you should use --build, --host, --target
configure: WARNING: you should use --build, --host, --target
checking build toplevel... /home/dan/linuxcnc-dev
checking installation prefix... run in place
checking for grep... /bin/grep
checking for egrep... /bin/egrep
checking for RT dir... Using /usr/realtime-2.6.32-122-rtai/bin/rtai-config as the RT signature
checking for location of kernel headers... using value from RTS: /usr/src/linux-headers-2.6.32-122-rtai
checking for cc version... found gcc in rtai-config
checking for sudo-gcc... no
checking for sudo-gcc... no
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for usability of rdtscll from asm/msr.h... no
checking for usability of linux/hidraw.h... yes
checking for libmodbus3... yes - version 3.0.1
checking for libusb-1.0... no
configure: error: libusb-1.0 not found!
install with "sudo apt-get install libusb-1.0-0-dev" or disable with
"configure --without-libusb-1.0"
dan@dan-desktop:~/linuxcnc-dev/src$ . ./scripts/rip-environment
bash: ./scripts/rip-environment: Нет такого файла или каталога
dan@dan-desktop:~/linuxcnc-dev/src$ 
" Linux CNC - наше всё"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Dmaster писал(а):Вроде-бы варварский способ помог. COMP засунулся., но пишет вот.
oot@dan-desktop:~# sudo comp --install dankins2.c
От root не надо работать - вопервых домашний каталог не твой, потому файлы и не находит, а во вторых это просто опасно для здоровья системы.
Nick писал(а):я так понимаю ему вот этого файлика не хватает:
/usr/share/linuxcnc/Makefile.modinc
Для компиляции одного comp'а мало, нужны всакие библиотеки и .h файлы, которые и входят в состав linuxcnc-dev.

Дерево проекта не нужно, все необходимые файлы есть в составе linuxcnc-dev, а comp/halcompile знает где их искать в системе.

P.S. Когда не хватает знаний как правильно надо делать и вы начинаете "подпихивать" в систему какие-то сторонние файлы, то знайте, что с этого момента изначальному порядку в системе приходит копец и начинается "эра забавных и непонятных глюков", и обратной дороги как правило уже нет... :hottabych-still:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

UAVpilot писал(а):От root не надо работать - вопервых домашний каталог не твой, потому файлы и не находит, а во вторых это просто опасно для здоровья системы.
У меня прав COMP засовывать из под пользователя не было(... я сейчас всё это под пользователем пробую
" Linux CNC - наше всё"
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

UAVpilot писал(а):P.S. Когда не хватает знаний как правильно надо делать и вы начинаете "подпихивать" в систему какие-то сторонние файлы, то знайте, что с этого момента изначальному порядку в системе приходит копец и начинается "эра забавных и непонятных глюков", и обратной дороги как правило уже нет...
Мне всё равно систему сносить)) .. я её и так покочевряжил изрядно. А чем дерево проекта плохо?
" Linux CNC - наше всё"
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Dmaster писал(а):Кстати.. дебиан что-то наровит мне винт отформатировать, не хочет рядом с виндой сидеть.
Так выбери разметку вручную и сам сделай как тебе надо.
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

Nick писал(а): Так выбери разметку вручную и сам сделай как тебе надо.
Запутался в 2-х соснах) короче я всё снёс нафиг. сижу из по свежего дебиана)... Мне надо кинематику, а не интернетики в винде сидеть(
" Linux CNC - наше всё"
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

Ну что господа.. Смерть винды была не напрасной)))
sudo comp --install dankins2.c и всё установилось!!!!))) ругнулось на пару опечаток, но ничего.. поправил.. скомпилилось и установилось!))
" Linux CNC - наше всё"
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

вопервых код теперь выглядит так.

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

#include "kinematics.h"      /* these decls */
#include "posemath.h"
#include "hal.h"
#include "rtapi.h"
#include "rtapi_math.h"

#define d2r(d) ((d)*PM_PI/180.0)
#define r2d(r) ((r)*180.0/PM_PI)

#ifndef hypot
#define hypot(a,b) (sqrt((a)*(a)+(b)*(b)))
#endif

struct haldata {
    hal_float_t *pivot_length;
} *haldata;

// should not even be called
int kinematicsForward(const double *joints,
            EmcPose * pos,
            const KINEMATICS_FORWARD_FLAGS * fflags,
            KINEMATICS_INVERSE_FLAGS * iflags)
{

        
    // B correction
    double xzr = hypot(joints[0], joints[2]);
    double xztheta = atan2(joints[2], joints[0]) + d2r(joints[4]);

//U correction
   double zu = joints[6] * sin(d2r(joints[4]));
   double xu = joints[6] * cos(d2r(joints[4]));

  

    pos->tran.x = xzr * cos(xztheta) - joints[6];
    pos->tran.y = joints[1];
    pos->tran.z = xzr * sin(xztheta) - joints[8];

    pos->a = joints[3];
    pos->b = joints[4];
    pos->c = joints[5];
    pos->u = joints[6];
    pos->v = joints[7];
    pos->w = joints[8];

    return 0;
}

int kinematicsInverse(const EmcPose * pos,
            double *joints,
            const KINEMATICS_INVERSE_FLAGS * iflags,
            KINEMATICS_FORWARD_FLAGS * fflags)
{
 
        
    // B correction
    double xzr = hypot(pos->tran.x, pos->tran.z);
    double xztheta = atan2(pos->tran.z, pos->tran.x) - d2r(pos->b);



    // V correction is always in joint 1 only

    joints[0] = xzr * cos(xztheta) + pos->u;
    joints[1] = pos->tran.y ;
    joints[2] = xzr * sin(xztheta) + pos->w;

    joints[3] = pos->a;
    joints[4] = pos->b;
    joints[5] = pos->c;
    joints[6] = pos->u;
    joints[7] = pos->v;
    joints[8] = pos->w;

    return 0;
}

KINEMATICS_TYPE kinematicsType()
{
    return KINEMATICS_BOTH;
}

#include "rtapi.h"      /* RTAPI realtime OS API */
#include "rtapi_app.h"      /* RTAPI realtime module decls */

EXPORT_SYMBOL(kinematicsType);
EXPORT_SYMBOL(kinematicsInverse);
EXPORT_SYMBOL(kinematicsForward);
MODULE_LICENSE("GPL");

int comp_id;
int rtapi_app_main(void) {
    int result;
    comp_id = hal_init("dankins2");
    if(comp_id < 0) return comp_id;

    haldata = hal_malloc(sizeof(struct haldata));

    result = hal_pin_float_new("dankins2.pivot-length", HAL_IO, &(haldata->pivot_length), comp_id);
    if(result < 0) goto error;

    *(haldata->pivot_length) = 0.666;

    hal_ready(comp_id);
    return 0;

error:
    hal_exit(comp_id);
    return result;
}

void rtapi_app_exit(void) { hal_exit(comp_id); }


ИТАК! госопода! всё заработало!, но есть косяк странный.

всё выполнятеся как следует, при повороде оси B , Z и X отступают соответсвенно. (было X10 Z0 B0. даю b30 axis0 идёт из 10 в 8.9..что-то там, а axis2 из 0 в 5)
При использовании U W после поворота оси - задания на моторы идут верные.
(ТК по сути после поворота UW совпадают с XZ, то всё идёт верно U10 - axis0 идёт из 8.9..что-то там в точку 18.9..что-то там,
а W10 - axis2 из 5 идёт в 15.

Вроде красота!, НО
Если я из mdi переключусь в ручной режим всё КАААААААКК скакнёт в неизвестном направлении
Может это особенность такая?
" Linux CNC - наше всё"
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

в общем так.. при исполнении вот этого
g0x10
g0b30
g0u10 ( мы в точке axis0 18.66 axis2 5 )
включаю ручной режим ( стоим на месте)
переключаю назад в MDI
Скачек axis0 20 axis2 -3.70255e-16
" Linux CNC - наше всё"
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

Кстати.. у меня пропала кнопочка "задать отступ"! Я что -то не понял.., что., При использовании 5 координать привязываться нельзя?


PS. ГЛУПОСТЬ СМОРОЗИЛ!. а можно при переключении в ручной режим не включать отображение координат в joins , а оставить координаты?
для Joins сделать отдельную менюшку.. пущай висит.
И кнопочку привязок соответсвенно оставить рабочей.
" Linux CNC - наше всё"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

Dmaster писал(а):А чем дерево проекта плохо?
Тем, что нафик не нужно и может отличаться от установленной версии.
Dmaster писал(а):Если я из mdi переключусь в ручной режим всё КАААААААКК скакнёт в неизвестном направлении
Может это особенность такая?
Dmaster писал(а):PS. ГЛУПОСТЬ СМОРОЗИЛ!. а можно при переключении в ручной режим не включать отображение координат в joins , а оставить координаты?
Особенность. Надо в ручном режиме предварительно переключиться в "world mode". Меню Вид, два последних пункта.
собственно режим joints нужен только чтоб захомиться.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

Всё заработало прекрасно.. осталась одна проблема.

ATAN2
double xztheta = atan2(joints[2]-joints[8], joints[0]-joints[6]) + d2r(joints[4]);
при выполнении этого кода joints[2]-joints[8] не дай бог = 0 -получается скачек. выше 0 ниже 0 всё отлично, а если так, то кака.
joints[0]-joints[6] соотвественно
Чем подскажете?

Может отфильтровать как то с невозможностью 0 ?
" Linux CNC - наше всё"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

"кинематика" должна не только преобразовывать координаты в движения joints, но и ещё безопасно отрабатывать подобные казусы.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

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

Сообщение Сергей Саныч »

Вообще-то atan2 на то и atan2 (с двумя аргументами), чтобы безболезненно переносить такую ситуацию.
Чудес не бывает. Бывают фокусы.
el.nebrey
Новичок
Сообщения: 31
Зарегистрирован: 19 сен 2015, 13:50
Репутация: 2
Настоящее имя: Алексей Сергеевич Вазлёв
Контактная информация:

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

Сообщение el.nebrey »

Доброго времени.
Подскажите пожалуйста.
Есть уравнения кинематики. В таком виде они работали в Mach3
f(x)=540*sin(rad(x)) + 450*sin(rad (x+y))
f(y)=540*cos(rad(x)) + 450*cos(rad (x+y))
Но с ними Mach начал скорость поднимать, причину выявить не удалось. Решено было проверить возможность управления в linuxcnc. Но незнание синтаксиса мешает(
Какой должен быть вид этих уравнений для подстановки в файл кинематики?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

el.nebrey?опиши немного станок...(оси)
какие оси линейные ,какие поворотные ...
какая компоновка...(осей)
в принципе и так можно дать ответ - но с уточнениями будет точнее :)
el.nebrey
Новичок
Сообщения: 31
Зарегистрирован: 19 сен 2015, 13:50
Репутация: 2
Настоящее имя: Алексей Сергеевич Вазлёв
Контактная информация:

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

Сообщение el.nebrey »

X повортная, с плечем 540мм
на ее конце закреплена Y поворотная, с плечем 450мм
и уже на самомм конце линейная Z которая бегает вверх-вниз
X может вращаться на все 360 и больше прижелании
Y на 340 примерно
el.nebrey
Новичок
Сообщения: 31
Зарегистрирован: 19 сен 2015, 13:50
Репутация: 2
Настоящее имя: Алексей Сергеевич Вазлёв
Контактная информация:

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

Сообщение el.nebrey »

капаюсь сейчас в стандартной кинематике, но не вьеду, что такое tran
и как будто дублируются функции.)
pos->tran.y = joints[1]
joints[1] = pos->tran.y
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

всё "твоё" есть здесь:
http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=6693
Ответить

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