MATLAB robotics toolbox机器人工具箱 (Index exceeds the number of array elements报错)解决方案

MATLAB 机器人工具箱 plot/teach可视化程序 数组越界报错/解决方案

报错信息

当在MATLAB 2019及以上版本中使用Robotics工具箱时,运行plot或teach等含可视化功能的命令时出现以下报错信息:

Index exceeds the number of array elements. Index must not exceed 4.

出错 SerialLink/plot>create_robot (第 469 行)
            d = norm( d(4:6)-d(1:3) ) / 72;

出错 SerialLink/plot (第 252 行)
        handle = create_robot(robot, opt);

在这里插入图片描述
索引超出数组数目
在MATLAB2018b以前版本中不会出现这个问题

解决方法

一、临时解决方案
每次都在可视化语句前加入以下命令:

view(3);

虽能解决可视化问题,但仍会报错

此类型的变量不支持使用点进行索引。

出错 SerialLink/animate (第 105 行)
                        if h.link(L) ~= 0

出错 SerialLink/plot (第 299 行)
    robot.animate(qq);

二、一劳永逸方案
1、在命令行窗口中输入

edit SerialLink.plot

此时会打开工具箱中的plot.m文件,如下图:
在这里插入图片描述
2、在程序的开头处加入如下程序

[myModifyForViewErrorA,myModifyForViewErrorB]=view(gca);
if isequal([myModifyForViewErrorA,myModifyForViewErrorB],[0,90])
    view(3)
end

如下图:
在这里插入图片描述
再次执行可视化程序,即可成功运行!

运行效果

1、运行示例程序

startup_rvc
L1 = Link('d', 0, 'a', 1, 'alpha', pi/2)
L2 = Link('d', 0, 'a', 1, 'alpha', 0)
bot = SerialLink([L1 L2], 'name', 'my robot')
bot.fkine([0.1 0.2]) 
bot.plot([pi/4 pi/3])

2、绘图效果
在这里插入图片描述
参考博客:
解决高版本MATLAB robotics toolbox在plot/teach时报错问题

  • 28
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 19
    评论
如果你想要使用 MATLABRobotics Toolbox 工具箱和 Link 函数来实现运动学仿真模型,可以按照以下步骤进行操作: 1. 首先,确保已经安装了 Robotics Toolbox 工具箱。你可以从 MathWorks 官方网站下载并安装它。 2. 在 MATLAB 中创建一个机器人对象,可以使用 Robotics Toolbox 的 `SerialLink` 函数。该函数需要一个由 `Link` 对象组成的向量作为输入参数。 3. 使用 `Link` 函数来定义每个关节的参数,包括长度、旋转轴和偏移量等。创建一个 `Link` 对象需要提供这些参数。 4. 将所有 `Link` 对象组成一个向量,并将该向量作为输入参数传递给 `SerialLink` 函数来创建机器人对象。 以下是一个示例代码: ```matlab % 导入 Robotics Toolbox addpath('路径/到/Robotics Toolbox文件夹'); % 创建 Link 对象 L1 = Link([0, 0.5, 0.5, 0], 'standard'); L2 = Link([0, pi/2, 0, 0], 'standard'); L3 = Link([0, 0, 0, 0.5], 'standard'); L4 = Link([0, 0, 0, 0.1], 'standard'); % 创建 SerialLink 对象 robot = SerialLink([L1, L2, L3, L4]); % 设置机器人名称 robot.name = 'MyRobot'; % 显示机器人模型 robot.plot([0, 0, 0, 0]); % 计算正运动学 joint_angles = [pi/6, pi/4, pi/3, pi/2]; end_effector_pose = robot.fkine(joint_angles); % 输出末端坐标 disp('末端坐标:'); disp(end_effector_pose(1:3,4)); ``` 在这个示例中,我们首先导入 Robotics Toolbox 工具箱,并设置它的路径。然后,我们使用 `Link` 函数创建了四个关节对象 `L1`、`L2`、`L3` 和 `L4`,并指定了它们的 D-H 参数。接下来,我们使用这些关节对象创建了一个机器人对象 `robot`。我们还可以为机器人对象设置一个名称,并使用 `plot` 函数显示机器人模型。 最后,我们可以使用 `fkine` 函数计算机器人的正运动学,并输出末端坐标。 请注意,这只是一个简单的示例代码,你可以根据你具体的机器人参数和需求进行修改和扩展。希望对你有所帮助!如果你还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值