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

时间:2018-11-06 15:09:45

标签: matlab robotics matlab-compiler kinematics

因此,我尝试使用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”函数对于数字参数也可以很好地工作。

非常欢迎任何帮助-谢谢!

编辑-一个新错误!

再次尝试代码时(即使前几天工作正常),我现在又收到一条消息:

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。另外,没有安装相控阵工具箱。

希望您能再次提供帮助...谢谢

1 个答案:

答案 0 :(得分:0)

您说您已经安装了相控阵工具箱,但是您不应该安装该产品,因为它还带来了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.  

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

因此,请卸载相控阵列系统工具箱。如果这样做没有帮助:请说明您使用的Robotics Toolbox和MATLAB的版本。 使用以下Robotics Toolbox版本,您的命令可以在我的MATLAB 2016a上正常运行:

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]