Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 12:57
Ага, надо предварительно запустить
sudo apt-get install libmodbus-dev
sudo apt-get install libmodbus-dev
Статьи, обзоры, цены на станки и комплектующие.
https://cnc-club.ru/forum/
Код: Выделить всё
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$
От root не надо работать - вопервых домашний каталог не твой, потому файлы и не находит, а во вторых это просто опасно для здоровья системы.Dmaster писал(а):Вроде-бы варварский способ помог. COMP засунулся., но пишет вот.
oot@dan-desktop:~# sudo comp --install dankins2.c
Для компиляции одного comp'а мало, нужны всакие библиотеки и .h файлы, которые и входят в состав linuxcnc-dev.Nick писал(а):я так понимаю ему вот этого файлика не хватает:
/usr/share/linuxcnc/Makefile.modinc
У меня прав COMP засовывать из под пользователя не было(... я сейчас всё это под пользователем пробуюUAVpilot писал(а):От root не надо работать - вопервых домашний каталог не твой, потому файлы и не находит, а во вторых это просто опасно для здоровья системы.
Мне всё равно систему сносить)) .. я её и так покочевряжил изрядно. А чем дерево проекта плохо?UAVpilot писал(а):P.S. Когда не хватает знаний как правильно надо делать и вы начинаете "подпихивать" в систему какие-то сторонние файлы, то знайте, что с этого момента изначальному порядку в системе приходит копец и начинается "эра забавных и непонятных глюков", и обратной дороги как правило уже нет...
Так выбери разметку вручную и сам сделай как тебе надо.Dmaster писал(а):Кстати.. дебиан что-то наровит мне винт отформатировать, не хочет рядом с виндой сидеть.
Запутался в 2-х соснах) короче я всё снёс нафиг. сижу из по свежего дебиана)... Мне надо кинематику, а не интернетики в винде сидеть(Nick писал(а): Так выбери разметку вручную и сам сделай как тебе надо.
Код: Выделить всё
#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); }Тем, что нафик не нужно и может отличаться от установленной версии.Dmaster писал(а):А чем дерево проекта плохо?
Dmaster писал(а):Если я из mdi переключусь в ручной режим всё КАААААААКК скакнёт в неизвестном направлении
Может это особенность такая?
Особенность. Надо в ручном режиме предварительно переключиться в "world mode". Меню Вид, два последних пункта.Dmaster писал(а):PS. ГЛУПОСТЬ СМОРОЗИЛ!. а можно при переключении в ручной режим не включать отображение координат в joins , а оставить координаты?