matlab机器人画圆
最近在学习机器人学导论,老师发来一个.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机器人画圆相关推荐
- ABB机器人画圆编程_ABB工业机器人(条件执行数字信号判断,画方or画圆)
一.前戏 条件:从安全点,到工具区域夹取工具(笔),到工作区域,判断数字信号 Di1 =1 ,Ture :画方,False:画圆,回到工具区域放下工具(笔),回到安全点 二. 准备工作 校准tcp工具 ...
- matlab怎么画园与椭圆,[转载]【MATLAB】画圆和椭圆
%圆和椭圆都是0到360°极角乘上极径来控制的图形 %当x,y方向极径相同时画出的就是圆 %当x,y方向极径不同时画出的就是椭圆 %圆心(x0,y0);半径(a,b); %旋转可以有两种方式: %1. ...
- ABB机器人画圆编程_ABB机器人使用rapid编程中问号的用法及画整圆指令
4. 通常自定义带可选参数例行程序中,通过ABB机器人编程的Present函数来判断用户是否使用了该可选参数.也可使用如下例子.此处问号作条件判断,即若调用MoveCircle时,使用了可选参数WOb ...
- ROS机器人实践---小乌龟画圆
ROS机器人实践---小乌龟画圆 一.ROS工作空间的建立 二.ROS机器人画圆程序的编写 三.启动ROS机器人 参考文章: 1.https://blog.csdn.net/qq_33835307/a ...
- matlab中circle函数_MATLAB如何用自带函数画圆
朋友们经常遇到已知圆心和半径,不需要保留圆周点坐标,但是想实现MATLAB的圆形绘制的情况.这时候用角度或者散点生成圆周坐标显然不划算,但是MATLAB又没有Circle之类的函数可以用来直接画圆.这 ...
- matlab已知圆心和半径怎么作圆,MATLAB中已知圆心和半径画圆
今天在用MATLAB编程的时候,用到了已知圆心和半径,画圆的程序,上网搜了一下,主要有下面两种,在这里总结一下:(这里我都是放在函数中做的,想画多个圆的话可以加个for循环调用一下函数,或者直接用向量 ...
- pr2机器人手臂画圆
欢迎转载请注明出处:海漩涡 http://blog.csdn.net/tanhuifang520 pr2机器人手臂画圆 零.sudo apt-get install ros-indigo-pr2-de ...
- 机器人画太极图abb机器人_ABB工业机器人(条件执行数字信号判断,画方or画圆)...
一.前戏 条件:从安全点,到工具区域夹取工具(笔),到工作区域,判断数字信号 Di1 =1 ,Ture :画方,False:画圆,回到工具区域放下工具(笔),回到安全点 二. 准备工作 校准tcp工具 ...
- MATLAB中已知圆心和半径画圆
今天在用MATLAB编程的时候,用到了已知圆心和半径,画圆的程序,上网搜了一下,主要有下面两种,在这里总结一下:(这里我都是放在函数中做的,想画多个圆的话可以加个for循环调用一下函数,或者直接用向量 ...
- matlab已知圆心和半径怎么作圆,matlab根据圆心和半径画圆三种方式
% 已知圆心和半径画圆:参考:https://blog.csdn.net/ZLK961543260/article/details/70216089 % 对比三种画圆方法,运算时长对比如下 % vis ...
最新文章
- R语言进行数据聚合统计(Aggregating transforms)实战:使用R原生方法、data.table、dplyr等方案、计算分组均值并添加到可视化结果中
- linux shell命令分布执行,Linux学习笔记:bash特性之多命令执行,shell脚本
- 2015年中国人才招聘趋势报告
- 以容器为代表的云原生技术,正成为释放云价值最短路径
- 今日恐慌与贪婪指数为23 恐慌程度有所缓解
- 超声乳化设备行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- Hadoop学习笔记(一)——编译安装和配置
- oracle查询显示小写,oracle查询区分大小写
- mysql 部署最佳实践_MySQL安装脚本最佳实践
- javaweb项目图
- c语言是高级编程语言吗,C语言是高级编程语言吗?
- 使用CORS解决跨域问题
- 大菠萝已经完全变味了
- Jvm与DVM与ART
- 字符串包含单引号加上mybitis${}写法引发的plese exclude tableName or statementId异常
- 基于vc的数字图像分割——基于阙值的分割方法
- 横版过关游戏开发-碰撞检测
- Verilog HDL语言要素
- ftp文件上传和下载
- spark1.0和2.0的区别_Spark2.0 VS Spark 1.* -------SparkSession的区别
热门文章
- 【演化(进化)算法】遗传算法原理及python实现
- sort降序shell_shell脚本学习指南之文本排序与排重等
- matlab的简单使用-matlab画f(x)=x^2+y^2的图像
- (一)音视频:解码H264文件流程 渲染和拿到解码后源数据YUV 完整Demo
- 海马苹果助手ipad版_资源分享苹果越狱工具
- Arduino笔记五三轴陀螺仪L3G4200D
- 为什么说Mobileye最辉煌的5年就是落后的5年
- 使用u盘安装linux操作系统原理
- 调用打码平台api获取验证码 (C#版)
- excel缩字间距_excel字体间距紧缩