Страница 2 из 10
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 12:27
nkp
Nick писал(а): joints[4] = arctg(pos->tran.x/pos->tran.y);
joints[1] = sqrt(pos->tran.x**2 + pos->tran.y**2)
только проверить без реальной машины затруднительно))
в частности:
все ли "варианты" со знаками учтены

Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 12:34
Nick
Знач надо проверять

.
sasha_89, качай файл из моего сообщения.
потом заходишь в консоль и пишешь
это мы ставим доп пакеты.
потом
cd и директорию, где лежит скачаный файл.
потом
и вывод сюда.
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 12:42
nkp
nkp писал(а):только проверить без реальной машины затруднительно
ну наверно все таки можно :
просто смотреть на пинах осей "движение" ...
=========
я так понял вместо
comp сейчас
halcompile
что то он у меня пока не компилит)
кто пробовал уже?
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 12:49
nkp
sasha_89, да - обновиться очень бы не помешало...
старая версия емс на 6-й убунте (2.3 по моему)
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 13:07
sasha_89
смотрите такая фигня : что-то не выходит !
- sasha@sasha-desktop:~$ sudo apt-get install linuxcnc-dev
Чтение списков пакетов... Готово
Построение дерева зависимостей
Чтение информации о состоянии... Готово
Уже установлена самая новая версия linuxcnc-dev.
Следующие пакеты устанавливались автоматически и больше не требуются:
user-setup localechooser-data
Для их удаления используйте 'apt-get autoremove'.
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 235 пакетов не обновлено.
sasha@sasha-desktop:~$ cd /home/sasha/Загрузки
sasha@sasha-desktop:~/Загрузки$ sudo comp --install angularkins.c
make KBUILD_EXTRA_SYMBOLS=/usr/realtime-2.6.32-122-rtai/modules/linuxcnc/Module.symvers -C /usr/src/linux-headers-2.6.32-122-rtai SUBDIRS=`pwd` CC=gcc V=0 modules
make[1]: Вход в каталог `/usr/src/linux-headers-2.6.32-122-rtai'
CC [M] /tmp/tmplZ52nG/angularkins.o
/tmp/tmplZ52nG/angularkins.c: In function ‘kinematicsInverse’:
/tmp/tmplZ52nG/angularkins.c:55: error: implicit declaration of function ‘arctg’
/tmp/tmplZ52nG/angularkins.c:56: error: invalid type argument of ‘unary *’ (have ‘int’)
/tmp/tmplZ52nG/angularkins.c:56: error: invalid type argument of ‘unary *’ (have ‘int’)
/tmp/tmplZ52nG/angularkins.c:57: error: expected ‘;’ before ‘}’ token
make[2]: *** [/tmp/tmplZ52nG/angularkins.o] Ошибка 1
make[1]: *** [_module_/tmp/tmplZ52nG] Ошибка 2
make[1]: Выход из каталога `/usr/src/linux-headers-2.6.32-122-rtai'
make: *** [modules] Ошибка 2
sasha@sasha-desktop:~/Загрузки$
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 13:08
sasha_89
или что-то не так делаю?
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 13:41
nkp
замени "arctg" на "atan"
==========
и старайся не пользовать кириллицу (я про папку Загрузки)
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 13:46
nkp
строку
joints[1] = sqrt(pos->tran.x**2 + pos->tran.y**2)
пока замени на
joints[1] = sqrt(pos->tran.x * pos->tran.x + pos->tran.y * pos->tran.y);
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 13:57
nkp
или вычислять гипотенузу через катет и угол:
Код: Выделить всё
{
A = atan(pos->tran.x/pos->tran.y);
joints[4] = A;
joints[1] = pos->tran.x / cos(A);
}
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 14:03
PKM
nkp писал(а):или вычислять гипотенузу через катет и угол:
Только не забыть объявить переменную А
А если вообще без нее?
Код: Выделить всё
joints[4] = atan(pos->tran.x/pos->tran.y);
joints[1] = pos->tran.x / cos(joints[4]);
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 14:28
nkp
вот так точно работает:
A = atan2(dx, dy)
применяли на реальном станке...
=====================
(кстати atan vs atan2 = ???)
может так мы обходим ситуацию ,когда pos->tran.y равна нулю...
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 16:00
Nick
nkp писал(а):(кстати atan vs atan2 = ???)
может так мы обходим ситуацию ,когда pos->tran.y равна нулю...
именно. кстати да, так удобнее.
nkp писал(а):или вычислять гипотенузу через катет и угол:
это хуже, т.к. появляется деление - есть возможность делить на 0. Да и cos может быть меньше нуля.
А формула sqrt(x*x+y*y) будет работать без исключений (разве что переполнение по x*x)/
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 16:04
nkp
а здесь как с делением на ноль:
joints[4] = atan(pos->tran.x/pos->tran.y);
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 16:05
Nick
А здесь уже никак, поэтому большое условие. Но atan2 - рулит

Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 20:05
milo
А что, постпроцессоров под полярную обработку разве не существует? Это на тот случай ,если с описанием кинематики возникнут проблемы.
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 20:11
nkp
milo писал(а):А что, постпроцессоров под полярную обработку разве не существует? Это на тот случай ,если с описанием кинематики возникнут проблемы.
можно пойти и этим путем...
может с учетом ручных перемещений это и правильней...
================
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 20:15
Nick
milo писал(а):А что, постпроцессоров под полярную обработку разве не существует? Это на тот случай ,если с описанием кинематики возникнут проблемы.
В просмотре программы будет непонятно что...
А, разве что делать все в XZB...
nkp писал(а):может с учетом ручных перемещений это и правильней...
А в ручных будет тоже в кинематике ездить. Главный вопрос в том, что станок будет делать и как с ним будет удобнее работать...
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 20:16
nkp
по запуску кинематики angularkins:
так как не желает пока правильно работать halcompile (а может что другое))
изменил первую попавшуюся кинематику:
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
/********************************************************************
* Description: angularkins.c
* Angular kinematics for 3 axis with angular axis along Z
*
* Derived from a work by Fred Proctor & Will Shackleford
*
* Author:
* License: GPL Version 2
* System: Linux
*
* Copyright (c) 2004 All rights reserved.
*
* Last change:
********************************************************************/
#include "posemath.h"
#include "hal.h"
#include "rtapi.h"
#include "rtapi_math.h"
#include "kinematics.h" /* sudo halcompile --install angularkins_1.c */
int kinematicsForward(const double *joints,
EmcPose * pos,
const KINEMATICS_FORWARD_FLAGS * fflags,
KINEMATICS_INVERSE_FLAGS * iflags)
{
pos->tran.x = joints[0]*cos(joints[4]);
pos->tran.y = joints[0]*sin(joints[4]);;
pos->tran.z = joints[2];
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)
{
static double dx = 0 , dy = 0;
if (pos->tran.x == 0)
{
joints[0] = pos->tran.y;
if (pos->tran.y>0)
{
joints[4] = 1.570796327;
} else {
joints[4] = -1.570796327;
}
}
else
{
dx = pos->tran.x;
dy = pos->tran.y;
joints[4] = atan2(dx,dy);
joints[1] = sqrt(pos->tran.x * pos->tran.x + pos->tran.y * pos->tran.y);
}
joints[1] = pos->tran.y;
joints[2] = pos->tran.z;
joints[3] = pos->a;
joints[5] = pos->c;
joints[6] = pos->u;
joints[7] = pos->v;
joints[8] = pos->w;
return 0;
}
/* implemented for these kinematics as giving joints preference */
int kinematicsHome(EmcPose * world,
double *joint,
KINEMATICS_FORWARD_FLAGS * fflags,
KINEMATICS_INVERSE_FLAGS * iflags)
{
*fflags = 0;
*iflags = 0;
return kinematicsForward(joint, world, fflags, iflags);
}
KINEMATICS_TYPE kinematicsType()
{
return KINEMATICS_IDENTITY;
}
#include "rtapi.h" /* RTAPI realtime OS API */
#include "rtapi_app.h" /* RTAPI realtime module decls */
#include "hal.h"
EXPORT_SYMBOL(kinematicsType);
EXPORT_SYMBOL(kinematicsForward);
EXPORT_SYMBOL(kinematicsInverse);
MODULE_LICENSE("GPL");
int comp_id;
int rtapi_app_main(void) {
comp_id = hal_init("maxkins");
if(comp_id > 0) {
hal_ready(comp_id);
return 0;
}
return comp_id;
}
void rtapi_app_exit(void) { hal_exit(comp_id); }
скрины после home и MDI команды:
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 20:18
nkp
Nick писал(а):А в ручных будет тоже в кинематике ездить.
будет - но как?
как например вручную повернуть "поворотку" ?
Re: Настройка кинематики в EMC2
Добавлено: 14 ноя 2014, 21:23
nkp
убрал условия , привел к градусам: