【Unity】IRB 120外部引导运动(EGM)

RobotStudio 的 EGM (Externally Guided Motion) 是一种让机器人沿着外部系统生成的路径运动的功能,它可以实现高速、低延迟、高灵敏度的机器人控制¹。要使用 RobotStudio 的 EGM,你需要以下几个步骤:

  • 在 RobotStudio 中,创建一个虚拟控制器,并配置其 EGM 系统参数,如通信网络设置,UDP 设备设置,EGM 选项设置等²⁴。

  • 在 RobotStudio 中,编写 RAPID 程序,使用 EGM 指令,如 EGMActPose, EGMRunPose, EGMStreamStart 等,来启动、停止、监控 EGM 运动¹²。

  • 在外部系统中,使用 UDP 协议,与机器人控制器进行双向通信,发送位置数据给机器人,接收机器人的反馈数据¹²³。

  • 在 RobotStudio 中,运行 RAPID 程序,观察机器人的 EGM 运动效果,调整参数或代码,直到满足要求²⁴。

更多关于 RobotStudio 的 EGM 的信息,你可以参考以下链接:

  • 【ABB】上位机实时控制机器人运动之EGM - 沐夏aaron - 博客园

  • 关于ABB EGM( Externally Guided Motion )位置接口的使用 - 知乎

  • 机器人用EGM驱动运动很慢,谁知道怎么把速度调整到最大?【abb机器人吧】_百度贴吧

  • Setting Up Virtual Controller in Robot Studio For EGM #105 - GitHub


(1) 关于ABB EGM( Externally Guided Motion )位置接口的使用 - 知乎. https://zhuanlan.zhihu.com/p/82345921.
(2) 【ABB】上位机实时控制机器人运动之EGM - 沐夏aaron - 博客园. https://www.cnblogs.com/muxia579/articles/13228611.html.
(3) Setting Up Virtual Controller in Robot Studio For EGM #105 - GitHub. https://github.com/ros-industrial/abb_libegm/issues/105.
(4) 机器人用EGM驱动运动很慢,谁知道怎么把速度调整到最大?【abb机器人吧】_百度贴吧. https://tieba.baidu.com/p/5887162183.
(5) 【ABB】上位机实时控制机器人运动之EGM - 沐夏aaron - 博客园. https://www.cnblogs.com/muxia579/articles/13228611.html.
(6) 关于ABB EGM( Externally Guided Motion )位置接口的使用 - 知乎. https://zhuanlan.zhihu.com/p/82345921.
(7) 机器人用EGM驱动运动很慢,谁知道怎么把速度调整到最大?【abb机器人吧】_百度贴吧. https://tieba.baidu.com/p/5887162183.
(8) Setting Up Virtual Controller in Robot Studio For EGM #105 - GitHub. https://github.com/ros-industrial/abb_libegm/issues/105.

Unity脚本解析

一、UI界面

用于管理各种UI元素以及它们与机器人控制逻辑的互动。

1.1 输入和显示ABB机器人的IP地址

1.2 通过颜色变化(红色断开,绿色连接)向用户显示机器人的连接状态。

1.3 展示机器人的各个关节(J1至J6)的当前方向。

1.4 以文本形式显示当前的连接状态(连接/断开)

1.5 允许用户切换机器人末端执行器视点的可视性

1.6 下拉菜单,用于选择不同的末端执行器配置

该脚本在Unity的生命周期中的几个不同点执行操作:

  • 在 Start() 方法中,它初始化了连接信息图像、文本和关节方向文本的默认状态,设置了机器人IP地址文本框的默认值,配置了末端执行器的可视性和配置。

  • 在 FixedUpdate() 方法中,它实时更新了UI元素的状态,例如机器人关节方向的文本和连接状态指示器。

  • OnApplicationQuit() 方法确保在应用程序退出时,正确地清理脚本实例。

连接和断开按钮的点击操作,用于触发机器人的连接或断开状态变量。

整体上,UI界面 类作为机器人控制系统的UI接口,使操作者能够通过图形用户界面与机器人进行交互,如输入IP地址、查看连接状态和控制末端执行器的可视性,从而增加了系统的易用性和友好性。

二、 机器人控制脚本

用于ABB机器人外部引导动作(Externally Guided Motion, EGM)控制的C#程序

  1. 全局主控制 静态类:该类包含用于控制和监视EGM连接状态的静态变量。这些变量包括连接和断开状态的标志、是否真正已连接或已断开、关节的目标方向、到目标的预计时间以及每个关节是否处于预定位置。

  2. EGM控制类 静态类:该类包含与ABB机器人EGM通信相关的变量,如IP地址和端口号、关节方向的读取和设置、代表线程存活状态的布尔变量和准备状态。

  3. 机器人控制 主类:这是基于MonoBehaviour的Unity类,用于控制机器人的运动。它包含启动(Start)和每帧更新(FixedUpdate)的逻辑。它还负责处理机器人目标点的初始化和遍历,以及在应用退出时关闭通信资源。

  4. EGM控制 类:本类封装了EGM通信的所有细节,如创建UDP服务器、发送和接收数据、处理线程开启和关闭等。它通过一个私有的线程(sensor_thread)周期性地从机器人接收数据,解析接收到的数据进行机器人关节的读取,并向机器人发送修正后的传感器信息。

  5. Egm_Control_Thread 方法:此方法作为一个后台线程运行,主要功能是监听并处理从ABB机器人控制器接收到的UDP数据包。该方法解析数据包,通过egm_sensor构造并发送响应的EGM传感器数据。

  6. StartStopDestroy 方法:这些方法分别用于启动、停止和销毁EGM通信的线程和UDP客户端。

三、关节目标控制脚本

根据目标关节位置控制场景中目标机械臂的关节位置

四、关节平滑运动控制

平滑地控制机器人某个关节从初始方向移动到目标方向,实现关节方向的平滑过渡,同时在每个更新周期也检查关节是否已达到目标位置。如果关节位置与目标位置的误差小于阈值,则认为关节已经在位。

Google.ProtocolBuffers.2.4.1.555 是一个用于序列化结构化数据的框架,它可以生成不同语言的代码,方便在不同平台和系统之间进行数据交换。要使用 Google.ProtocolBuffers.2.4.1.555,你需要以下几个步骤:

1. 定义你的数据结构,使用 .proto 文件的语法

2. protoc -I=. --java_out=src/main/java addressbook.proto

3. 在你的项目中,引入生成的代码和 Google.ProtocolBuffers 的库,然后就可以使用它们来读写你的数据

git-thinh/Google.ProtocolBuffers_2.4.1.555: Google.ProtocolBuffers 2.4.1.555, RPC (github.com)

ProtoGen.exe addressbook.proto -output_directory=C:\trash

ProtoGen.exe -cls_compliance=false -service_generator_type=IRPCDISPATCH Sample.proto

ProtoGen.exe -cls_compliance=false -service_generator_type=IRPCDISPATCH helloworld.proto

ProtoGen.exe helloworld.proto -output_directory=C:\

ProtoGen.exe -cls_compliance=false -service_generator_type=IRPCDISPATCH books.proto

7f93ed7da5436c4cf6206644a23f35d1.png

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值