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

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

Добавлено: 13 янв 2015, 12:57
PKM
Ага, надо предварительно запустить

sudo apt-get install libmodbus-dev

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

Добавлено: 13 янв 2015, 13:08
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$ 

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

Добавлено: 13 янв 2015, 13:10
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:

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

Добавлено: 13 янв 2015, 13:16
Dmaster
UAVpilot писал(а):От root не надо работать - вопервых домашний каталог не твой, потому файлы и не находит, а во вторых это просто опасно для здоровья системы.
У меня прав COMP засовывать из под пользователя не было(... я сейчас всё это под пользователем пробую

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

Добавлено: 13 янв 2015, 13:21
Dmaster
UAVpilot писал(а):P.S. Когда не хватает знаний как правильно надо делать и вы начинаете "подпихивать" в систему какие-то сторонние файлы, то знайте, что с этого момента изначальному порядку в системе приходит копец и начинается "эра забавных и непонятных глюков", и обратной дороги как правило уже нет...
Мне всё равно систему сносить)) .. я её и так покочевряжил изрядно. А чем дерево проекта плохо?

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

Добавлено: 13 янв 2015, 13:26
Nick
Dmaster писал(а):Кстати.. дебиан что-то наровит мне винт отформатировать, не хочет рядом с виндой сидеть.
Так выбери разметку вручную и сам сделай как тебе надо.

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

Добавлено: 13 янв 2015, 13:45
Dmaster
Nick писал(а): Так выбери разметку вручную и сам сделай как тебе надо.
Запутался в 2-х соснах) короче я всё снёс нафиг. сижу из по свежего дебиана)... Мне надо кинематику, а не интернетики в винде сидеть(

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

Добавлено: 13 янв 2015, 13:53
Dmaster
Ну что господа.. Смерть винды была не напрасной)))
sudo comp --install dankins2.c и всё установилось!!!!))) ругнулось на пару опечаток, но ничего.. поправил.. скомпилилось и установилось!))

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

Добавлено: 13 янв 2015, 14:56
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 переключусь в ручной режим всё КАААААААКК скакнёт в неизвестном направлении
Может это особенность такая?

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

Добавлено: 13 янв 2015, 15:03
Dmaster
в общем так.. при исполнении вот этого
g0x10
g0b30
g0u10 ( мы в точке axis0 18.66 axis2 5 )
включаю ручной режим ( стоим на месте)
переключаю назад в MDI
Скачек axis0 20 axis2 -3.70255e-16

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

Добавлено: 13 янв 2015, 15:11
Dmaster
Кстати.. у меня пропала кнопочка "задать отступ"! Я что -то не понял.., что., При использовании 5 координать привязываться нельзя?


PS. ГЛУПОСТЬ СМОРОЗИЛ!. а можно при переключении в ручной режим не включать отображение координат в joins , а оставить координаты?
для Joins сделать отдельную менюшку.. пущай висит.
И кнопочку привязок соответсвенно оставить рабочей.

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

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

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

Добавлено: 13 янв 2015, 17:16
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 ?

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

Добавлено: 13 янв 2015, 17:21
Serg
"кинематика" должна не только преобразовывать координаты в движения joints, но и ещё безопасно отрабатывать подобные казусы.

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

Добавлено: 13 янв 2015, 19:38
Сергей Саныч
Вообще-то atan2 на то и atan2 (с двумя аргументами), чтобы безболезненно переносить такую ситуацию.

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

Добавлено: 19 сен 2015, 17:25
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. Но незнание синтаксиса мешает(
Какой должен быть вид этих уравнений для подстановки в файл кинематики?

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

Добавлено: 19 сен 2015, 17:46
nkp
el.nebrey?опиши немного станок...(оси)
какие оси линейные ,какие поворотные ...
какая компоновка...(осей)
в принципе и так можно дать ответ - но с уточнениями будет точнее :)

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

Добавлено: 19 сен 2015, 18:02
el.nebrey
X повортная, с плечем 540мм
на ее конце закреплена Y поворотная, с плечем 450мм
и уже на самомм конце линейная Z которая бегает вверх-вниз
X может вращаться на все 360 и больше прижелании
Y на 340 примерно

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

Добавлено: 19 сен 2015, 18:10
el.nebrey
капаюсь сейчас в стандартной кинематике, но не вьеду, что такое tran
и как будто дублируются функции.)
pos->tran.y = joints[1]
joints[1] = pos->tran.y

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

Добавлено: 19 сен 2015, 18:19
nkp
всё "твоё" есть здесь:
http://www.cnc-club.ru/forum/viewtopic.php?f=15&t=6693