简单粗暴,直接上代码!!!

使用工具箱的情况:

代码1:

% By 跃动的风
% arm_solve.m
% 机械臂可达空间动画求解
% 修改:罗伯特祥
% using  Robotic Toolbox 10.3clc;
clear;
L(1) = Link([0,0.08,0,-pi/2]);
L(2) = Link([0,0.455,0,pi/2]);
L(3) = Link([0,0.0,0,-pi/2]);
L(4) = Link([0,0.145,0,pi/2]);
L(1).qlim=[0,pi/2];
L(2).qlim=[-pi/2,pi/2];
L(3).qlim=[-pi/2,pi/2];
L(4).qlim=[-pi,pi];
base=[ 1 0 0 0;0 0 -1 0;0 1 0 0;0 0 0 1];four_arm = SerialLink(L,'name','fourarm','base',base);teach(four_arm);
four_arm.plot([0 0 pi/3 0])
hold on;
N=30000;    %随机次数%关节角度限制
limitmax_1 = 0.0;
limitmin_1 = 90.0;
limitmax_2 = -90.0;
limitmin_2 = 90.0;
limitmax_3 = -90.0;
limitmin_3 = 90.0;
limitmax_4 = -180.0;
limitmin_4 = 180.0;theta1=(limitmin_1+(limitmax_1-limitmin_1)*rand(N,1))*pi/180; %关节1限制
theta2=(limitmin_2+(limitmax_2-limitmin_2)*rand(N,1))*pi/180; %关节2限制
theta3=(limitmin_3+(limitmax_3-limitmin_3)*rand(N,1))*pi/180; %关节3限制
theta4=(limitmin_4+(limitmax_4-limitmin_4)*rand(N,1))*pi/180; %关节4限制
hold on;
for n=1:1:3000qq=[theta1(n),theta2(n),theta3(n),theta4(n)];four_arm.plot(qq);%动画显示Mricx=four_arm.fkine(qq);plot3(Mricx(1,1).t(1),Mricx(1,1).t(2),Mricx(1,1).t(3),'b.','MarkerSize',0.5);%画出落点
end
hold off;

代码2:

% By 跃动的风
% 机械臂可达空间迅速求解
% Robotic Toolbox 9.10clc;
clear;
L(1) = Link([0,0.08,0,-pi/2]);
L(2) = Link([0,0.455,0,pi/2]);
L(3) = Link([0,0.0,0,-pi/2]);
L(4) = Link([0,0.145,0,pi/2]);
L(1).qlim=[0,pi/2];
L(2).qlim=[-pi/2,pi/2];
L(3).qlim=[-pi/2,pi/2];
L(4).qlim=[-pi,pi];
base=[ 1 0 0 0;0 0 -1 0;0 1 0 0;0 0 0 1];four_arm = SerialLink(L,'name','fourarm','base',base);teach(four_arm);
four_arm.plot([0 0 pi/3 0])
hold on;
N=30000;    %随机次数%关节角度限制
limitmax_1 = 0.0;
limitmin_1 = 90.0;
limitmax_2 = -90.0;
limitmin_2 = 90.0;
limitmax_3 = -90.0;
limitmin_3 = 90.0;
limitmax_4 = -180.0;
limitmin_4 = 180.0;theta1=(limitmin_1+(limitmax_1-limitmin_1)*rand(N,1))*pi/180; %关节1限制
theta2=(limitmin_2+(limitmax_2-limitmin_2)*rand(N,1))*pi/180; %关节2限制
theta3=(limitmin_3+(limitmax_3-limitmin_3)*rand(N,1))*pi/180; %关节3限制
theta4=(limitmin_4+(limitmax_4-limitmin_4)*rand(N,1))*pi/180; %关节4限制qq=[theta1,theta2,theta3,theta4];Mricx=four_arm.fkine(qq);x=reshape(Mricx(1,4,:),N,1);
y=reshape(Mricx(2,4,:),N,1);
z=reshape(Mricx(3,4,:),N,1);
plot3(x,y,z,'b.','MarkerSize',0.5);%画出落点
hold on;

不使用工具箱的情况下:

