Настройка кинематики в EMC2
- PKM
- Почётный участник

- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Настройка кинематики в EMC2
Ага, надо предварительно запустить
sudo apt-get install libmodbus-dev
sudo apt-get install libmodbus-dev
- Dmaster
- Мастер
- Сообщения: 1272
- Зарегистрирован: 15 июл 2011, 13:36
- Репутация: 476
- Контактная информация:
Re: Настройка кинематики в EMC2
Код: Выделить всё
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
От root не надо работать - вопервых домашний каталог не твой, потому файлы и не находит, а во вторых это просто опасно для здоровья системы.Dmaster писал(а):Вроде-бы варварский способ помог. COMP засунулся., но пишет вот.
oot@dan-desktop:~# sudo comp --install dankins2.c
Для компиляции одного comp'а мало, нужны всакие библиотеки и .h файлы, которые и входят в состав linuxcnc-dev.Nick писал(а):я так понимаю ему вот этого файлика не хватает:
/usr/share/linuxcnc/Makefile.modinc
Дерево проекта не нужно, все необходимые файлы есть в составе linuxcnc-dev, а comp/halcompile знает где их искать в системе.
P.S. Когда не хватает знаний как правильно надо делать и вы начинаете "подпихивать" в систему какие-то сторонние файлы, то знайте, что с этого момента изначальному порядку в системе приходит копец и начинается "эра забавных и непонятных глюков", и обратной дороги как правило уже нет...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Dmaster
- Мастер
- Сообщения: 1272
- Зарегистрирован: 15 июл 2011, 13:36
- Репутация: 476
- Контактная информация:
Re: Настройка кинематики в EMC2
У меня прав COMP засовывать из под пользователя не было(... я сейчас всё это под пользователем пробуюUAVpilot писал(а):От root не надо работать - вопервых домашний каталог не твой, потому файлы и не находит, а во вторых это просто опасно для здоровья системы.
" Linux CNC - наше всё"
- Dmaster
- Мастер
- Сообщения: 1272
- Зарегистрирован: 15 июл 2011, 13:36
- Репутация: 476
- Контактная информация:
Re: Настройка кинематики в EMC2
Мне всё равно систему сносить)) .. я её и так покочевряжил изрядно. А чем дерево проекта плохо?UAVpilot писал(а):P.S. Когда не хватает знаний как правильно надо делать и вы начинаете "подпихивать" в систему какие-то сторонние файлы, то знайте, что с этого момента изначальному порядку в системе приходит копец и начинается "эра забавных и непонятных глюков", и обратной дороги как правило уже нет...
" Linux CNC - наше всё"
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Настройка кинематики в EMC2
Так выбери разметку вручную и сам сделай как тебе надо.Dmaster писал(а):Кстати.. дебиан что-то наровит мне винт отформатировать, не хочет рядом с виндой сидеть.
- Dmaster
- Мастер
- Сообщения: 1272
- Зарегистрирован: 15 июл 2011, 13:36
- Репутация: 476
- Контактная информация:
Re: Настройка кинематики в EMC2
Запутался в 2-х соснах) короче я всё снёс нафиг. сижу из по свежего дебиана)... Мне надо кинематику, а не интернетики в винде сидеть(Nick писал(а): Так выбери разметку вручную и сам сделай как тебе надо.
" Linux CNC - наше всё"
- Dmaster
- Мастер
- Сообщения: 1272
- Зарегистрирован: 15 июл 2011, 13:36
- Репутация: 476
- Контактная информация:
Re: Настройка кинематики в EMC2
Ну что господа.. Смерть винды была не напрасной)))
sudo comp --install dankins2.c и всё установилось!!!!))) ругнулось на пару опечаток, но ничего.. поправил.. скомпилилось и установилось!))
sudo comp --install dankins2.c и всё установилось!!!!))) ругнулось на пару опечаток, но ничего.. поправил.. скомпилилось и установилось!))
" Linux CNC - наше всё"
- Dmaster
- Мастер
- Сообщения: 1272
- Зарегистрирован: 15 июл 2011, 13:36
- Репутация: 476
- Контактная информация:
Re: Настройка кинематики в EMC2
вопервых код теперь выглядит так.
ИТАК! госопода! всё заработало!, но есть косяк странный.
всё выполнятеся как следует, при повороде оси 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 переключусь в ручной режим всё КАААААААКК скакнёт в неизвестном направлении
Может это особенность такая?
Код: Выделить всё
#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
в общем так.. при исполнении вот этого
g0x10
g0b30
g0u10 ( мы в точке axis0 18.66 axis2 5 )
включаю ручной режим ( стоим на месте)
переключаю назад в MDI
Скачек axis0 20 axis2 -3.70255e-16
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
Кстати.. у меня пропала кнопочка "задать отступ"! Я что -то не понял.., что., При использовании 5 координать привязываться нельзя?
PS. ГЛУПОСТЬ СМОРОЗИЛ!. а можно при переключении в ручной режим не включать отображение координат в joins , а оставить координаты?
для Joins сделать отдельную менюшку.. пущай висит.
И кнопочку привязок соответсвенно оставить рабочей.
PS. ГЛУПОСТЬ СМОРОЗИЛ!. а можно при переключении в ручной режим не включать отображение координат в joins , а оставить координаты?
для Joins сделать отдельную менюшку.. пущай висит.
И кнопочку привязок соответсвенно оставить рабочей.
" Linux CNC - наше всё"
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Настройка кинематики в EMC2
Тем, что нафик не нужно и может отличаться от установленной версии.Dmaster писал(а):А чем дерево проекта плохо?
Dmaster писал(а):Если я из mdi переключусь в ручной режим всё КАААААААКК скакнёт в неизвестном направлении
Может это особенность такая?
Особенность. Надо в ручном режиме предварительно переключиться в "world mode". Меню Вид, два последних пункта.Dmaster писал(а):PS. ГЛУПОСТЬ СМОРОЗИЛ!. а можно при переключении в ручной режим не включать отображение координат в joins , а оставить координаты?
собственно режим joints нужен только чтоб захомиться.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Dmaster
- Мастер
- Сообщения: 1272
- Зарегистрирован: 15 июл 2011, 13:36
- Репутация: 476
- Контактная информация:
Re: Настройка кинематики в EMC2
Всё заработало прекрасно.. осталась одна проблема.
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 ?
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
"кинематика" должна не только преобразовывать координаты в движения joints, но и ещё безопасно отрабатывать подобные казусы.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Настройка кинематики в EMC2
Вообще-то atan2 на то и atan2 (с двумя аргументами), чтобы безболезненно переносить такую ситуацию.
Чудес не бывает. Бывают фокусы.
-
el.nebrey
- Новичок
- Сообщения: 31
- Зарегистрирован: 19 сен 2015, 13:50
- Репутация: 2
- Настоящее имя: Алексей Сергеевич Вазлёв
- Контактная информация:
Re: Настройка кинематики в EMC2
Доброго времени.
Подскажите пожалуйста.
Есть уравнения кинематики. В таком виде они работали в 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. Но незнание синтаксиса мешает(
Какой должен быть вид этих уравнений для подстановки в файл кинематики?
Подскажите пожалуйста.
Есть уравнения кинематики. В таком виде они работали в 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
el.nebrey?опиши немного станок...(оси)
какие оси линейные ,какие поворотные ...
какая компоновка...(осей)
в принципе и так можно дать ответ - но с уточнениями будет точнее
какие оси линейные ,какие поворотные ...
какая компоновка...(осей)
в принципе и так можно дать ответ - но с уточнениями будет точнее
-
el.nebrey
- Новичок
- Сообщения: 31
- Зарегистрирован: 19 сен 2015, 13:50
- Репутация: 2
- Настоящее имя: Алексей Сергеевич Вазлёв
- Контактная информация:
Re: Настройка кинематики в EMC2
X повортная, с плечем 540мм
на ее конце закреплена Y поворотная, с плечем 450мм
и уже на самомм конце линейная Z которая бегает вверх-вниз
X может вращаться на все 360 и больше прижелании
Y на 340 примерно
на ее конце закреплена Y поворотная, с плечем 450мм
и уже на самомм конце линейная Z которая бегает вверх-вниз
X может вращаться на все 360 и больше прижелании
Y на 340 примерно
-
el.nebrey
- Новичок
- Сообщения: 31
- Зарегистрирован: 19 сен 2015, 13:50
- Репутация: 2
- Настоящее имя: Алексей Сергеевич Вазлёв
- Контактная информация:
Re: Настройка кинематики в EMC2
капаюсь сейчас в стандартной кинематике, но не вьеду, что такое tran
и как будто дублируются функции.)
pos->tran.y = joints[1]
joints[1] = pos->tran.y
и как будто дублируются функции.)
pos->tran.y = joints[1]
joints[1] = pos->tran.y
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Настройка кинематики в EMC2
всё "твоё" есть здесь:
http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=6693
http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=6693
