ABB机器人炸裂黑科技

[复制链接]
查看5478 | 回复0 | 2024-3-18 10:17:17 | 显示全部楼层 |阅读模式

毫秒级接收ABB机器人当前位置




向右滑动查看毫秒级炸裂效果



肖小湿哥哥,炸裂效果看不懂。
●●●




没有切水果般的炸裂感

seq是序号,懂了伐!

tm是时间戳,懂了伐!  

pos:xyz就是机器人当前位置

懂了伐!





嗨呀!知佐咯,我看到每条记录的tm就是相差4,

也就是4毫秒(ms)就看到一条位置数据呀,好厉害的机器人啊!仿佛用头开西瓜的炸裂感!好想买台机器人回家开西瓜啊!
●●●



END







等等!还没有结束下面是无废话的正文


Externally Guided Motion(以下简称EGM)

ABB机器人方便客户外部直接引导/获取机器人位置等信息而设置的高级接口。
EGM提供3种特性


EGM Position Stream

RAPID任务中机械单元的当前和计划位置发送至外部系统。

速度能达到250Hz(最快4ms一个位置)。


EGM Position Guidance
可以实现机器人沿着某件外部装置所生成的路径移动(即可以变相实现外部路径直接规划)。

机器人可接收xyzabc笛卡尔坐标或a1-a6关节坐标。

最快能达到4ms。


EGM Path Correction
用某件外部装置提供的测量值来修改/校正所编写的机器人路径。

速度为48ms的倍数。

EGM Position Stream仅可用于Udp单播通信。其能够让机器人控制器定期发送机械单元(例如机器人、定位器、导轨..)的计划和实际位置数据。

通过Google Protobuf 定义文件 egm.proto来详细说明信息内容。用户可在IRC5控制器的高优先级网络环境(以此确保高达250赫兹的稳定数据交换)下运行周期通信通道(UDP)。

各运行任务必须配备一个通信通道。

EGM Position Stream可与EGM Position Guidance一同使用。

敲黑板,开始上课如何利用EGM Position Stream实现前文的炸裂效果

01机器人配置
1.进入示教器-控制面板-配置-主题-communication-Transmission Protocal


2.进入新建一个项目,命名例如为UCdevice


3.类型选择UDPUC,Remote Address为远程server的ip地址。使用EGM Stream时,通常机器人为client。


4.若有多个Server(设备)需要传送数据,设置端口如下。


5.在机器人创建代码如下:
PROC UDP_TEST1()

        VAR egmident egmID1;

        EGMGetId egmID1;

        EGMSetupUC ROB_1,egmID1,"default","UCdevice"\Pose;

        ! 使用UCdevice设备,名字为前文配置设备名字,使用defaul配置。

        ! 如果发送数据格式为xyz q1-q4,选择类型为Pose

        ! 如果发送数据格式为a1-a6,选择类型为Joint

        EGMStreamStart egmID1\SampleRate:=4

        ! 开始输出,采样率为4ms

        MoveAbsJ jpos20,v100,z20,tool0;

        MoveAbsJ jpos10\NoEOffs,v1000,fine,tool0;

        ! 移动机器人

        EGMStreamStop egmID1;

        ! 停止输出

        EGMReset egmID1;

ENDPROC

6.EGM sensor protocol使用Google Protocol Buffers来进行编码,并把UDP则作为一则传送协议。选择Google Protocol Buffers的原因是其具有速度和语言中立性方面的优势。由于所发送的数据是高频发送的实时数据,且一旦丢失数据包,那么重新发送这些数据也无济于事,所以选择了UDP作为传送协议。
7.Google Protocol Buffers或Protobuf能非常高效地对数据进行串行化/去串行化。Protobuf大致上比 XML快10到100倍。互联网上有大量关于Protobuf的信息。02PC端配置及范例代码1.下载protobuf-csharp,并解压。
https://code.google.com/p/protobuf-csharp-port/.

或者通过互联网搜索protobuf-csharp

2.解压缩文件中是否有tools文件夹且文件夹内有以下文件。


若没有,则进入解压缩文件的build文件夹,点击运行



则会产生build_outputs文件夹,内有tools文件夹及上述文件。

3.在安装有robotstudio的pc上,进入如下路径
C:\ProgramData\ABB Industrial IT\Robotics IT\DistributionPackages\ABB.RobotWare-6.08.0134\RobotPackages\RobotWare_RPK_6.08.0134\utility\Template\EGM,找到egm.proto文件。

4.在安装在步骤2中的tools文件夹内,新建一个egm文件夹。

5.将egm.proto文件复制到一个步骤4中创建的egm文件夹,如~\protobuf-csharp-port-2.4.1.555\build_output\tools\egm。

6.启动Windows控制台(windows搜索框输入CMD)
利用相关语句转到如下路径:~\protobuf-csharp-port-2.4.1.555\build_output\tools



7.在该Windows控制台输入以下内容,利用egm.proto文件生成一份EGM C#文件(egm.cs)
protogen .\egm\egm.proto --proto_path=.\egm

在tools文件夹下则会生成egm.cs文件

8.在Visual Studio中创建一项C# Windows控制台应用,比如EgmSensorApp。
9.确认VS中已经安装NuGet,若没有,则在Visual Studio中点击工具,然后点击扩展名管理器,转至在线,找到NuGet Package Manager extension,然后点击下载
10.在使用NuGet的C# Windows Console应用的解决方案中安装protobuf-csharp。必须在Visual Studio中打开该解决方案。
11.在Visual Studio中依次选择工具、Nuget数据包管理器和数据包管理器控制台。


在控制台中输入如下代码:

类型PM>Install-Package Google.ProtocolBuffers



12.在使用在Visual Studio项目中添加所生成的文件egm.cs(添加现有项目)
13.将示例代码复制到Visual Studio Windows Console应用文件(EgmSensorApp.cpp),然后依次编译、链接和执行。
实例代码可以从如下路径
C:\ProgramData\ABB Industrial IT\Robotics IT\DistributionPackages\ABB.RobotWare-6.08.0134\RobotPackages\RobotWare_RPK_6.08.0134\utility\Template\EGM获取egm-sensor.cs代码范例
14.范例代码为pc收取机器人数据并发送数据到机器人,在测试时,可以先将以下pc发送代码注释(即暂不执行)。
    EgmSensor.Builder sensor = EgmSensor.CreateBuilder();

    CreateSensorMessage(sensor);

    using (MemoryStream memoryStream = new MemoryStream())

       {   

             EgmSensor sensorMessage = sensor.Build();

             sensorMessage.WriteTo(memoryStream);

             // send the udp message to the robot

             int bytesSent = _udpServer.Send(memoryStream.ToArray(),

                                            (int)memoryStream.Length, remoteEP);

             if (bytesSent < 0)

             {

                     Console.WriteLine("Error send to robot");

             }
        }
15.范例代码仅输出了机器人发送过来的序号和时间戳(4ms一次),可以添加如下代码,显示机器人的实时反馈位置。
Console.WriteLine("Seq={0} tm={1}  pos= {2}",
                    robot.Header.Seqno.ToString(), robot.Header.Tm.ToString(),                     robot.FeedBack.Cartesian.Pos);
16.先运行C#代码,再启动机器人侧代码。
炸裂出现了!!








戳原文,更有源码工作站下载!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则