MATLAB Robotics Toolbox机器人工作空间显示

今天想用matlab绘制机器人的工作空间,找了半天没找到对应的函数,只能用plot()一步一步画了
这个是机器人原型
在这里插入图片描述
下面是matlab代码

T(1) = Link([0 0 10 0]);
T(2) = Link([0 0 5 0]);
T(3) = Link([0 0 0 0]);%原本是两轴机器人,但是为了显示末端,在加一个轴
T(1).qlim = [0 pi];
T(2).qlim = [-pi/2 pi];
ws = SerialLink(T,'name','ws');
n=1;
for i = 0:0.1:pi
    for j = -pi/2:0.1:pi	%遍历所有可能的角度
    	%同一个机器人的多个图像不能同时显示,这里需要克隆多个名字不同的机器人
        clone = SerialLink(T,'name',strcat('clone',num2str(n)));	
        %在同一个窗口,绘制多个机器人
        clone.plot([i j 0],'workspace',[-16 16 -16 16 0 2],'view','top','noname','noshading','nowrist','noshadow','jointdiam',2,'linkcolor','g');
        n = n+1;
        hold on
    end
end

其中
‘workspace’,[xmn xmx ymn ymx zmn zmx] 矩形环境空间,根据实际情况选择参数
‘view’,‘top’ 初始观察方向,
‘noname’ 不显示机器人名字
‘noshading’ 不用光源,节约资源
‘nowrist’ 不显示坐标系
‘noshadow’ 不显示阴影
‘jointdiam’,2 关节高度
‘linkcolor’,‘g’ 关节轴颜色,绿色
结果展示
在这里插入图片描述
与答案对比
在这里插入图片描述
最后总结
这种方法只适用于简单的机器人,对于多关节的机器人工作空间的绘制会十分缓慢,建议使用robodk
而且我的代码克隆了很多机器人,导致后面越画越慢(不过之后我使用delete(clone)好像也没啥用)

----------------------------------------------------------以上是分割线--------------------------------------------------------
现在看看之前的代码好蠢,其实可以用正运动学直接计算出末端坐标,然后用scatter3(x,y,z,’.’)描点就好了,下面是代码

clear
T(1) = Link([0 0 10 0]);
T(2) = Link([0 0 5 0]);
T(1).qlim = [0 pi];
T(2).qlim = [-pi/2 pi];
ws = SerialLink(T,'name','ws');
for i = 0:0.1:pi
    for j = -pi/2:0.1:pi
        T = ws.fkine([i j]);
        qn = T*[0;0;0;1];
        ws.plot([i j]);
        plot3(qn(1),qn(2),qn(3),'.');
        hold on
    end
end

这样速度很快,也可以清晰地显示机器人的运动过程。
下面是结果
在这里插入图片描述

  • 8
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值