delta robot emc2
delta robot emc2
Помогите пожалуйста разобраться, как приделать кинематику к EMC2. Файл взял тут http://kvarc.extra.hu/step/motor/emc/emckinematics.html . Как мне его привязать к EMC2?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: delta robot emc2
Попробуй сохранить. и выполнить в консоли:
sudo comp --install deltakins.c
также надо установить пакет linuxcnc-dev, если он еще не установлен.
sudo apt-get install linuxcnc-dev\
После этого надо будет его загружать через hal.
sudo comp --install deltakins.c
также надо установить пакет linuxcnc-dev, если он еще не установлен.
sudo apt-get install linuxcnc-dev\
После этого надо будет его загружать через hal.
Re: delta robot emc2
файл положил /usr/src/linux-headers-2.6.32-122-rtai/deltakins.c
сделал comp --install deltakins.c
получил такой результат
make -C /usr/src/linux-headers-2.6.32-122-rtai SUBDIRS=`pwd` CC=gcc V=0 -o /Module.symvers modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-122-rtai'
CC [M] /tmp/tmpaIFBmj/deltakins.o
/tmp/tmpaIFBmj/deltakins.c: In function ‘delta_calcAngleYZ’:
/tmp/tmpaIFBmj/deltakins.c:142: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpaIFBmj/deltakins.c:147: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpaIFBmj/deltakins.c: In function ‘kinematicsInverse’:
/tmp/tmpaIFBmj/deltakins.c:170: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpaIFBmj/deltakins.c: In function ‘init_module’:
/tmp/tmpaIFBmj/deltakins.c:221: error: ‘HAL_SUCCESS’ undeclared (first use in this function)
/tmp/tmpaIFBmj/deltakins.c:221: error: (Each undeclared identifier is reported only once
/tmp/tmpaIFBmj/deltakins.c:221: error: for each function it appears in.)
make[2]: *** [/tmp/tmpaIFBmj/deltakins.o] Error 1
make[1]: *** [_module_/tmp/tmpaIFBmj] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-122-rtai'
make: *** [modules] Error 2
И мне не понятно куда геометрию робота вводить?
там в файле закоментированно:
/* robot geometry /Ref - mzavatsky: Delta robot kinematics/
e = side length of end effector triangle, middle arm - "re"
f = side length of base triangle, middle drive joints - "rf"
re = length of end effector arm
rf = length of drive arm
sample:
e = 115.0;
f = 457.3;
re = 232.0;
rf = 112.0; */
Нужно тут указывать?
сделал comp --install deltakins.c
получил такой результат
make -C /usr/src/linux-headers-2.6.32-122-rtai SUBDIRS=`pwd` CC=gcc V=0 -o /Module.symvers modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-122-rtai'
CC [M] /tmp/tmpaIFBmj/deltakins.o
/tmp/tmpaIFBmj/deltakins.c: In function ‘delta_calcAngleYZ’:
/tmp/tmpaIFBmj/deltakins.c:142: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpaIFBmj/deltakins.c:147: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpaIFBmj/deltakins.c: In function ‘kinematicsInverse’:
/tmp/tmpaIFBmj/deltakins.c:170: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpaIFBmj/deltakins.c: In function ‘init_module’:
/tmp/tmpaIFBmj/deltakins.c:221: error: ‘HAL_SUCCESS’ undeclared (first use in this function)
/tmp/tmpaIFBmj/deltakins.c:221: error: (Each undeclared identifier is reported only once
/tmp/tmpaIFBmj/deltakins.c:221: error: for each function it appears in.)
make[2]: *** [/tmp/tmpaIFBmj/deltakins.o] Error 1
make[1]: *** [_module_/tmp/tmpaIFBmj] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-122-rtai'
make: *** [modules] Error 2
И мне не понятно куда геометрию робота вводить?
там в файле закоментированно:
/* robot geometry /Ref - mzavatsky: Delta robot kinematics/
e = side length of end effector triangle, middle arm - "re"
f = side length of base triangle, middle drive joints - "rf"
re = length of end effector arm
rf = length of drive arm
sample:
e = 115.0;
f = 457.3;
re = 232.0;
rf = 112.0; */
Нужно тут указывать?
Re: delta robot emc2
Может можно в HAL прописать всю геометрию? Где можно посмотреть примеры моей проблемы?
- PKM
- Почётный участник

- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: delta robot emc2
судя по следующему, эти значения должны быть прописаны в HAL
но в принципе их можно просто задать в самом файле кинематики
struct haldata {
hal_float_t *e, *f, *re, *rf;
} *haldata = 0;
#define delta_e (*(haldata->e))
#define delta_f (*(haldata->f))
#define delta_re (*(haldata->re))
#define delta_rf (*(haldata->rf))
#else
double delta_e, delta_f, delta_re, delta_rf;
#endif
но в принципе их можно просто задать в самом файле кинематики
struct haldata {
hal_float_t *e, *f, *re, *rf;
} *haldata = 0;
#define delta_e (*(haldata->e))
#define delta_f (*(haldata->f))
#define delta_re (*(haldata->re))
#define delta_rf (*(haldata->rf))
#else
double delta_e, delta_f, delta_re, delta_rf;
#endif
Re: delta robot emc2
Тогда я в файле убираю комментарии
e = 115.0;
f = 457.3;
re = 232.0;
rf = 112.0;
и потом его компилирую?
e = 115.0;
f = 457.3;
re = 232.0;
rf = 112.0;
и потом его компилирую?
Re: delta robot emc2
И так ругается:
root@cnc-desktop:/usr/src/linux-headers-2.6.32-122-rtai# comp --install deltakins.c
make -C /usr/src/linux-headers-2.6.32-122-rtai SUBDIRS=`pwd` CC=gcc V=0 -o /Module.symvers modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-122-rtai'
CC [M] /tmp/tmpK0GBdM/deltakins.o
/tmp/tmpK0GBdM/deltakins.c:32: warning: data definition has no type or storage class
/tmp/tmpK0GBdM/deltakins.c:32: warning: type defaults to ‘int’ in declaration of ‘e’
/tmp/tmpK0GBdM/deltakins.c:33: warning: data definition has no type or storage class
/tmp/tmpK0GBdM/deltakins.c:33: warning: type defaults to ‘int’ in declaration of ‘f’
/tmp/tmpK0GBdM/deltakins.c:34: warning: data definition has no type or storage class
/tmp/tmpK0GBdM/deltakins.c:34: warning: type defaults to ‘int’ in declaration of ‘re’
/tmp/tmpK0GBdM/deltakins.c:35: warning: data definition has no type or storage class
/tmp/tmpK0GBdM/deltakins.c:35: warning: type defaults to ‘int’ in declaration of ‘rf’
/tmp/tmpK0GBdM/deltakins.c: In function ‘delta_calcAngleYZ’:
/tmp/tmpK0GBdM/deltakins.c:143: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpK0GBdM/deltakins.c:148: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpK0GBdM/deltakins.c: In function ‘kinematicsInverse’:
/tmp/tmpK0GBdM/deltakins.c:171: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpK0GBdM/deltakins.c: In function ‘init_module’:
/tmp/tmpK0GBdM/deltakins.c:222: error: ‘HAL_SUCCESS’ undeclared (first use in this function)
/tmp/tmpK0GBdM/deltakins.c:222: error: (Each undeclared identifier is reported only once
/tmp/tmpK0GBdM/deltakins.c:222: error: for each function it appears in.)
make[2]: *** [/tmp/tmpK0GBdM/deltakins.o] Error 1
make[1]: *** [_module_/tmp/tmpK0GBdM] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-122-rtai'
make: *** [modules] Error 2
root@cnc-desktop:/usr/src/linux-headers-2.6.32-122-rtai# comp --install deltakins.c
make -C /usr/src/linux-headers-2.6.32-122-rtai SUBDIRS=`pwd` CC=gcc V=0 -o /Module.symvers modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.32-122-rtai'
CC [M] /tmp/tmpK0GBdM/deltakins.o
/tmp/tmpK0GBdM/deltakins.c:32: warning: data definition has no type or storage class
/tmp/tmpK0GBdM/deltakins.c:32: warning: type defaults to ‘int’ in declaration of ‘e’
/tmp/tmpK0GBdM/deltakins.c:33: warning: data definition has no type or storage class
/tmp/tmpK0GBdM/deltakins.c:33: warning: type defaults to ‘int’ in declaration of ‘f’
/tmp/tmpK0GBdM/deltakins.c:34: warning: data definition has no type or storage class
/tmp/tmpK0GBdM/deltakins.c:34: warning: type defaults to ‘int’ in declaration of ‘re’
/tmp/tmpK0GBdM/deltakins.c:35: warning: data definition has no type or storage class
/tmp/tmpK0GBdM/deltakins.c:35: warning: type defaults to ‘int’ in declaration of ‘rf’
/tmp/tmpK0GBdM/deltakins.c: In function ‘delta_calcAngleYZ’:
/tmp/tmpK0GBdM/deltakins.c:143: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpK0GBdM/deltakins.c:148: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpK0GBdM/deltakins.c: In function ‘kinematicsInverse’:
/tmp/tmpK0GBdM/deltakins.c:171: warning: ISO C90 forbids mixed declarations and code
/tmp/tmpK0GBdM/deltakins.c: In function ‘init_module’:
/tmp/tmpK0GBdM/deltakins.c:222: error: ‘HAL_SUCCESS’ undeclared (first use in this function)
/tmp/tmpK0GBdM/deltakins.c:222: error: (Each undeclared identifier is reported only once
/tmp/tmpK0GBdM/deltakins.c:222: error: for each function it appears in.)
make[2]: *** [/tmp/tmpK0GBdM/deltakins.o] Error 1
make[1]: *** [_module_/tmp/tmpK0GBdM] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.32-122-rtai'
make: *** [modules] Error 2
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: delta robot emc2
Вот главная ошибка...z-vr писал(а): error: ‘HAL_SUCCESS’ undeclared (first use in this function)
сейчас гляну из-за чего она появляется...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: delta robot emc2
Ага вот в чем дело:
Оказывается в 2009 от HAL_SUCCESS избавились: http://git.linuxcnc.org/gitweb?p=linuxc ... 3bf1650aba
В общем надо HAL_SUCCESS заменить на 0.
Код: Выделить всё
if((res = hal_pin_float_new("deltakins.e", HAL_IO, &(haldata->e), comp_id)) != HAL_SUCCESS) goto error;
if((res = hal_pin_float_new("deltakins.f", HAL_IO, &(haldata->f), comp_id)) != HAL_SUCCESS) goto error;
if((res = hal_pin_float_new("deltakins.re", HAL_IO, &(haldata->re), comp_id)) != HAL_SUCCESS) goto error;
if((res = hal_pin_float_new("deltakins.rf", HAL_IO, &(haldata->rf), comp_id)) != HAL_SUCCESS) goto error;
В общем надо HAL_SUCCESS заменить на 0.
Re: delta robot emc2
Огромное человеческое спасибо!
Сейчас буду пробовать.
Сейчас буду пробовать.
Re: delta robot emc2
Исправил на 0.
Получился модуль deltakins.ko .
Как его прописать в HAL или в .ini ?
И где и как геометрию указать?
Спасибо.
Получился модуль deltakins.ko .
Как его прописать в HAL или в .ini ?
И где и как геометрию указать?
Спасибо.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: delta robot emc2
Несколько надёжней будет вот так:Nick писал(а): В общем надо HAL_SUCCESS заменить на 0.
#ifndef HAL_SUCCESS
#define HAL_SUCCESS 0
#endif
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Re: delta robot emc2
Спасибо.
Не понимаю как его прописать в HAL или в .ini ?
И где и как геометрию указать?
Не понимаю как его прописать в HAL или в .ini ?
И где и как геометрию указать?
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: delta robot emc2
попробуй в хал файл прописать:
По идее он должен появиться здесь :
Код: Выделить всё
loadrt deltakinsRe: delta robot emc2
Ok.
А как переменные указать, которые прописаны были в файле кинематики?
struct haldata {
hal_float_t *e, *f, *re, *rf;
} *haldata = 0;
#define delta_e (*(haldata->e))
#define delta_f (*(haldata->f))
#define delta_re (*(haldata->re))
#define delta_rf (*(haldata->rf))
#else
double delta_e, delta_f, delta_re, delta_rf;
#endif
А как переменные указать, которые прописаны были в файле кинематики?
struct haldata {
hal_float_t *e, *f, *re, *rf;
} *haldata = 0;
#define delta_e (*(haldata->e))
#define delta_f (*(haldata->f))
#define delta_re (*(haldata->re))
#define delta_rf (*(haldata->rf))
#else
double delta_e, delta_f, delta_re, delta_rf;
#endif
Re: delta robot emc2
Я правильно понимаю?
loadrt deltakins e=115.0 f=457.3 re=232.0 rf=112.0
loadrt deltakins e=115.0 f=457.3 re=232.0 rf=112.0
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: delta robot emc2
нет-прописывать кинематику сейчас незачем:z-vr писал(а):Я правильно понимаю?loadrt deltakins e=115.0 f=457.3 re=232.0 rf=112.0
мы дабиваемся чтоб загрузился и определился наш(ваш) компонент
Пишем как выше и результат в студию
Re: delta robot emc2
Print file information:
RUN_IN_PLACE=no
EMC2_DIR=
EMC2_BIN_DIR=/usr/bin
EMC2_TCL_DIR=/usr/share/emc/tcl
EMC2_SCRIPT_DIR=
EMC2_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/emc2
EMC2_CONFIG_DIR=
EMC2_LANG_DIR=/usr/share/emc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
EMC2_EMCSH=/usr/bin/wish8.5
EMC2 - 2.4.6
Machine configuration directory is '/home/cnc/emc2/configs/мой-станок'
Machine configuration file is 'мой-станок.ini'
INIFILE=/home/cnc/emc2/configs/мой-станок/мой-станок.ini
PARAMETER_FILE=emc.var
EMCMOT=motmod
EMCIO=io
TASK=milltask
HALUI=halui
DISPLAY=axis
NML_FILE=
Starting EMC2...
Starting EMC2 server program: emcsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting EMC2 IO program: io
Starting HAL User Interface program: halui
Shutting down and cleaning up EMC2...
Killing task emcsvr, PID=1727
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done
Debug file information:
insmod: error inserting '/usr/realtime-2.6.32-122-rtai/modules/emc2/deltakins.ko': -1 Invalid module format
мой-станок.hal:10: exit value: 1
мой-станок.hal:10: insmod failed, returned -1
See the output of 'dmesg' for more information.
1727
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components
Kernel message information:
[ 416.824793] I-pipe: Domain RTAI registered.
[ 416.824807] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[ 416.824811] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[ 416.824822] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 416.824825] PIPELINE layers:
[ 416.824830] f93e5e20 9ac15d93 RTAI 200
[ 416.824834] c085cb20 0 Linux 100
[ 416.866381] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 416.866618] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 416.866627] RTAI[sched]: hard timer type/freq = APIC/8311960(Hz); default timing: periodic; linear timed lists.
[ 416.866633] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 2394093000 hz.
[ 416.866637] RTAI[sched]: timer setup = 999 ns, resched latency = 2943 ns.
[ 416.866784] RTAI[usi]: enabled.
[ 417.023143] RTAI[math]: loaded.
[ 417.150094] config string '0x378 out '
[ 417.183997] deltakins: exports duplicate symbol kinematicsInverse (owned by trivkins)
[ 417.930005] RTAI[math]: unloaded.
[ 418.047184] SCHED releases registered named ALIEN RTGLBH
[ 418.061378] RTAI[malloc]: unloaded.
[ 418.160030] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[ 418.167071] I-pipe: Domain RTAI unregistered.
[ 418.167086] RTAI[hal]: unmounted.
RUN_IN_PLACE=no
EMC2_DIR=
EMC2_BIN_DIR=/usr/bin
EMC2_TCL_DIR=/usr/share/emc/tcl
EMC2_SCRIPT_DIR=
EMC2_RTLIB_DIR=/usr/realtime-2.6.32-122-rtai/modules/emc2
EMC2_CONFIG_DIR=
EMC2_LANG_DIR=/usr/share/emc/tcl/msgs
INIVAR=inivar
HALCMD=halcmd
EMC2_EMCSH=/usr/bin/wish8.5
EMC2 - 2.4.6
Machine configuration directory is '/home/cnc/emc2/configs/мой-станок'
Machine configuration file is 'мой-станок.ini'
INIFILE=/home/cnc/emc2/configs/мой-станок/мой-станок.ini
PARAMETER_FILE=emc.var
EMCMOT=motmod
EMCIO=io
TASK=milltask
HALUI=halui
DISPLAY=axis
NML_FILE=
Starting EMC2...
Starting EMC2 server program: emcsvr
Loading Real Time OS, RTAPI, and HAL_LIB modules
Starting EMC2 IO program: io
Starting HAL User Interface program: halui
Shutting down and cleaning up EMC2...
Killing task emcsvr, PID=1727
Removing HAL_LIB, RTAPI, and Real Time OS modules
Removing NML shared memory segments
Cleanup done
Debug file information:
insmod: error inserting '/usr/realtime-2.6.32-122-rtai/modules/emc2/deltakins.ko': -1 Invalid module format
мой-станок.hal:10: exit value: 1
мой-станок.hal:10: insmod failed, returned -1
See the output of 'dmesg' for more information.
1727
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components
Kernel message information:
[ 416.824793] I-pipe: Domain RTAI registered.
[ 416.824807] RTAI[hal]: <3.8.1> mounted over IPIPE-NOTHREADS 2.6-03.
[ 416.824811] RTAI[hal]: compiled with gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) .
[ 416.824822] RTAI[hal]: mounted (IPIPE-NOTHREADS, IMMEDIATE (INTERNAL IRQs DISPATCHED), ISOL_CPUS_MASK: 0).
[ 416.824825] PIPELINE layers:
[ 416.824830] f93e5e20 9ac15d93 RTAI 200
[ 416.824834] c085cb20 0 Linux 100
[ 416.866381] RTAI[malloc]: global heap size = 2097152 bytes, <BSD>.
[ 416.866618] RTAI[sched]: IMMEDIATE, MP, USER/KERNEL SPACE: <with RTAI OWN KTASKs>, kstacks pool size = 524288 bytes.
[ 416.866627] RTAI[sched]: hard timer type/freq = APIC/8311960(Hz); default timing: periodic; linear timed lists.
[ 416.866633] RTAI[sched]: Linux timer freq = 250 (Hz), TimeBase freq = 2394093000 hz.
[ 416.866637] RTAI[sched]: timer setup = 999 ns, resched latency = 2943 ns.
[ 416.866784] RTAI[usi]: enabled.
[ 417.023143] RTAI[math]: loaded.
[ 417.150094] config string '0x378 out '
[ 417.183997] deltakins: exports duplicate symbol kinematicsInverse (owned by trivkins)
[ 417.930005] RTAI[math]: unloaded.
[ 418.047184] SCHED releases registered named ALIEN RTGLBH
[ 418.061378] RTAI[malloc]: unloaded.
[ 418.160030] RTAI[sched]: unloaded (forced hard/soft/hard transitions: traps 0, syscalls 0).
[ 418.167071] I-pipe: Domain RTAI unregistered.
[ 418.167086] RTAI[hal]: unmounted.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: delta robot emc2
insmod: error inserting '/usr/realtime-2.6.32-122-rtai/modules/emc2/deltakins.ko': -1 Invalid module format
может быть ошибка в самом модуле
может быть ошибка в самом модуле
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: delta robot emc2
Надо его сравнить с trikins... в смысле исходник, посмотреть чем они еще отличаются...
