Ошибка при использовании Rotz - Не принимает символический аргумент - PullRequest
0 голосов
/ 06 ноября 2018

Итак, я пытаюсь вычислить некоторые однородные матрицы преобразования, используя набор инструментов Робототехники Питера Корка, однако, когда я пытаюсь использовать команду "trchain":

syms a1 q1 q2

trchain('Rz(q1)Tz(a1)Ry(q2)',[q1 q2])

Я получаю следующий вывод:

Error using rotz
Expected GAMMA to be one of these types:

double

Instead its type was sym.

Error in sigdatatypes.validateAngle (line 22)
validateattributes(x,{'double'},{'finite','nonnan','nonempty','real'},...

Error in rotz (line 30)
sigdatatypes.validateAngle(gamma,'rotz','GAMMA',{'scalar'});

Error in trotz (line 36)
    T =    [rotz(t, varargin{:}) [0 0 0]'; 0 0 0 1];

Error in trchain (line 93)
                T = T * trotz(arg);

Я посмотрел онлайн и наткнулся на несколько вещей (например, убедитесь, что Phase Array Toolbox установлен), но ничего не работает.

Та же проблема возникает, если я пытаюсь использовать сам «rotz», а не в команде «trchain». Кроме того, функция "rotz" прекрасно работает для числовых аргументов.

Любая помощь будет приветствоваться - спасибо!

РЕДАКТИРОВАТЬ - Новая ошибка!

После повторной попытки кода (хотя на днях он работал нормально), я теперь получаю другое сообщение:

Error using ROUNDN
Expected X to be one of these types:

single, double

Instead its type was sym.

Error in roundn (line 31)
validateattributes(x, {'single', 'double'}, {}, 'ROUNDN', 'X')

Error in rotz (line 18)
R = roundn(R, -15);

Error in trotz (line 36)
T =    [rotz(t, varargin{:}) [0 0 0]'; 0 0 0 1];

Error in trchain (line 93)
            T = T * trotz(arg);

Error in kinematics1 (line 3)
trchain('Rz(q1)Tz(a1)Ry(q2)',[q1 q2])

Код точно такой же, как указано выше. Используемая версия Matlab - R2018a, а версия Robotics Toolbox - 10.3. Кроме того, Phased Array Toolbox не установлен.

Надеюсь, ты сможешь помочь снова ... спасибо

1 Ответ

0 голосов
/ 07 ноября 2018

Вы говорите, что установили Phased Array Toolbox, но НЕ должны были устанавливать этот продукт, потому что он также предоставляет функции rotx, roty, rotz, конфликтующие с Corke Toolbox. См. http://petercorke.com/wordpress/toolboxes/faq, где стандартная ошибка представляет собой несоответствие между единицами, радианами и градусами, с символической панелью инструментов очевидно больше ошибок, см. Текст там:

You are using functions with the same name as Robotics Toolbox for MATLAB functions 
but which are not from the Robotics Toolbox for MATLAB.  
The usual culprit is the MATLAB Phased Array System Toolbox.  To test this
>> which rotx
which shows you the filesystem path to rotx.m.  

У меня нет инструментария Phased Array System Tool для реальной проверки, но мой rotz.m от Corke содержит комментарии вплоть до 30-й строки, тогда как в вашем сообщении об ошибке содержится код. Код в функциях trchain и trotz такой же, как и в ваших ошибках.

Итак, удалите Phased Array System Toolbox. Если это не помогает: пожалуйста, укажите версии Robotics Toolbox и MATLAB, которые вы используете. Ваши команды отлично работают на моем MATLAB 2016a со следующей версией Robotics Toolbox:

Robotics, Vision & Control: (c) Peter Corke 1992-2011 http://www.petercorke.com
- Robotics Toolbox for MATLAB (release 10.2)
 - ARTE contributed code: 3D models for robot manipulators (D:\_ROB\software\rvctools\robot\data\ARTE)
 - pHRIWARE (release 1.1): pHRIWARE is Copyrighted by Bryan Moutrie (2013-2018) (c)

дает результат

ans =
[ cos(q1)*cos(q2), -sin(q1), cos(q1)*sin(q2),  0]
[ cos(q2)*sin(q1),  cos(q1), sin(q1)*sin(q2),  0]
[        -sin(q2),        0,         cos(q2), a1]
[               0,        0,               0,  1]
...