所以我试图使用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。此外,未安装相控阵工具箱。
希望你能再次帮忙。。。谢谢
你说你已经安装了相控阵工具箱,但你不应该安装该产品,因为它还带来了与Corke工具箱冲突的函数rotx、roty、rotz。看见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.
我没有相控阵系统工具箱来真正检查,但我来自科克的rotz.m在第30行有注释,而你的错误消息中有代码。函数trchain和trotz中的代码与您的错误中的代码相同。
因此,请卸载相控阵系统工具箱。如果这没有帮助:请说明您正在使用的机器人工具箱和MATLAB的版本。您的命令在我的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:_ROBsoftwarervctoolsrobotdataARTE)
- 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]