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#程序
全局主控制
静态类:该类包含用于控制和监视EGM连接状态的静态变量。这些变量包括连接和断开状态的标志、是否真正已连接或已断开、关节的目标方向、到目标的预计时间以及每个关节是否处于预定位置。EGM控制类
静态类:该类包含与ABB机器人EGM通信相关的变量,如IP地址和端口号、关节方向的读取和设置、代表线程存活状态的布尔变量和准备状态。机器人控制
主类:这是基于MonoBehaviour
的Unity类,用于控制机器人的运动。它包含启动(Start
)和每帧更新(FixedUpdate
)的逻辑。它还负责处理机器人目标点的初始化和遍历,以及在应用退出时关闭通信资源。EGM控制
类:本类封装了EGM通信的所有细节,如创建UDP服务器、发送和接收数据、处理线程开启和关闭等。它通过一个私有的线程(sensor_thread
)周期性地从机器人接收数据,解析接收到的数据进行机器人关节的读取,并向机器人发送修正后的传感器信息。Egm_Control_Thread
方法:此方法作为一个后台线程运行,主要功能是监听并处理从ABB机器人控制器接收到的UDP数据包。该方法解析数据包,通过egm_sensor
构造并发送响应的EGM传感器数据。Start
、Stop
、Destroy
方法:这些方法分别用于启动、停止和销毁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