Best method for embeding RR into another app ?
met44 from France  [2 posts]
5 years

I have been evaluating RR on a customer's request and I'm having doubts it is suitable for our needs, not because of its features which are awsome but because of the way to interface with it.

My customer's application requires a relatively high speed solution (60fps min) and we would like to embed RR for its blob tracking feature. The end application is written in C#.

We can either wrap the RR into a managed object or use it in a full C program but it has to be embedded otherwise we will probably fallback to AForge.

The documentation is pretty oriented on how to use the actual software and the DLL page doesn't help as much as I thought it would in the first place.
By the way, I downloaded the Test DLL archive and the RoboRealm.h referenced in it is missing :o I recreated one from dependency walker. Even then I got stuck because I couldn't find what function to use to enable the webcam as input and not just read static images as in the demo.

This feels like a pretty abnormal level of complexity to simply use a library so I'm sure I've missed something but I can't figure what it is.

Any clues on what I missed ?

I would be greatfull if someone was nice enough to point me in the right direction !

Steven Gentner from United States  [1423 posts] 5 years

Thanks for the tip about the missing .h file. That has now been added.

The DLL was designed for a very low level control of the pipeline which is why it appears to be overly complex. Perhaps if you describe how you'd like to interact with RoboRealm we can better suggest a route. The possible fps will depend heavily on the weight of the pipeline modules and not really on the integration capability of a C# app to RoboRealm. For example, if you are monitoring a particular part, you want to scan at 60 fps but once detected a single result is passed back but only once per part. Thus the final result is very slow as compared to 60 fps. You really want to keep the image scanning as tight as possible to keep that kind of frame rate up.

Perhaps if there was a

rr_loadRoboFile("c:\\path\\robofile as saved via the GUI");

unsigned char *image = rr_getImage("The webcam to use")

while (true)
  if (rr_getVariable("object_detected")!=0) break;

would that be more of what you would expect?

The DLL is relatively new so we are still looking for feedback on what would be the most useful helper functions.

Naturally, if the network based API is what you need, that's been around for quite a while and can do the above with just sending back the variable result ... easily possible at 60Hz (i.e. its just a 4 byte result instead of an entire image).


met44 from France  [2 posts] 5 years
Hi Steven,

Thanks for the quick reply !

Yes such a rr_getImage() would definetely be great.

About our use of RoboRealm, we're intending to locate with appropriate precision real world objects 3d coordinates while moving at a fast pace by using 4 low res webcams at either 60 or 120 fps and a neuronnal network.

All our main application really needs is the output of the NN (and eventually information on cameras status for diagnostic purposes, would hate to have to open USBDeview in front of customers...).

This forum thread has been closed due to inactivity (more than 4 months) or number of replies (more than 50 messages). Please start a New Post and enter a new forum thread with the appropriate title.

 New Post   Forum Index