Страница 7 из 10
Re: Настройка кинематики в EMC2
Добавлено: 09 янв 2015, 16:31
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
Re: Настройка кинематики в EMC2
Добавлено: 09 янв 2015, 16:45
Serg
PKM писал(а):Немного непривычно #define в цикле
Почему в цикле? Нет там цикла...
PKM писал(а):__comp_inst это уже фирменная фишка ЕМС?
Просто переменная. Кстати, halcompile такие имена выдумывает, ну я тоже их пользую по инерции...

Re: Настройка кинематики в EMC2
Добавлено: 09 янв 2015, 16:58
PKM
Хорошо, но какой тогда смысл в i? Я предположил, что эта строка внутри цикла находится.
Меня это и сбило с толку, думаю почему писать кинематику в формате comp?

Re: Настройка кинематики в EMC2
Добавлено: 09 янв 2015, 17:07
PKM
Логично... я в принципе читал о define, но такой вариант упустил

Re: Настройка кинематики в EMC2
Добавлено: 12 янв 2015, 23:18
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); }
Re: Настройка кинематики в EMC2
Добавлено: 12 янв 2015, 23:41
nkp
Dmaster писал(а):comp --install не предлагать.. он у меня не ставится (sudo apt-get install linuxcnc-dev) ((( из за того, что я версию 2.7.0 впихнул.
тут надо прояснить
тебе всё равно будет нужен этот инструмент , ибо удобен и быстр с ним метод установки...
не ставится кто? comp ? или пакет linuxcnc-dev не ставится?
желателен показ ошибок ...
Re: Настройка кинематики в EMC2
Добавлено: 12 янв 2015, 23:44
nkp
не помню , с каких времен вместо comp идет
halcompile
может он уже у тебя стоит ?
Re: Настройка кинематики в EMC2
Добавлено: 12 янв 2015, 23:45
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: Сломанные пакеты
Re: Настройка кинематики в EMC2
Добавлено: 12 янв 2015, 23:51
nkp
может попробовать старую версию поставить
sudo apt-get install linuxcnc-dev=1:2.6.5
Re: Настройка кинематики в EMC2
Добавлено: 12 янв 2015, 23:54
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:~$
Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 00:02
nkp
так вроде бы можно посмотреть доступную версию пакета:
sudo apt-cache policy linuxcnc-dev
Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 00:03
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
Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 00:24
Serg
Как "впихивал" 2.7.0?
Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 00:32
Dmaster
Честно не помню КАк)), но помню зачем. Remap для m кодов делал, хотел найти версию в которой файлы брались из указанной папки. ) завтра снесу систему и попробую снова.
Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 00:33
nkp
ну я когда не получается - перехожу к варварсим методам:
можно попробовать "насильно" положить файл comp в /usr/bin
это же питона файл - пути должен найти
если не заработает - и вреда не нанесет
=========
sudo nautilus
открываем /usr/bin
распаковываем архив
ложим файл
пробуем
$ comp -h
Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 10:50
Nick
Можно добавить master репозиторий от build-bot, но он правда тоже может потянуть какие-нибудь зависимости.
И да, ошибки компиляции покажи!
Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 11:05
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'
Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 11:11
Dmaster
не правильно задавал путь.. теперь вот что
root@dan-desktop:~# sudo comp --compile dankins2.c
Unable to locate Makefile.modinc
Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 11:18
nkp
Dmaster писал(а):root@dan-desktop:~# sudo comp --compile dankins2.cUnable to locate Makefile.modinc
с кинематиками применял всегда
sudo comp --install ...
=======
уже писал - но повторюсь (опять же .... способ

)
чтоб избежать
пока проблем , выбери уже существующий файл кинематики...
редактируй его...
sudo comp --install ...
всё
Re: Настройка кинематики в EMC2
Добавлено: 13 янв 2015, 11:24
Dmaster
nkp писал(а):чтоб избежать пока проблем , выбери уже существующий файл кинематики...
редактируй его...
Так и сделал)))
nkp писал(а):sudo comp --install ...
Код: Выделить всё
root@dan-desktop:~# sudo comp --install dankins2.c
Unable to locate Makefile.modinc