Deciphiring Data on Port 30001-300002, Why RTDE, Why URScript

Hi!

Its my first time getting familiar with a UR robot. After reading a little there are several ways to interface it via TCP IP. I spoke with a UR specialist and he recommends RTDE. I found URScript to be easier to use and to parse.

Why is RTDE is preferable?

Even using RTDE or URScript to read the status, the status of everything is being broadcasted on the primary ports 30001-30002 without asking.

The way I see it, is more efficient to get the status on the primary ports 30001-30002 broadcasted and for commands URScript syntax on port 30002.

Do you see anything wrong with my approach of using port 30001 for getting the status of things and commanding using URScript syntax on port 30002?

Does anyone have a way to decipher the packets broadcasted? How do you get at least one variable from one of these packets and can you explain?

0000003714FFFFFFFFFFFFFFFFFE03095552436F6E74726F6C050C000000040000000032322D30382D323032322C2031343A33353A31350000001814FFFFFFFFFFFFFFFFFE0C000000000000000001000000B5183FC33333333333334039000000000000000000000000000040000000000000003FC999999999999A3FC999999999999A3FC999999999999A3FC999999999999A3FC999999999999A3FC999999999999A3FA1DF46A1FAE7113FA1DF46A1FAE7113FA1DF46A1FAE7113FA1DF46A1FAE7113FA1DF46A1FAE7113FA1DF46A1FAE7110000000000000000000000000000000000000000000000003FAACEE9F3D441993F50624DD2F1A9FC3F847AE147AE147B00000354170105060100FFFFFFFF0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050603000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080BF000080BF000080BF000080BF000080BF000080BF0001000000000000000000C03F000016430000C03F000016430000003FCDCCCC3E000096430000C84100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000803FDB0FC940A7DC5540A7DC5540A7DC5540A7DC5540A7DC5540A7DC5540FEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFEC62C740EC62C740EC62C740EC62C740EC62C740EC62C7400100000001000000010000000100000001000000010000005077563D5077563D5077563D5077563D5077563D5077563D0000403F0000F0420000403F0000F0429A99993E9A99993E000048430000204100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000803FDB0FC940A7DC5540A7DC5540A7DC5540A7DC5540A7DC5540A7DC5540FEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFEFFFFFFEC62C740EC62C740EC62C740EC62C740EC62C740EC62C7400100000001000000010000000100000001000000010000005077563D5077563D5077563D5077563D5077563D5077563D000005BF100000002F0000000026BBFB1E900101000000000003003FF000000000000000000000000000003FF000000000000000000000FB013FFBD0D7A00000003FFBD0CD4000000000000000000000003CA3036A421DF29441C2000000000000F5BFF2338F4C524550BFF23398DC52455000000000000000003C8B88F2421E4AA441C2800000000000F5BFF2922120000000BFF2927F200000008000000000000000BD44865D421E0FEF41C1000000000000F53FE6FDC4D75B75603FE6FEA3D75B75603F0F508F80000000BC07F092421DF29441D2000000000000F53FF9FAB2800000003FF9FA8AE0000000BEEB82E700000000398C1D40421DE3E741D3000000000000F5400542B0E0000000400542AF0000000000000000000000003C0374EB421DE3E741D5800000000000F500000065043FC056261

There are lots of tools for dealing with RTDE.

See here for official UR documentaiton:
https://www.universal-robots.com/articles/ur/interface-communication/real-time-data-exchange-rtde-guide/

UR has a python RTDE client package:

There is a pip package ur-rtde(also available for C++, btw):

The RTDE implementation can be more efficient than status messages on 30001,30002. You specify a “recipe” of only the data items you want to synchronize as opposed to exchanging EVERYTHING when typical applications only utilize some small subset.