Ошибка при использовании rotz — не принимается символический аргумент

Итак, я пытаюсь вычислить некоторые однородные матрицы преобразования, используя набор инструментов Peter Corke Robotics, однако, когда я пытаюсь использовать команду «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" прекрасно работает с числовыми аргументами.

Любая помощь будет очень кстати - спасибо!

EDIT -- Новая ошибка!

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

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 не установлен.

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


person Hassan Mirza    schedule 06.11.2018    source источник


Ответы (1)


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

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 Toolbox, чтобы действительно проверить, но мой 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]
person Martin Weiß    schedule 06.11.2018
comment
Большое спасибо, удаление набора инструментов Phased Array сработало. Спасибо ! :D - person Hassan Mirza; 07.11.2018