RobotStudio event

Externally Guided Motion, simulated analog signals, digital group signals

Hello, I have some questions about EGM, analog signals and digital group signals (I'm working with an omnicore c30 controller).

First of all some information about my project, the goal of the project is to follow an object with the robot as fast as possible and as precise as possible (I need to be following it with a precision of at least +/- 0,5 mm). The object only moves on the x axis and z axis.

For this I get Position Data from a sensor (via UDP). My current program consists of 2 tasks, one is only for EGM movement and the other is only for sensor data processing.

The data processing consists of an udp socket where I get the sensor data, preprocess this data (I need to calculate the next position for EGM), write it to an analog signal or digital group signal. With analog signals I managed to create every 24ms new signals and with digital group signals I managed to create every 8-10 ms new signals for the EGM.

The other tasks (main task) consists of the EGM Movement stuff, where I use the analog or digital signals for EGM Setup. The EGM Program works and the robot follows the object, but very slow...I want to maximize speed and hold on to a precision like mentioned.

I now have multiple questions:

1.) EGM is new for me and I'm not 100% sure if it is the right approach, maybe someone with more experience could tell me if I'm on the right track?
2.) the digital group signals are generated way faster than analog signals, does someone know what time analog signals take in general to be created?
3.) digital group signals can only present integer values, I know that I can multiply the value (e.g. 234.11) on one end by 100 to send 23411 via digital group output and divide at the other end by 100 and have the value back...but people who know EGM know that the Movement is done based on signals. Is there a way to send float values with digital group outputs? Or is it possible to enter some signal logic before doing the EGM movement?

Answers

  • For your speed concerns, make sure you are in automode as the robot will run slowly even for egm in manual. Please do this with extreme caution as the robot is easy to crash with EGM. To make the robot faster yet, open the robot configuration>Motion >External Motion Interface Data, and declare a new one style. If you are doing some of your own filtering on the data, change the level to raw and increase the proportional gain as well as reduce the ramp time. In raw, the low pass filter has no effect. If you are not doing any of your own filter, reduce the lowpass filter some, increase the proportional gain, and decrease the ramp time. This will get you greater speed. In your EGMSetupAI command, change the string "default" to the name of your new profile for it to utilize it.


    Your approach is perfectly fine.

    In my opinion, the best way to use EGM is to use the UDPUC controls as that gives more data feedback, but that method is not practical most of the time as it requires and external computer and a fair amount of computer programming in something like .netframework or c++

    Analog values should be able to go much quicker than that I have had them updating at a rate of 4 ms. Knowing what you are doing in the background code may help me understand why you are seeing such a delay. If you are seeing that large of a delay, you might be able to do the math in one background task and the setting of the values in another task. As well, if you have tied these IO to a virtual device rather than just leaving the device unassigned, you may need to make sure that you didn't set the update rate of the device low.

    Sorry to say, you cannot scale the group inputs to a value like you are wanting. The only way to scale like that is with the analog values. You can do logic with signals, but you cannot scale the group signals.

    If you could upload some code I would be interested in looking at it.