Setting up VRPN

96 views
Skip to first unread message

Eric W

unread,
Feb 16, 2016, 2:35:00 PM2/16/16
to omegalib
Hi Alessandro,

Jason mentioned that omegalib has VRPN built-in?  How do I enable it so that I can have our OptiTrack software (Motive) broadcast VRPN data to omegalib?

Alessandro Febretti

unread,
Feb 17, 2016, 12:01:56 AM2/17/16
to omegalib

Eric W

unread,
Feb 17, 2016, 5:26:06 PM2/17/16
to omegalib
I added this to the desktop.cfg (file we are using to run our wall) under omegalib/system folder:

services:
{
 
MouseService: {};
 
KeyboardService: {};
  XInputService: {};
 
ViewRayService:
 
{
    inputService
="MouseService";
    hasNormalizedInput = false;
 
};
 
VRPNService:
 
{
    updateInterval
= 0.01;
    serverIP
= "127.0.0.1";

    trackedObjects
:
   
{
      rb1
:
     
{
        name
= "Rigid_Body_1'
        trackableID = 1;
        userID = 0;
      };
    };
  };
};

However, nothing happens when I start to move the wand around.  In the Motive software (came with the cameras), I can see that it is tracking a rigid body that we defined as Rigid_Body_1 and under the VRPN Steaming Engine, it is set to Broadcast Frame Data.

But if I go down to the bottom right corner of the application and hover over NET to get the status.  It would say that it is streaming data. Client not detected.

Is there a VRPN application that needs to be started or anything extra other than adding those lines to the config file and starting up our Motive software?

Alessandro Febretti

unread,
Feb 17, 2016, 6:32:52 PM2/17/16
to omegalib
I assume the tracker is running on the same machine you use to run the display wall? Do you get any error in the orun log related to the VRPN service?

Eric W

unread,
Feb 17, 2016, 9:32:22 PM2/17/16
to omegalib
Yes, tracker is running on the same machine.  I will have to check the orun log and get back to you on that.

Eric W

unread,
Feb 22, 2016, 7:58:49 PM2/22/16
to omegalib
Hi Alessandro,

The logs didn't say anything about the VRPNService so I just copied the text from the command prompt and pasted it to a text file.
VRPN.txt

Alessandro Febretti

unread,
Feb 23, 2016, 12:00:07 PM2/23/16
to omegalib
It does say it is initialized. Not sure why it's not connecting. 

Eric W

unread,
Feb 23, 2016, 2:38:01 PM2/23/16
to omegalib
The only thing I can confirm is that in Motive, I created a rigid body and when I select the rigid body properties, I changed its name from rigid_body_1 to Rigid_Body_1.  I can confirm that the software was tracking the rigid body.  After that I select the streaming option and unless I check off their box that says Broadcast frame data undering VRPN Streaming Engine, the software says it isn't streaming.

The rest is what I posted.  The update config file and running a demo.

I am just wondering do I also need to start any other services other than MouseService, KeyboardService, XInputService, ViewRayService, VRPNService?

Arthur Nishimoto

unread,
Feb 23, 2016, 8:38:40 PM2/23/16
to omegalib
I assume that Motive is using the standard VRPN protocol of [object name]@[tracker IP] to initialize the connection? This is what VRPNService is sending to the Motive.

From my understanding that is all that is needed to start the connection. Our Vicon tracker actually provides 0 feedback on client connections.

Alessandro:
Am I right in that Omegalib is running VRPNService directly opposed to say oinputserver streaming it to omegalib? As the service does create Omegalib Events that should technically work right?


Alessandro Febretti

unread,
Feb 23, 2016, 10:18:38 PM2/23/16
to omegalib
I forwarded to Arthur - ping me again if he doesn't answer

Eric W

unread,
Feb 25, 2016, 3:50:47 PM2/25/16
to omegalib
Arthur did answer. He mentioned that I should need the object name and the tracker's IP.

An interesting point that he brought up was do I need to start oinputserver to stream the data to omegalib?

Alessandro Febretti

unread,
Feb 25, 2016, 5:16:17 PM2/25/16
to omegalib
You can use oinputserver or you can run the services directly from your omegalib application. Oinputserver is needed if you have a separate machine handling your input devices.

Eric W

unread,
Feb 26, 2016, 4:57:30 PM2/26/16
to omegalib
So if I am running omegalib and motive off of the same machine, VRPNService is receiving data from Motive?

Alessandro Febretti

unread,
Feb 26, 2016, 5:15:34 PM2/26/16
to omegalib
assuming the port and everything else is configured correctly, yes

Eric W

unread,
Feb 26, 2016, 5:46:28 PM2/26/16
to omegalib
Should I provide the whole config file and a screenshot of the motive software?

When you mentioned the port, do we have to state the port number in the config file too?

Here is the services section of the config that I am using:

Eric W

unread,
Feb 26, 2016, 9:27:11 PM2/26/16
to omegalib
Hi Alessandro,

I attached a screenshot and the config file that I was using.  The result is that moving a wand around doesn't do anything to the molecule demo, but in the Motive software I can see that the cameras tracked the wand's movement.

I tried running the oinputserver that we had on our giant display wall and I would get a Kinect20.dll error, so copied the oinputserver from our touchtable and that error is gone.  In the oinputserver.cfg, I deleted all of the services except for VRPNService and XInputService.

Any suggestions would help.
desktop.cfg
Motive.png

Eric W

unread,
Mar 7, 2016, 2:14:25 PM3/7/16
to omegalib
Hi Alessandro,

Could you confirm if our desktop.cfg is setup correctly to use VRPN?

Alessandro Febretti

unread,
Mar 25, 2016, 2:59:31 PM3/25/16
to omegalib
sorry for the delayed answer
yes the default.cfg looks correct.
Were you able to solve this?
Message has been deleted

Eric W

unread,
Mar 26, 2016, 9:37:40 PM3/26/16
to omegalib
Unfortunately no, I downloaded a sample listener (meant for VRPN) cpp file from optitrack and compiled it into an executable, running that with Motive running and streaming data through their VRPN engine will print out the wand's position and orientation.

I tried changing the trackedObjects section of the config so that the name would match the rigid body name in Motive to this:

    trackedObjects:
   
{
      rb1
:
     
{
        name
= "Rigid_Body_1'
        trackableID = 0;
        userID = 0;
        jointId = "
head";
      };
    };


This was to see if at least our wand position would affect the camera position in any of our demos.  However there didn't seem to be any response during the demo.

Eric W

unread,
Apr 4, 2016, 4:46:03 PM4/4/16
to omegalib
Hi Alessandro,

I just realized the last post should say

    trackedObjects:
   
{
     
Head_Tracker
:

Alessandro Febretti

unread,
Apr 10, 2016, 12:11:25 AM4/10/16
to omegalib
silly question, have you checked orun is not blocked by the firewall?
Reply all
Reply to author
Forward
0 new messages