内容发布更新时间 : 2025/1/8 14:35:53星期一 下面是文章的全部内容请认真阅读。
成 绩
智能控制实验
实验报告
院(系)名称 专学学
业名称 生生
学姓
号 名
2016年11月28日
实验一机械臂运动控制及基本操作
一、 实验准备
1、 描述机械臂坐标空间的定义
机械臂通常有两种坐标空间:关节坐标空间和直角坐标空间。
关节坐标空间定义:机械臂的空间坐标直接由各个关节的坐标来确定,所有关节变量构成一个关节矢量。所有关节矢量构成的空间称为关节坐标空间。因此关节坐标空间运动运动就是直接操作各个关节的运动来完成机械臂的运动。下图是关节坐标空间的定义。
图1 机械臂关节坐标空间
直角坐标空间定义:机械臂末端的位置和方位通常是在直角坐标空间中描述。当进行机械臂操作任务时,通常采用直角坐标空间更为直观和方便。下图是直角坐标空间的定义。
图2 机械臂直角坐标空间
2、 机械臂各轴的最大运动范围、最大运动速度、最大展开半径都是多少?并把最大运动范围各量换算为对应的脉冲数(写出转换公式)。 以上参数查看技术手册可得: 最大运动范围: 关节 1 0 -200 度 关节 2 0 -100 度 关节 3 0 -100 mm 关节 4 0 -360 度
最大运动速度: 关节 1 1.57 rad/s 关节 2 3.14 rad/s 关节 3 10 mm /s 关节 43.14 rad/s 最大展开半径:396mm
将最大运动范围各量换算为对应的脉冲数如下:
增量式编码器为2500P/r,即电机每转一圈为2500个脉冲,GT400-SG运动控制卡有4倍频,故下发10000个脉冲电机转动一周。
脉冲数=关节转动角度*(编码器每转对应脉冲**4倍频)*减速器倍率/360 脉冲数=关节移动距离*(编码器每转对应脉冲**4倍频)*减速器倍率/导程 1关节的谐波齿轮减速器比率为100:1;关节2的谐波齿轮减速器比率为99:1,关节3减速比为1.1175,关节4减速比为800。
关节1、关节2、关节4分别转动200、100、360度所对应的脉冲数为: Pulse1=200*10000*100/360=555555.56 Pulse2=100*10000*99/360=275000 Pulse4=360*10000*800/360=8000000 关节3下移100mm对应的脉冲数为: Pulse3=100* 10000* 1.1175/2. 5=447000
3、 为什么要进行机器人回零?如何通过机械臂标定框进行回零校正?
对进行机械臂进行回零的原因:因为机器人测量关节的编码器是增量式而不是绝对式的,因此在每次调用程序时首先必须进行机器人回零。为了在关节坐标空间与直角坐标空间进行转。
通过机械臂标定框进行回零校正的操作:
①机器人初始回零,假设回零角度分别为α1,α2,定义此时的关节1、2的关节坐标为(0°,0°);
②动作关节1、关节2,使其末端位于工作基础平台的机器人标定方框(200,200)
,,(?,?)12处,此时的关节坐标理论上应为(0°,90°),,记录实际的关节坐标为; ,,③修正回零角度分别为:?1??1?0?,?2??2?90?;
④重新进行机器人回零,定义此时的关节1、2的关节坐标为(0°,0°).
4、为什么要进行视场标定?
为了标定视场位置与机械臂坐标的对应关系。
二、实验结果、数据
1、进行多次机器人标定,记录关节1、关节2回零角度,判断机器人控制效果。填写下表:
标定次数 1 2 3 关节1回零角度 10.88388 8.70461 11.46472 关节2回零角度 9.928738 12.48513 10.34421 控制效果 关节1、2基本在在同一轴线 轴2略偏离X轴 关节1、2基本在在同一轴线 关节1回零角度对应的脉冲数=30233 关节2回零角度对应的脉冲数=27304
2、记录视场标定结果
坐标轴 X Y 工作台原点 -62.5 342.5 工作台定点 52.5 267.5 视场原点 227 173 视场定点 447 307 Kx =0.568182 ;Ky= 0.559701
3、运动控制卡编程及回零操作
运动控制卡编程的说明
GT-400是用户可编程运动控制器,提供了一套四轴运动控制器及用C和C++语言编写的用户接口函数库。
控制轴GT-400运动控制器具有四个步进电机控制通道,可同时控制四个步进电机进行运动,这四个控制通道简称为四个控制轴。
命令返回值
命令与库函数运动控制器是按照主机发送的运动控制命令工作的。运动控制器配套有C 语言函数库(DOS 环境)和动态连接库(Windows 环境)。用户通过在主机编制程序调用相应的库函数,也就是向运动控制器发出运动控制命令(简称命令)。
对于用户通过主机发送的命令,运动控制器在检查、校验后,会给出一个反馈。这个反馈就是命令(库函数)的返回值。
每一条库函数指令都会返回一个值,便于用户进行调试。 如:rtn=GT_Open( );