clc;
clear;
figure( 'Name', 'ROBOT工作空间求解');%连杆DH参数输入
a0=0;
a1=0;
a2=-240;
a3=-195;
a4=0;
a5=0;alpha0=0;
alpha1=pi/2;
alpha2=0;
alpha3=0;
alpha4=pi/2;
alpha5=-pi/2;d1=70;
d2=0;
d3=0;
d4=102.3;
d5=102.3;
d6= 62;%蒙特卡洛随机点
th1=(0+(180-(0))*rand(1,20000))*pi/180;%a为关节角下限,b为关节角上限
th2=(-90+(90-(-90))*rand(1,20000))*pi/180;
th3=(-90+(90-(-90))*rand(1,20000))*pi/180;
th4=(-180+(180-(-180))*rand(1,20000))*pi/180;
th5=(-180+(180-(-180))*rand(1,20000))*pi/180;
th6=(-180+(180-(-180))*rand(1,20000))*pi/180;%循环求解正运动学
for i=1:1:20000;theta1=th1(i);
theta2=th2(i);
theta3=th3(i);
theta4=th4(i);
theta5=th5(i);
theta6=th6(i);T01=[cos(theta1),-sin(theta1),0,a0;sin(theta1)*cos(alpha0),cos(theta1)*cos(alpha0),-sin(alpha0),-sin(alpha0)*d1;sin(theta1)*sin(alpha0),cos(theta1)*sin(alpha0),cos(alpha0),cos(alpha0)*d1;0,0,0,1]
T12=[cos(theta2),-sin(theta2),0,a1;sin(theta2)*cos(alpha1),cos(theta2)*cos(alpha1),-sin(alpha1),-sin(alpha1)*d2;sin(theta2)*sin(alpha1),cos(theta2)*sin(alpha1),cos(alpha1),cos(alpha1)*d2;0,0,0,1]
T23=[cos(theta3),-sin(theta3),0,a2;sin(theta3)*cos(alpha2),cos(theta3)*cos(alpha2),-sin(alpha2),-sin(alpha2)*d3;sin(theta3)*sin(alpha2),cos(theta3)*sin(alpha2),cos(alpha2),cos(alpha2)*d3;0,0,0,1]
T34=[cos(theta4),-sin(theta4),0,a3;sin(theta4)*cos(alpha3),cos(theta4)*cos(alpha3),-sin(alpha3),-sin(alpha3)*d4;sin(theta4)*sin(alpha3),cos(theta4)*sin(alpha3),cos(alpha3),cos(alpha3)*d4;0,0,0,1]T45=[cos(theta5),-sin(theta5),0,a4;sin(theta5)*cos(alpha4),cos(theta5)*cos(alpha4),-sin(alpha4),-sin(alpha4)*d5;sin(theta5)*sin(alpha4),cos(theta5)*sin(alpha4),cos(alpha4),cos(alpha4)*d5;0,0,0,1]T56=[cos(theta6),-sin(theta6),0,a5;sin(theta6)*cos(alpha5),cos(theta6)*cos(alpha5),-sin(alpha5),-sin(alpha5)*d4;sin(theta6)*sin(alpha5),cos(theta6)*sin(alpha5),cos(alpha5),cos(alpha5)*d4;0,0,0,1]T=T01*T12*T23*T34*T45*T56;%px,py,pz计算公式
px(i)=T(1,4);py(i)=T(2,4);pz(i)=T(3,4);end;%打印空间坐标点subplot(221);
scatter3(px,py,pz,'.');
title('工作空间三维图');
xlabel('x轴');%x轴坐标
ylabel('y轴');%y轴坐标
zlabel('z轴');%z轴坐标subplot(222);
scatter3(px,py,pz,'.');
view(0,90);%视图调整
title('工作空间XY平面');
xlabel('x轴');%x轴坐标
ylabel('y轴');%y轴坐标
zlabel('z轴');%z轴坐标subplot(223);
scatter3(px,py,pz,'.');
view(0,0);%视图调整
title('工作空间XZ平面');
xlabel('x轴');%x轴坐标
ylabel('y轴');%y轴坐标
zlabel('z轴');%z轴坐标subplot(224);
scatter3(px,py,pz,'.');
view(90,0);%视图调整
title('工作空间YZ平面');
xlabel('x轴');%x轴坐标
ylabel('y轴');%y轴坐标
zlabel('z轴');%z轴坐标

