matlab机器人画圆

matlab机器人画圆最近在学习机器人学导论,老师发来一个.m文件,构建了一个机器人,然后让这个机器人末端画圆。然而我遇到了很多问题。先上代码%定义连杆%thetadaalphaL1=Link([01380-pi/2]);L2=Link([001350]);L3=Link([001470]);%定义关节角范围L1.ql…

大家好,又见面了,我是你们的朋友全栈君。

最近在学习机器人学导论,老师发来一个.m文件,构建了一个机器人,然后让这个机器人末端画圆。然而我遇到了很多问题。
先上代码

%定义连杆
%        theta  d  a  alpha
L1 = Link([0   138 0   -pi/2]);
L2 = Link([0    0 135   0]);
L3 = Link([0    0 147   0]);
%定义关节角范围
L1.qlim = [deg2rad(-90) deg2rad(90)];
L2.qlim = [deg2rad(0) deg2rad(85)];
L3.qlim = [deg2rad(-90) deg2rad(10)];
%连接连杆
dobot = SerialLink([L1 L2 L3],'name','Dobot');

%定义圆
N = (0:0.5:100)'; 
center = [175 0 5];
radius = 50;
theta = ( N/N(end) )*2*pi;
points = (center + radius*[cos(theta) sin(theta) zeros(size(theta))])';  
plot3(points(1,:),points(2,:),points(3,:),'r');

%pionts矩阵是“横着”的,取其转置矩阵,进一步得到其齐次变换矩阵
T = transl(points');

%当反解的机器人对象的自由度少于6时,要用mask vector进行忽略某个关节自由度%
q = dobot.ikine(T,'mask',[1 1 1 0 0 0]);
hold on;
dobot.plot(q,'tilesize',300)

问题一、 文件名有问题,导致.m文件无法执行
如图所示
文件名为 dobot+robot.m 其中有‘+’,无法正确执行启动的代码
解决办法:
重命名为dobot_robot.m
也可以选中所有代码,右键,执行所选内容

问题二、程序执行时报错

错误使用 SerialLink/fkine (line 85)
q must have 3 columns

出错 SerialLink/jacob0 (line 61)
	Tn = fkine(robot, q);	% end-effector transformation

出错 SerialLink/ikine (line 153)
    J0 = jacob0(robot, q);

出错 dobot_robot (line 25)
q = dobot.ikine(T,'mask',[1 1 1 0 0 0]);

错误出现在这一行q = dobot.ikine(T,‘mask’,[1 1 1 0 0 0]);
ikine函数用于逆运动学求解,使用help指令查看帮助,找到ikine的用法
Q = R.ikine(T, Q0, M, OPTIONS)
其中T表示位姿,Q0表示初始状态,M是指几轴运动
本例中T已经计算好了,是一个圆;
Q0初始为0,这里应该为[0 0 0];
dobot为3轴机器人,这里M为[1 1 1 0 0 0];
解决办法
修改这一行为q = dobot.ikine(T,[0 0 0],[1 1 1 0 0 0]);
修改后运行程序,正常运行,弹出画面,但是不完整,明显缺少上面一块
在这里插入图片描述
可能因为先画的圆,导致坐标系不完整,这里在画圆后加一行机器人的显示
dobot.plot([0 0 0]);
在这里插入图片描述
机器人果然动起来了
附上最后代码

%定义连杆
%        theta  d  a  alpha
L1 = Link([0   138 0   -pi/2]);
L2 = Link([0    0 135   0]);
L3 = Link([0    0 147   0]);
%定义关节角范围
L1.qlim = [deg2rad(-90) deg2rad(90)];
L2.qlim = [deg2rad(0) deg2rad(85)];
L3.qlim = [deg2rad(-90) deg2rad(10)];
%连接连杆
dobot = SerialLink([L1 L2 L3],'name','Dobot');

%定义圆
N = (0:0.5:100)'; 
center = [175 0 5];
radius = 50;
theta = ( N/N(end) )*2*pi;
points = (center + radius*[cos(theta) sin(theta) zeros(size(theta))])';  
plot3(points(1,:),points(2,:),points(3,:),'r');

dobot.plot([0 0 0]);%显示机器人初始状态

%pionts矩阵是“横着”的,取其转置矩阵,进一步得到其齐次变换矩阵
T = transl(points');

%当反解的机器人对象的自由度少于6时,要用mask vector进行忽略某个关节自由度%
q = dobot.ikine(T,[0 0 0],[1 1 1 0 0 0]);
hold on;
dobot.plot(q,'tilesize',300)

matlab版本2017a
Robotics Toolbox 版本 9.10.0

说的有点啰嗦,以上是我解决这次问题的步骤,记录下来,希望能帮助到有相同问题的人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150868.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • vue的双向绑定原理_vue2双向绑定原理

    vue的双向绑定原理_vue2双向绑定原理1、背景今天要讲的内容是Web前端框架vue.js中的一个细节,注意是细节哦,稍不留神就掉坑里了。由于这两天在公司开发前端vue页面,踩到了一个坑,这个坑不大不小的,但是对于我这种除非公司需要,否则不会主动学习前端技术的后端开发者来说,这个坑困扰了我半天时间。无论怎么修改代码,还是实现不了效果,归根结底还是没有找到问题的点所在。凡事都有好的一面,今天上午脑子就开了光,思路比昨天下午清晰多了,顺着思路,我终于发现了问题的点所在,然后百度一搜,果然是这样,嗨!于是我决定总结一番!大家都知道,vu

    2022年10月18日
  • css中placeholder用法_html placeholder

    css中placeholder用法_html placeholder#iInput::-webkit-input-placeholder{color:blue;}#iInput:-moz-placeholder{color:blue;}#iInput:-ms-

    2022年8月1日
  • datagrip激活码20213月最新在线激活

    datagrip激活码20213月最新在线激活,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
  • Centos7磁盘阵列部署与修复「建议收藏」

    Centos7磁盘阵列部署与修复「建议收藏」Centos7磁盘阵列部署与修复一、部署RAID10#1、虚拟机添加4块20G的硬盘设备#2、mdadm命令,其中-n4代表使用4块磁盘,-l10代表使用RAID10技术mdadm-Cv/dev/md0-ayes-n4-l10/dev/sdb/dev/sdc/dev/sdd/dev/sde#3、制作好的RAID磁盘阵列格式化为ext4mkfs.ext4/dev/md0#4、创建挂载点,进行磁盘设备挂载mkdir/RAIDmount/dev/md0/RA

    2022年4月27日
  • WPF WrapPanel

    WPF WrapPanelWrapPanel布局面板将各个控件从左至右按照行或列的顺序罗列,当长度或高度不够是就会自动调整进行换行,后续排序按照从上至下或从右至左的顺序进行。Orientation——根据内容自动换行。当Horizontal选项看上去类似于Windows资源管理器的缩略图视图:元素是从左向右排列的,然后自上至下自动换行。Vertical选项看上去类似于Windows资源管理器的列表视图:元素是从上…

    2022年7月23日
  • 怎么样复制网页上不能复制的文字_如何复制文字

    怎么样复制网页上不能复制的文字_如何复制文字网上的办法有很多,大部分是使用上的漏洞,但是我们作为技术人员那么去弄就太LOW了,接下来从修改代码的角度去过掉,很简单:这里以百度文库为例子,毕竟百度文库真的是XX;第一步:ctrl+s保存:比如:https://wenku.baidu.com/view/142a3a06a26925c52dc5bf14.html?from=search这个链接里面的文字我们是不能复制的…

    2022年10月10日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号