目录
1.3 配置通信 (ProfiNet 示例,ABB RAPID)
第一章 代码+解释
1.1 基础代码
MODULE MainModule
VAR robtarget pos1 := [[1000,0,500],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
VAR robtarget pos2 := [[800,200,600],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
VAR robtarget pos3 := [[600,400,700],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PROC Main()
; 移动到初始位置
MoveJ pos1, v1000, z50, tool0;
; 以直线移动到第二个位置
MoveL pos2, v500, z10, tool0;
; 以直线移动到第三个位置
MoveL pos3, v500, z10, tool0;
ENDPROC
ENDMODULE
注释
MODULE MainModule
: 定义一个主模块MainModule
。VAR robtarget pos1 := ...
: 声明并初始化位置变量pos1
,指定位置和姿态。VAR robtarget pos2 := ...
: 声明并初始化位置变量pos2
,指定位置和姿态。VAR robtarget pos3 := ...
: 声明并初始化位置变量pos3
,指定位置和姿态。PROC Main()
: 定义主过程Main
。MoveJ pos1, v1000, z50, tool0;
: 以关节运动模式(MoveJ)移动到pos1
,速度为1000,区间z为50,工具为tool0。MoveL pos2, v500, z10, tool0;
: 以直线运动模式(MoveL)移动到pos2
,速度为500,区间z为10,工具为tool0。MoveL pos3, v500, z10, tool0;
: 以直线运动模式(MoveL)移动到pos3
,速度为500,区间z为10,工具为tool0。ENDPROC
: 结束过程。ENDMODULE
: 结束模块。
1.1.2 关于 VAR robtarget pos
VAR
:这是RAPID语言中的关键字,用于声明变量。robtarget
:这是变量的类型。在RAPID中,robtarget
类型用于描述机器人目标位置和姿态,包括笛卡尔坐标和四元数。pos1
:这是变量的名称,表示这是第一个位置变量。
1. :=
- 赋值操作符,用于初始化变量
pos1
的值。
2. [[1000,0,500],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]]
- 这是一个数组,表示
robtarget
类型变量的初始值。robtarget
类型由四部分组成,分别是位置、姿态(四元数)、配置数据和外部轴。
. [[1000,0,500]]
- 位置部分,这是一个3D坐标数组,表示机器人末端执行器在空间中的位置。
1000
:X轴坐标,表示位置在X轴方向上的距离,单位是毫米。0
:Y轴坐标,表示位置在Y轴方向上的距离,单位是毫米。500
:Z轴坐标,表示位置在Z轴方向上的距离,单位是毫米。
3. [1,0,0,0]
- 姿态部分,这是一个四元数数组,表示机器人末端执行器的姿态。
1
:四元数的实部,表示姿态的角度。0
、0
、0
:四元数的虚部,表示姿态的方向。
四元数 [1,0,0,0]
对应的是没有旋转的姿态(即与参考坐标系对齐)。
4. [0,0,0,0]
- 配置数据部分,这是一组四个整数,用于描述机器人运动时的特定配置(如关节角度、翻转状态等)。
- 通常配置数据与机器人型号有关,这里所有值为
0
,表示默认配置。
- 通常配置数据与机器人型号有关,这里所有值为
5. [9E9,9E9,9E9,9E9,9E9,9E9]
- 外部轴部分,这是一个包含六个值的数组,表示机器人使用的外部轴的位置。
9E9
:表示一个极大值(通常是9999999999
),用于指示未定义或未使用的外部轴位置。
1.1.3 关于四元数
四元数是一种用于表示三维空间中旋转的数学工具。它们比欧拉角或旋转矩阵更稳定,不容易出现万向节锁(Gimbal lock)问题。一个四元数通常表示为 (𝑤,𝑥,𝑦,𝑧)(w,x,y,z),其中 𝑤w 是实部,𝑥,𝑦,𝑧x,y,z 是虚部。
四元数 (1,0,0,0)(1,0,0,0) 表示没有旋转。这是因为它等价于单位旋转矩阵,或旋转角度为0度的旋转。
一些常见的四元数姿态示例
1. 没有旋转
- 四元数: (1,0,0,0)
- 描述: 机器人末端执行器没有旋转,保持与参考坐标系对齐。
2. 绕X轴旋转90度
- 四元数: (2/2,2/2,0,0) 或 (0.7071,0.7071,0,0)
- 描述: 机器人末端执行器绕X轴顺时针旋转90度。
3. 绕Y轴旋转90度
- 四元数: (2/2,0,2/2,0)或 (0.7071,0,0.7071,0)
- 描述: 机器人末端执行器绕Y轴顺时针旋转90度。
4. 绕Z轴旋转90度
- 四元数: (2/2,0,0,2/2) 或 (0.7071,0,0,0.7071)
- 描述: 机器人末端执行器绕Z轴顺时针旋转90度。
5. 绕X轴旋转180度
- 四元数: (0,1,0,0)
- 描述: 机器人末端执行器绕X轴旋转180度。
6. 绕Y轴旋转180度
- 四元数: (0,0,1,0)
- 描述: 机器人末端执行器绕Y轴旋转180度。
7. 绕Z轴旋转180度
- 四元数: (0,0,0,1)
- 描述: 机器人末端执行器绕Z轴旋转180度。
计算四元数的基本公式
一个四元数 (𝑤,𝑥,𝑦,𝑧)可以通过旋转角度 𝜃和旋转轴向量 (𝑢𝑥,𝑢𝑦,𝑢𝑧)来计算:
示例计算
1.2 机器人初始化程序
用ABB RAPID编程语言编写的一个简单的机器人初始化程序。它的主要功能包括工具和用户坐标系的初始化,以及机器人上电和校零点操作。我们将逐行详细解释这个程序:
程序模块头部
MODULE InitRobot
: 定义一个名为InitRobot
的模块。模块是RAPID程序的基本构建单元,包含了多个过程、函数和数据。
主过程定义
PROC Main()
: 定义一个名为Main
的过程,作为程序的主入口点。
工具坐标系初始化
! 工具坐标系初始化
: 注释,说明接下来是工具坐标系的初始化部分。VAR tooldata tool0 := ...
: 定义一个变量tool0
,类型为tooldata
,并进行初始化。[TRUE, [[0,0,250],[1,0,0,0]], [1,1,1,[0,0,0,0]], [1, [0,0,0], [0,0,0,0]]]
: 初始化值的详细解释:TRUE
: 指示工具数据有效。[[0,0,250],[1,0,0,0]]
: 工具的TCP(Tool Center Point)位置和姿态。[[0,0,250]]
: TCP的坐标位置,表示工具在Z轴上延伸250毫米。[[1,0,0,0]]
: 四元数,表示工具的姿态(无旋转)。
[1,