最近在学习机器人学导论,老师发来一个.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

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

matlab机器人画圆相关推荐

  1. ABB机器人画圆编程_ABB工业机器人(条件执行数字信号判断,画方or画圆)

    一.前戏 条件:从安全点,到工具区域夹取工具(笔),到工作区域,判断数字信号 Di1 =1 ,Ture :画方,False:画圆,回到工具区域放下工具(笔),回到安全点 二. 准备工作 校准tcp工具 ...

  2. matlab怎么画园与椭圆,[转载]【MATLAB】画圆和椭圆

    %圆和椭圆都是0到360°极角乘上极径来控制的图形 %当x,y方向极径相同时画出的就是圆 %当x,y方向极径不同时画出的就是椭圆 %圆心(x0,y0);半径(a,b); %旋转可以有两种方式: %1. ...

  3. ABB机器人画圆编程_ABB机器人使用rapid编程中问号的用法及画整圆指令

    4. 通常自定义带可选参数例行程序中,通过ABB机器人编程的Present函数来判断用户是否使用了该可选参数.也可使用如下例子.此处问号作条件判断,即若调用MoveCircle时,使用了可选参数WOb ...

  4. ROS机器人实践---小乌龟画圆

    ROS机器人实践---小乌龟画圆 一.ROS工作空间的建立 二.ROS机器人画圆程序的编写 三.启动ROS机器人 参考文章: 1.https://blog.csdn.net/qq_33835307/a ...

  5. matlab中circle函数_MATLAB如何用自带函数画圆

    朋友们经常遇到已知圆心和半径,不需要保留圆周点坐标,但是想实现MATLAB的圆形绘制的情况.这时候用角度或者散点生成圆周坐标显然不划算,但是MATLAB又没有Circle之类的函数可以用来直接画圆.这 ...

  6. matlab已知圆心和半径怎么作圆,MATLAB中已知圆心和半径画圆

    今天在用MATLAB编程的时候,用到了已知圆心和半径,画圆的程序,上网搜了一下,主要有下面两种,在这里总结一下:(这里我都是放在函数中做的,想画多个圆的话可以加个for循环调用一下函数,或者直接用向量 ...

  7. pr2机器人手臂画圆

    欢迎转载请注明出处:海漩涡 http://blog.csdn.net/tanhuifang520 pr2机器人手臂画圆 零.sudo apt-get install ros-indigo-pr2-de ...

  8. 机器人画太极图abb机器人_ABB工业机器人(条件执行数字信号判断,画方or画圆)...

    一.前戏 条件:从安全点,到工具区域夹取工具(笔),到工作区域,判断数字信号 Di1 =1 ,Ture :画方,False:画圆,回到工具区域放下工具(笔),回到安全点 二. 准备工作 校准tcp工具 ...

  9. MATLAB中已知圆心和半径画圆

    今天在用MATLAB编程的时候,用到了已知圆心和半径,画圆的程序,上网搜了一下,主要有下面两种,在这里总结一下:(这里我都是放在函数中做的,想画多个圆的话可以加个for循环调用一下函数,或者直接用向量 ...

  10. matlab已知圆心和半径怎么作圆,matlab根据圆心和半径画圆三种方式

    % 已知圆心和半径画圆:参考:https://blog.csdn.net/ZLK961543260/article/details/70216089 % 对比三种画圆方法,运算时长对比如下 % vis ...

最新文章

  1. R语言进行数据聚合统计(Aggregating transforms)实战:使用R原生方法、data.table、dplyr等方案、计算分组均值并添加到可视化结果中
  2. linux shell命令分布执行,Linux学习笔记:bash特性之多命令执行,shell脚本
  3. 2015年中国人才招聘趋势报告
  4. 以容器为代表的云原生技术,正成为释放云价值最短路径
  5. 今日恐慌与贪婪指数为23 恐慌程度有所缓解
  6. 超声乳化设备行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  7. Hadoop学习笔记(一)——编译安装和配置
  8. oracle查询显示小写,oracle查询区分大小写
  9. mysql 部署最佳实践_MySQL安装脚本最佳实践
  10. javaweb项目图
  11. c语言是高级编程语言吗,C语言是高级编程语言吗?
  12. 使用CORS解决跨域问题
  13. 大菠萝已经完全变味了
  14. Jvm与DVM与ART
  15. 字符串包含单引号加上mybitis${}写法引发的plese exclude tableName or statementId异常
  16. 基于vc的数字图像分割——基于阙值的分割方法
  17. 横版过关游戏开发-碰撞检测
  18. Verilog HDL语言要素
  19. ftp文件上传和下载
  20. spark1.0和2.0的区别_Spark2.0 VS Spark 1.* -------SparkSession的区别

热门文章

  1. 【演化(进化)算法】遗传算法原理及python实现
  2. sort降序shell_shell脚本学习指南之文本排序与排重等
  3. matlab的简单使用-matlab画f(x)=x^2+y^2的图像
  4. (一)音视频:解码H264文件流程 渲染和拿到解码后源数据YUV 完整Demo
  5. 海马苹果助手ipad版_资源分享苹果越狱工具
  6. Arduino笔记五三轴陀螺仪L3G4200D
  7. 为什么说Mobileye最辉煌的5年就是落后的5年
  8. 使用u盘安装linux操作系统原理
  9. 调用打码平台api获取验证码 (C#版)
  10. excel缩字间距_excel字体间距紧缩