基于Robotics Toolbox的机械臂工作空间求解相关推荐

  1. matlab机械臂dh仿真,基于MATLAB Robotics Tools的机械臂仿真

    基于MATLAB Robotics Tools的机械臂仿真 [摘要]在MATLAB环境下,对puma560机器人进行运动学仿真研究,利用Robotics Toolbox工具箱编制了简单的程序语句,建立 ...

  2. matlab机械臂工作空间代码_轻型协作机械臂运动学及工作空间分析

    0 引言 OUR机械臂有别于传统工业机械臂,其特点是体积小.重量轻.有很快的运动速度和较大的活动范围,机械臂的最大运动速度可以达到180°/s,能够处理更复杂.更危险的工作,具有极强的灵活度.精确度和 ...

  3. 基于机器视觉的多机械臂煤矸石分拣机器人系统研究

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 基于机器视觉的多机械臂煤矸石分拣机器人系统研究 王鹏1,2,曹现刚 ...

  4. matlab机械臂工作空间代码_[连载 5]Vrep--Matlab Robitic Toolbox--PUMA560机械臂控制

    [连载 0]Vrep入门介绍 [连载 1]Vrep小车建模--前进和转向 [连载 2]Vrep小车建模--内嵌脚本 [连载 3]Vrep小车建模--matlab控制 [连载 4]Vrep导入三维模型- ...

  5. 机器人抓矸石_基于机器视觉的多机械臂煤矸石分拣机器人系统研究

    工矿自动化 Industryand MineAutomation Vol. 45 No. 9 Sep.2019 第 45 卷第 9 期 2019 年 9 月 文章编号 : 1671 - 251X(20 ...

  6. 【机器人】基于指数积的机械臂运动学标定

    基于局部POE的机器人运动学标定 导语:定位精度作为影响机器人性能的重要因素,需要对机器人进行标定来提高机器人的定位精度从而满足工业上的需要. Question: 什么是机器人标定?为什么机器人需要标 ...

  7. 02论文分享与分析——基于ROS的移动机械臂底层规划及运动仿真

    [1]钱伟. 基于ROS的移动操作机械臂底层规划及运动仿真[D].哈尔滨工业大学,2015. 0.摘要 钱伟学长的论文在我学习轨迹规划初期就开始阅读,在学习过程中,也对于很多疑惑的问题,找寻到了答案, ...

  8. 基于Arduino的PS2机械臂遥控小车(L298N)傻瓜教程

    基于Arduino的PS2机械臂遥控小车(L298N)傻瓜教程 1.材料 L298N.Arduino板.数据线.舵机(SG90).机械臂.亚克力板.电机.PS2.杜邦线.电池(7.4V).螺丝. 2. ...

  9. 【机器人】基于指数积的机械臂正运动学算法

    基于指数积的机械臂正运动学算法 1.前言 2.指数积公式建立过程 3.PoE实例 4.PoE与DH对比 1.前言 在学习了刚体运动的指数坐标表示和运动旋量后,我又对使用指数积法(PoE)对机械臂进行正 ...

最新文章

  1. session文件无法并发操作
  2. 裂痕第一至五季/以法之名Damages迅雷下载
  3. Android安全教程(2)---Fiddler简易使用教程之使用
  4. python控制台动画_Python真神奇,带你体验另类的“全自动编程”
  5. Replace-iOS
  6. 数据库高级知识——MySql锁机制
  7. C中的预编译宏定义-转
  8. 【C#】【Thread】BackgroundWorker的使用
  9. NAT综合实验(华为)
  10. 银联支付接口申请流程
  11. WebRTC视频码率控制(序言)
  12. 机器学习-朴素贝叶斯(高斯、多项式、伯努利)
  13. 配置NTP服务ntpd/ntp.conf
  14. Centos 上 mantis 安装
  15. [Oracle]-[recyclebin][索引]-回收站恢复的索引名称修改
  16. Java读取txt格式文件打印到控制台
  17. 样本量极少如何机器学习?
  18. 用RecyclerView实现动态添加本地图片
  19. 记录华为勇敢星实习的一次面经
  20. Arcgis 二次开发指导 热点分析实现

热门文章

  1. Type-infity Wasserstein Ball
  2. IT 猎头分享---找工作前你真得想清楚离职原因了吗?
  3. 知名IT企业待遇一览表
  4. 软件与哲学(2)——对不同世界的抽象
  5. 【Leetcode】最长递增子序列问题及应用
  6. (wake_lock)后台任务 - 保持设备唤醒状态
  7. 最受欢迎的Python开源框架有哪些?
  8. 作文指导百法·9.从阅读中积累素材
  9. java153-字符输出流
  10. 在C语言中怎样定义一个字符串并输入输出