ABB机器人---基础编程

news2024/11/18 17:32:28

目录

第一章 代码+解释

1.1 基础代码

1.1.2 关于 VAR robtarget pos

1.1.3 关于四元数

1.2 机器人初始化程序

1.3 配置通信 (ProfiNet 示例,ABB RAPID)

1.4 设置干涉区 (ABB RAPID)

1.5 示教轨迹和自动过程 (ABB RAPID)

1.6 配置抓手并进行抓取操作 (ABB RAPID)

1.7 上下料操作 (ABB RAPID)

1.8 弧焊机器人程序 (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

注释

  1. MODULE MainModule: 定义一个主模块 MainModule
  2. VAR robtarget pos1 := ...: 声明并初始化位置变量 pos1,指定位置和姿态。
  3. VAR robtarget pos2 := ...: 声明并初始化位置变量 pos2,指定位置和姿态。
  4. VAR robtarget pos3 := ...: 声明并初始化位置变量 pos3,指定位置和姿态。
  5. PROC Main(): 定义主过程 Main
  6. MoveJ pos1, v1000, z50, tool0;: 以关节运动模式(MoveJ)移动到 pos1,速度为1000,区间z为50,工具为tool0。
  7. MoveL pos2, v500, z10, tool0;: 以直线运动模式(MoveL)移动到 pos2,速度为500,区间z为10,工具为tool0。
  8. MoveL pos3, v500, z10, tool0;: 以直线运动模式(MoveL)移动到 pos3,速度为500,区间z为10,工具为tool0。
  9. ENDPROC: 结束过程。
  10. 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:四元数的实部,表示姿态的角度。
    • 000:四元数的虚部,表示姿态的方向。

四元数 [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)(1,0,0,0)
  • 描述: 机器人末端执行器没有旋转,保持与参考坐标系对齐。

2. 绕X轴旋转90度

  • 四元数: (2/2,2/2,0,0)(2​/2,2​/2,0,0) 或 (0.7071,0.7071,0,0)(0.7071,0.7071,0,0)
  • 描述: 机器人末端执行器绕X轴顺时针旋转90度。

3. 绕Y轴旋转90度

  • 四元数: (2/2,0,2/2,0)(2​/2,0,2​/2,0) 或 (0.7071,0,0.7071,0)(0.7071,0,0.7071,0)
  • 描述: 机器人末端执行器绕Y轴顺时针旋转90度。

4. 绕Z轴旋转90度

  • 四元数: (2/2,0,0,2/2)(2​/2,0,0,2​/2) 或 (0.7071,0,0,0.7071)(0.7071,0,0,0.7071)
  • 描述: 机器人末端执行器绕Z轴顺时针旋转90度。

5. 绕X轴旋转180度

  • 四元数: (0,1,0,0)(0,1,0,0)
  • 描述: 机器人末端执行器绕X轴旋转180度。

6. 绕Y轴旋转180度

  • 四元数: (0,0,1,0)(0,0,1,0)
  • 描述: 机器人末端执行器绕Y轴旋转180度。

7. 绕Z轴旋转180度

  • 四元数: (0,0,0,1)(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,1,1,[0,0,0,0]]: 工具的负载信息,包含重量、质心位置和惯性矩。
      • [1, [0,0,0], [0,0,0,0]]: 工具的未知负载和惯性数据,通常为默认值。
  • PERS tooldata tool1 := ...: 定义一个持久性变量 tool1,其类型和初始化值与 tool0 相同。持久性变量在控制器重启后仍然保留其值。

用户坐标系初始化

  • ! 用户坐标系初始化: 注释,说明接下来是用户坐标系的初始化部分。
  • VAR wobjdata wobj0 := ...: 定义一个变量 wobj0,类型为 wobjdata,并进行初始化。
    • [TRUE, TRUE, "", [[1000,0,0],[1,0,0,0]]]: 初始化值的详细解释:
      • TRUE: 指示工件数据有效。
      • TRUE: 指示工件坐标系相对于工件的坐标系(而不是机器人的基座)。
      • "": 工件名称为空。
      • [[1000,0,0],[1,0,0,0]]: 工件的基座位置和姿态。
        • [[1000,0,0]]: 工件坐标系在世界坐标系中的位置,X轴上偏移1000毫米。
        • [[1,0,0,0]]: 四元数,表示工件坐标系的姿态(无旋转)。
  • PERS wobjdata wobj1 := ...: 定义一个持久性变量 wobj1,其类型和初始化值与 wobj0 相同。

设置工具和用户坐标系

  • ! 设置工具和用户坐标系: 注释,说明接下来将设置工具和用户坐标系。
  • ConfL\Off;: 关闭线性运动配置检查。
  • ConfJ\Off;: 关闭关节运动配置检查。
  • Tool0 := tool0;: 将 tool0 赋值给 Tool0,设置当前使用的工具。
  • Wobj0 := wobj0;: 将 wobj0 赋值给 Wobj0,设置当前使用的工件坐标系。

机器人上电和校零点

  • ! 机器人上电和校零点: 注释,说明接下来是机器人上电和校零点操作。
  • MoveJ [[0,0,0,0,0,0]], v1000, fine, tool0\WObj:=wobj0;: 使用关节运动(MoveJ)将机器人移动到所有关节角度为零的位置。
    • [[0,0,0,0,0,0]]: 关节角度数组,所有关节角度为零。
    • v1000: 运动速度,单位是度/秒。
    • fine: 精细停止,表示在目标位置完全停止。
    • tool0\WObj:=wobj0: 使用 tool0 作为工具,wobj0 作为工件坐标系。
    • 这个指令用于上电和校零点。

结束主过程和模块

  • ENDPROC: 结束 Main 过程的定义。
  • ENDMODULE: 结束 InitRobot 模块的定义。
MODULE InitRobot

  PROC Main()

    ! 工具坐标系初始化
    VAR tooldata tool0 := [TRUE, [[0,0,250],[1,0,0,0]], [1,1,1,[0,0,0,0]], [1, [0,0,0], [0,0,0,0]]];
    PERS tooldata tool1 := [TRUE, [[0,0,250],[1,0,0,0]], [1,1,1,[0,0,0,0]], [1, [0,0,0], [0,0,0,0]]];

    ! 用户坐标系初始化
    VAR wobjdata wobj0 := [TRUE, TRUE, "", [[1000,0,0],[1,0,0,0]]];
    PERS wobjdata wobj1 := [TRUE, TRUE, "", [[1000,0,0],[1,0,0,0]]];

    ! 设置工具和用户坐标系
    ConfL\Off;
    ConfJ\Off;
    Tool0 := tool0;
    Wobj0 := wobj0;

    ! 机器人上电和校零点
    MoveJ [[0,0,0,0,0,0]], v1000, fine, tool0\WObj:=wobj0; ! 上电
    MoveJ [[0,0,0,0,0,0]], v1000, fine, tool0\WObj:=wobj0; ! 校零点

  ENDPROC
ENDMODULE

1.3 配置通信 (ProfiNet 示例,ABB RAPID)

MODULE ProfiNetConfig
  PERS signaldi DI_ProfiNet := [1];
  PERS signaldo DO_ProfiNet := [1];

  PROC Main()
    ! 初始化ProfiNet通信
    SetDO DO_ProfiNet, 1;
    WaitTime 1;
    SetDO DO_ProfiNet, 0;
    WaitTime 1;

    ! 发送数据到机器人
    IF DI_ProfiNet = 1 THEN
      SetDO DO_ProfiNet, 1;
    ELSE
      SetDO DO_ProfiNet, 0;
    ENDIF
  ENDPROC
ENDMODULE

1.4 设置干涉区 (ABB RAPID)

​
MODULE InterferenceZone
  PROC Main()
    ! 设置空间干涉区
    VAR robtarget zoneStart := [500, 500, 500, 0, 0, 0];
    VAR robtarget zoneEnd := [1000, 1000, 1000, 0, 0, 0];

    ConfL\Off;
    MoveJ zoneStart, v1000, fine, tool0;
    MoveL zoneEnd, v1000, fine, tool0;
  ENDPROC
ENDMODULE

​

1.5 示教轨迹和自动过程 (ABB RAPID)

​
MODULE TeachAndAuto
  PERS robtarget p1 := [1000, 0, 500, 0, 0, 0];
  PERS robtarget p2 := [1050, 0, 500, 0, 0, 0];
  PERS robtarget p3 := [1100, 0, 500, 0, 0, 0];

  PROC Main()
    MoveJ p1, v1000, fine, tool0;
    MoveL p2, v500, fine, tool0;
    MoveL p3, v500, fine, tool0;
    MoveL p1, v500, fine, tool0;
  ENDPROC
ENDMODULE

1.6 配置抓手并进行抓取操作 (ABB RAPID)

MODULE GripperConfig
  VAR bool gripperClosed := FALSE;

  PROC Main()
    VAR robtarget pGrab := [1000, 0, 500, 0, 0, 0];
    VAR robtarget pDrop := [1050, 0, 500, 0, 0, 0];

    ! 初始化抓手
    SetGripper(FALSE);
    MoveJ pGrab, v1000, fine, tool0;
    SetGripper(TRUE);
    MoveJ pDrop, v1000, fine, tool0;
    SetGripper(FALSE);
    MoveJ pGrab, v1000, fine, tool0;
  ENDPROC

  PROC SetGripper(bool close)
    IF close THEN
      SetDO doGripper, 1;
      gripperClosed := TRUE;
    ELSE
      SetDO doGripper, 0;
      gripperClosed := FALSE;
    ENDIF
  ENDPROC
ENDMODULE

1.7 上下料操作 (ABB RAPID)

MODULE LoadUnload
  PROC Main()
    VAR robtarget pLoad := [1000, 0, 500, 0, 0, 0];
    VAR robtarget pUnload := [1050, 0, 500, 0, 0, 0];

    ! 移动到加载位置
    MoveJ pLoad, v1000, fine, tool0;
    ! 模拟加载操作
    WaitTime 1;
    ! 移动到卸载位置
    MoveJ pUnload, v1000, fine, tool0;
    ! 模拟卸载操作
    WaitTime 1;
    ! 返回起始位置
    MoveJ pLoad, v1000, fine, tool0;
  ENDPROC
ENDMODULE

1.8 弧焊机器人程序 (ABB RAPID)

MODULE ArcWelding
  VAR welddata wdata:=[20, 0.8, 5, 1.5, 0.1];

  PROC Main()
    VAR robtarget pStart := [1000, 0, 500, 0, 0, 0];
    VAR robtarget pWeld1 := [1050, 0, 500, 0, 0, 0];
    VAR robtarget pWeld2 := [1100, 0, 500, 0, 0, 0];

    MoveJ pStart, v1000, fine, tool0;
    ArcLStart wdata, pWeld1, v500, fine, tool0;
    ArcLEnd pWeld2, v500, fine, tool0;
    MoveJ pStart, v1000, fine, tool0;
  ENDPROC
ENDMODULE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1692432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux: network: TCP: zero window size/window full 示例

最近遇到一个问题,当前机器的CPU使用率非常高,然后导致其中一个程序处理socket的数据过慢,然后出现下面的zero的示例。 下面是在接收buff用光的时候,发出的 TCP zeroWindows的消息 这种问题就是内存,CPU,网速之间的性能取舍。具体解决的话,需要看具体的需要是什么样的?…

他用AI,抄袭了我的AI作品

《大话西游》里面有一句经典台词:每个人都有一个妈,但是“你妈就一定是你妈吗?” 用AI创作的艺术作品,也走进类似的困境:如何证明你用AI生成的作品,就是你的作品? 近日,腾讯科技独…

三星固态硬盘870evo与qvo的区别

三星固态硬盘870evo与qvo的区别 三星固态硬盘870 EVO和QVO的区别主要有以下几点: 1闪存颗粒不同:三星固态QVO采用的是QLLC闪存颗粒,而三星固态870 EVO则是TLC闪存颗粒。 2传输速度不同:三星固态QVO传输速度比较低,而三…

电路仿真软件:点亮教学新篇章,十大便利助力高效学习

在信息化时代的浪潮中,电路仿真软件以其独特的优势,逐渐在教学领域崭露头角。它不仅能够帮助学生更好地理解电路知识,还能提升教师的教学效果。接下来,让我们一起探讨电路仿真软件对教学带来的十大便利。 一、直观展示电路原理 电…

Unity | 框架MVC

目录 一、MVC介绍 二、搭建UI界面 三、代码实现 1.Model层 2.View层 3.Controller层 四、MVC框架测试 五、知识补充 一、MVC介绍 model:数据层。界面展示的数据(需要进行初始化、更新、保存、事件通知等操作),单例模式&am…

【全开源】沃德商协会管理系统源码(FastAdmin+ThinkPHP+Uniapp)

一款基于FastAdminThinkPHPUniapp开发的商协会系统,新一代数字化商协会运营管理系统,以“智慧化会员体系、智敏化内容运营、智能化活动构建”三大板块为基点,实施功能全场景覆盖,一站式解决商协会需求壁垒,有效快速建立…

公司废弃的2014年群晖 DS215J 被我打包回家了,试玩一下

文章目录 简介安装查看存储、cpu、内存等信息DMS 学习video station 简介 群晖DS215J https://www.datastoreworks.com/DS215j.asp 下载:chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/https://global.download.synology.com/download/Document/Hardware/…

ATmega328P加硬件看门狗MAX824L看门狗

void Reversewdt(){ //硬件喂狗,11PIN接MAX824L芯片WDIif (digitalRead(11) HIGH) {digitalWrite(11, LOW); //低电平} else {digitalWrite(11, HIGH); //高电平 }loop增加喂狗调用 void loop() { …… Reversewdt();//喂狗 }

Superset,基于浏览器的开源BI工具

BI工具是数据分析的得力武器,目前市场上有很多BI软件,众所周知的有Tableau、PowerBI、Qlikview、帆软等,其中大部分是收费软件或者部分功能收费。这些工具一通百通,用好一个就够了,重要的是分析思维。 我一直用的Tabl…

vue3中element-plus下拉菜单与图标的使用

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

FANUC机器人点位IO监控指令TC_ONLINE

一、系统变量中打开该指令 在示教器系统变量页面中找到其中的MIX_LOGIC变量,点击enter进入变量设置页面 找到其中的USE_TCOL变量将其中的值改为true 即可在IO显示页面中找到TC_ONLINE的监控选项 在显示页面中也可找到其中的监控条件 二、在点位指令中添加点逻辑指令…

如何从http免费升级到https

使用https协议开头是为了在用户访问网站时提供更安全的网络环境。相比http,使用https有数据加密、身份验证、保护隐私、搜索引擎优化等优势。一般获取https证书,则需要支付费用给证书颁发机构(CA)。还有一些免费的证书证书颁发机构…

【NLP】人机对话

概念 机器翻译就是用计算机把一种语言翻译成另外一种语言的技术 机器翻译的产生与发展 17 世纪,笛卡尔与莱布尼茨试图用统一的数字代码来编写词典 1930 机器脑 1933 苏联发明家特洛阳斯基用机械方法将一种语言翻译为另一种语言 1946 ENIAC 诞生 1949 机器翻译问题…

SpringBoot和Apache Doris实现实时广告推荐系统

本专题旨在向读者深度解读Apache Doris技术,探讨其与SpringBoot框架结合在各类实际应用场景中的角色与作用。本专题包括十篇文章,每篇文章都概述了一个特定应用领域,如大数据分析、实时报告系统、电商数据分析等,并通过对需求的解析、解决方案的设计、实际应用示例的展示以…

CAN笔记第二篇,车载测试继续学起来!

在CAN协议中,“帧”是一个包含完整信息的独立单元,它具有特定的格式和结构,以确保数据在CAN总线上的可靠传输。这里的“帧”字可以理解为: 完整性:一个帧包含了所有必要的信息,从起始到结束,都遵…

3D 生成重建012-Magic123早期使用不同SDS相减的探索

3D 生成重建012-Magic123早期使用不同SDS相减的探索 文章目录 0论文工作1论文方法2效果 0论文工作 Magic123提出了一种两阶段粗到细的方法,用于使用2D和3D先验从野外未曝光图像生成高质量的纹理3D网格。在第一阶段,优化一个神经辐射场,以产…

DQL(数据查询)

目录 1. DQL概念 2. DQL - 编写顺序 3. 基础查询 3.1 查询多个字段 3.2 字段设置别名 3.3 去除重复记录 3.4 案例 4. 条件查询 4.1 语法 4.2 条件 4.3 案例: 5. 聚合函数 5.1 常见的聚合函数: 5.2 语法 5.3 案例: 6. 分组查…

微信小程序抓取数据包(Proxifier联动burpsuite)

1、打开bp,确保开启127.0.0.1:8080监听地址。 2、点击setting--proxy,点击impor CA certificate,生成bp的证书。 保存到桌面为1.cer,文件后缀为cer就OK了,前缀任意 3、安装证书,双击打开刚刚生成…

FPGA 第4章 摄像头Bayer转rgb

参考文献 彩色MT9V034摄像头 Bayer转rgb FPGA实现 https://www.cnblogs.com/hqz68/p/10413896.html 文章目录 前言Bayer转rgb算法解析 总结 前言 Bayer格式是相机内部的原始数据, 一般后缀名为.raw。 对于彩色图像,一般是三原色数据,rgb格式。但是摄像头一个像素…