六自由度机械臂研究(2)- 机械臂坐标系建立

六自由度机械臂研究(2)- 机械臂坐标系建立

1. 机械臂坐标系建立

机械臂的坐标系建立是未来解析推导运动学算法的基础, 也是机械臂入学者的第一个坑。 坑的原因是网上资料无数, 但是几乎没有任何一个建系教程是完全一样的。 更有甚者, 有好多博客还是有或多或少的错误,把原理与参数定义搞错者也是大有人在。 博主排坑无数后总结了亲测可行的建系方法, 有兴趣或者有需求的同学可以跟着博主一步一步为自己的机械臂进行的建系与推导。

下面博主开始为自己的六自由度机械臂建立坐标系, 楼主的机械臂如下图所示:
改装后的六自由度机械臂

首先, 博主建议先根据自己的机械臂在演草纸上画一个大概的草图, 这样方便建系以及检查。 下面是博主的草稿, 方便修改检查, 等机械臂坐标系确认无误后再画成果图。 博主草稿如下图所示:
草稿图
下面重点来了:

建立连杆坐标系的步骤

对于一个新机构, 按以下步骤对于每个轴建立坐标系:

  • 9
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
要绘制机械的二维工作区间,需要以下步骤: 1. 确定关节的转动范围和机械末端执行器的运动范围。这需要根据机械的结构和工作要求进行分析。 2. 定义机械的关节角度和末端执行器的位置,可以使用笛卡尔坐标系或极坐标系。 3. 使用MATLAB的plot函数绘制机械的各个部分。使用线段、圆弧等基本图形拟合机械结构,并设置颜色和线型。 4. 在MATLAB的plot绘图窗口中显示机械的运动轨迹。可以通过修改关节角度或末端执行器位置,实现机械的动态模拟。 以下是一个MATLAB绘制机械二维工作区间的示例代码: ```matlab % 机械的参数和工作范围 l1 = 0.1; % 关节1的长度 l2 = 0.15; % 关节2的长度 theta1_min = -pi/2; % 关节1的最小角度(弧度) theta1_max = pi/2; % 关节1的最大角度(弧度) theta2_min = -pi/2; % 关节2的最小角度(弧度) theta2_max = pi/2; % 关节2的最大角度(弧度) x_min = -0.2; % 末端执行器的x最小值 x_max = 0.2; % 末端执行器的x最大值 y_min = -0.2; % 末端执行器的y最小值 y_max = 0.2; % 末端执行器的y最大值 % 绘制机械的基本图形 fig = figure; hold on; axis equal; axis([x_min x_max y_min y_max]); plot([0 l1*cos(theta1_min)],[0 l1*sin(theta1_min)],'k','LineWidth',2); plot([l1*cos(theta1_min) l1*cos(theta1_min)+l2*cos(theta1_min+theta2_min)],... [l1*sin(theta1_min) l1*sin(theta1_min)+l2*sin(theta1_min+theta2_min)],'k','LineWidth',2); plot([0 l1*cos(theta1_max)],[0 l1*sin(theta1_max)],'k','LineWidth',2); plot([l1*cos(theta1_max) l1*cos(theta1_max)+l2*cos(theta1_max+theta2_min)],... [l1*sin(theta1_max) l1*sin(theta1_max)+l2*sin(theta1_max+theta2_min)],'k','LineWidth',2); plot([0 l1*cos(theta1_min)],[0 l1*sin(theta1_min)],'r--'); plot([l1*cos(theta1_min) l1*cos(theta1_min)+l2*cos(theta1_min+theta2_max)],... [l1*sin(theta1_min) l1*sin(theta1_min)+l2*sin(theta1_min+theta2_max)],'r--'); plot([0 l1*cos(theta1_max)],[0 l1*sin(theta1_max)],'b--'); plot([l1*cos(theta1_max) l1*cos(theta1_max)+l2*cos(theta1_max+theta2_max)],... [l1*sin(theta1_max) l1*sin(theta1_max)+l2*sin(theta1_max+theta2_max)],'b--'); % 绘制机械末端执行器的运动轨迹 for x = x_min:0.01:x_max for y = y_min:0.01:y_max [theta1,theta2] = inverse_kinematics(x,y,l1,l2); if ~isnan(theta1) && ~isnan(theta2) plot(x,y,'k.'); end end end % 逆运动学求解函数 function [theta1,theta2] = inverse_kinematics(x,y,l1,l2) d = x^2 + y^2; if d > (l1+l2)^2 || d < (l1-l2)^2 theta1 = NaN; theta2 = NaN; else alpha = atan2(y,x); phi = acos((d+l1^2-l2^2)/(2*l1*sqrt(d))); theta1 = alpha + phi; theta2 = acos((l1^2+d-l2^2)/(2*l1*sqrt(d))) - pi; end end ``` 该代码将绘制一个带有机械二维工作区间的图形窗口。红色虚线代表关节1的转动范围,蓝色虚线代表关节2的转动范围。黑色点表示机械末端执行器的运动轨迹。可以通过查看图形窗口,了解机械在二维平面上的运动能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值