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

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

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

Сообщение PKM »

UAVpilot писал(а):#define joint_offset(i) (*(__comp_inst->joint_offset))

Немного непривычно #define в цикле

__comp_inst это ведь фирменная фишка ЕМС?
Вообще ничего не понимал, пока немного не вник в штуки типа http://www.linuxcnc.org/docs/2.6/html/hal/comp.html и http://linuxcnc.org/docs/html/man/man3/ ... .3hal.html
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

PKM писал(а):Немного непривычно #define в цикле
Почему в цикле? Нет там цикла...
PKM писал(а):__comp_inst это уже фирменная фишка ЕМС?
Просто переменная. Кстати, halcompile такие имена выдумывает, ну я тоже их пользую по инерции... :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

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

Сообщение PKM »

Хорошо, но какой тогда смысл в i? Я предположил, что эта строка внутри цикла находится.



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

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

Сообщение PKM »

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

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

Сообщение Dmaster »

После длгих ковыряний выдавил это.
Надо скорректировать X И Z при повороте B.
Упёрся в то, что не могу скомпилить файл))
comp --install не предлагать.. он у меня не ставится (sudo apt-get install linuxcnc-dev) ((( из за того, что я версию 2.7.0 впихнул.

Прошу попинать в нужное место ткнуть носом, если что) Последнюю часть кода с pivot_length решил оставить, авось торкнет какая мысля хорошая.

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

 
#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]);



  

    pos->tran.x = xzr * cos(xytheta) ;
    pos->tran.y = joints[2];
    pos->tran.z = xzr * sin(xytheta) ;;

    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(xytheta) ;
    joints[1] = pos->tran.y ;
    joints[2] = xzr * sin(xytheta) ;

    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); }
" Linux CNC - наше всё"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Dmaster писал(а):comp --install не предлагать.. он у меня не ставится (sudo apt-get install linuxcnc-dev) ((( из за того, что я версию 2.7.0 впихнул.
тут надо прояснить ;)
тебе всё равно будет нужен этот инструмент , ибо удобен и быстр с ним метод установки...
не ставится кто? comp ? или пакет linuxcnc-dev не ставится?
желателен показ ошибок ...
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

не помню , с каких времен вместо comp идет halcompile
может он уже у тебя стоит ?
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

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

dan@dan-desktop:~$ sudo apt-get install linuxcnc-dev
[sudo] password for dan: 
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
  linuxcnc-dev: Зависит: linuxcnc (= 1:2.6.5) но 1:2.7.0~pre0.43.g97ff1b7 будет установлен
E: Сломанные пакеты
" Linux CNC - наше всё"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

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

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

Сообщение Dmaster »

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

dan@dan-desktop:~$ sudo apt-get install linuxcnc-dev=1:2.6.5
[sudo] password for dan: 
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
  linuxcnc-dev: Зависит: linuxcnc (= 1:2.6.5) но 1:2.7.0~pre0.43.g97ff1b7 будет установлен
E: Сломанные пакеты
dan@dan-desktop:~$ sudo apt-get install linuxcnc-dev=1:2.7.0
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
E: Версия '1:2.7.0' для 'linuxcnc-dev' не найдена
dan@dan-desktop:~$ 
" Linux CNC - наше всё"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

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

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

Сообщение Dmaster »

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

dan@dan-desktop:~$ sudo apt-cache policy linuxcnc-dev
linuxcnc-dev:
  Установлен: (отсутствует)
  Кандидат: 1:2.6.5
  Таблица версий:
     1:2.6.5 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.6.4 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.6.3 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.6.2 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.6.1 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.6.0 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.6.0~pre5 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.6.0~pre4 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.6.0~pre3 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.6.0~pre2 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.6.0~pre1 0
        500 http://linuxcnc.org/ lucid/2.6 Packages
     1:2.5.4 0
        500 http://linuxcnc.org/ lucid/linuxcnc2.5 Packages
     1:2.5.3 0
        500 http://linuxcnc.org/ lucid/linuxcnc2.5 Packages
     1:2.5.2 0
        500 http://linuxcnc.org/ lucid/linuxcnc2.5 Packages
     1:2.5.1 0
        500 http://linuxcnc.org/ lucid/linuxcnc2.5 Packages
     1:2.5.0 0
        500 http://linuxcnc.org/ lucid/linuxcnc2.5 Packages
" Linux CNC - наше всё"
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

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

Сообщение Serg »

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

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

Сообщение Dmaster »

Честно не помню КАк)), но помню зачем. Remap для m кодов делал, хотел найти версию в которой файлы брались из указанной папки. ) завтра снесу систему и попробую снова.
" Linux CNC - наше всё"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

ну я когда не получается - перехожу к варварсим методам:
можно попробовать "насильно" положить файл comp в /usr/bin
это же питона файл - пути должен найти
если не заработает - и вреда не нанесет :freak:
=========
sudo nautilus
открываем /usr/bin
распаковываем архив
comp.rar
(9.76 КБ) 302 скачивания
ложим файл
пробуем
$ comp -h
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Можно добавить master репозиторий от build-bot, но он правда тоже может потянуть какие-нибудь зависимости.

И да, ошибки компиляции покажи!
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

Вроде-бы варварский способ помог. COMP засунулся., но пишет вот.

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

oot@dan-desktop:~# sudo comp --install dankins2.c
Traceback (most recent call last):
  File "/usr/bin/comp", line 1332, in <module>
    main()
  File "/usr/bin/comp", line 1315, in main
    shutil.copy(f, tempdir)
  File "/usr/lib/python2.6/shutil.py", line 88, in copy
    copyfile(src, dst)
  File "/usr/lib/python2.6/shutil.py", line 52, in copyfile
    fsrc = open(src, 'rb')
IOError: [Errno 2] No such file or directory: 'dankins2.c'
root@dan-desktop:~# 
Если указать путь к файлу , то вот.

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

root@dan-desktop:~# sudo comp --compile /home/dan/dankins2.c
Traceback (most recent call last):
  File "/usr/bin/comp", line 1332, in <module>
    main()
  File "/usr/bin/comp", line 1315, in main
    shutil.copy(f, tempdir)
  File "/usr/lib/python2.6/shutil.py", line 88, in copy
    copyfile(src, dst)
  File "/usr/lib/python2.6/shutil.py", line 52, in copyfile
    fsrc = open(src, 'rb')
IOError: [Errno 2] No such file or directory: '/home/dan/dankins2.c'

" Linux CNC - наше всё"
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

не правильно задавал путь.. теперь вот что

root@dan-desktop:~# sudo comp --compile dankins2.c
Unable to locate Makefile.modinc
" Linux CNC - наше всё"
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Dmaster писал(а):root@dan-desktop:~# sudo comp --compile dankins2.cUnable to locate Makefile.modinc
с кинематиками применял всегда
sudo comp --install ...
=======
уже писал - но повторюсь (опять же .... способ ;) )
чтоб избежать пока проблем , выбери уже существующий файл кинематики...
редактируй его...
sudo comp --install ...
всё
Аватара пользователя
Dmaster
Мастер
Сообщения: 1272
Зарегистрирован: 15 июл 2011, 13:36
Репутация: 476
Контактная информация:

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

Сообщение Dmaster »

nkp писал(а):чтоб избежать пока проблем , выбери уже существующий файл кинематики...
редактируй его...
Так и сделал)))
nkp писал(а):sudo comp --install ...

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

root@dan-desktop:~# sudo comp --install dankins2.c
Unable to locate Makefile.modinc
" Linux CNC - наше всё"
Ответить

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