使用 rotz 时出错 - 不接受符号参数

Error using rotz - Not accepting symbolic argument

所以我尝试使用 Peter Corke 的机器人工具箱计算一些齐次变换矩阵,但是当我尝试使用 "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 未安装。

希望你能再次帮助...谢谢你

您说您已经安装了相控阵工具箱,但您不应该安装该产品,因为它还具有 rotx、roty、rotz 功能,与 Corke 工具箱冲突。请参阅 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.  

我没有相控阵系统工具箱来真正检查,但是我来自 Corke 的 rotz.m 在第 30 行有注释,而你的错误消息在那里有代码。函数 trchain 和 trotz 中的代码与您的错误中的代码相同。

所以卸载相控阵系统工具箱。如果这没有帮助:请说明您正在使用的 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]