Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[error] Invalid Bus Manager object #36

Open
lengoanhcat opened this issue May 11, 2017 · 5 comments
Open

[error] Invalid Bus Manager object #36

lengoanhcat opened this issue May 11, 2017 · 5 comments

Comments

@lengoanhcat
Copy link

Hi,

I am trying to open 6 different oat_frameserve as follows

oat frameserve usb raw0 -i 0
oat frameserve usb raw1 -i 1
...

It successfully opens 5 streams and give an error "Invalid Bus Manager object" for one failed attempt. I notice that each of five running frameserve takes 20% of a CPU load. The error might be due to lack of CPU load resource. My workstation have multiple cores so my question is

Does lack of CPU load causes "Invalid Bus Manager object" error ?
If it does, how can I instruct each oat_frameserve use different cores.

Thanks,

Cat Le

@jonnew
Copy link
Owner

jonnew commented May 12, 2017

I doubt its due to CPU load. It seems more likely that some internally specified maximum has been reached for the data bus, or you have actually reached some hardware limitation.

With respect to different cores: each oat-frameserve instance is a separate program. Each will use whatever cores are available. You don't have to do that manually.

In your script above, assuming its in the shell or a bash script, you would put and & after each command to send it to the background and start the next command.

@lengoanhcat
Copy link
Author

In my script, I put & after each command to run each oat-frameserve in the background.

Yeah, I agree that it is probably not due to CPU loads. In my case, oat_frameserve is always successful in starting any 5 out of 6 streams. That implies some hardware / software internal constrains.

In terms of hardware, each camera has its own bus (80 MB/s) which theoretically allows me stream 640x480 RGB8 60 fps. Curiously, I could only stream up to 32.74 fps. I think I am missing something here.

06:00.0 FireWire (IEEE 1394): LSI Corporation FW643 [TrueFire] PCIe 1394b Controller (rev 06)                                       
07:00.0 FireWire (IEEE 1394): LSI Corporation FW643 [TrueFire] PCIe 1394b Controller (rev 06)                                       
24:00.0 FireWire (IEEE 1394): LSI Corporation FW643 [TrueFire] PCIe 1394b Controller (rev 06)                                       
25:00.0 FireWire (IEEE 1394): LSI Corporation FW643 [TrueFire] PCIe 1394b Controller (rev 06)                                       
2a:00.0 FireWire (IEEE 1394): LSI Corporation FW643 [TrueFire] PCIe 1394b Controller (rev 06)                                       
2b:00.0 FireWire (IEEE 1394): LSI Corporation FW643 [TrueFire] PCIe 1394b Controller (rev 06)

In terms of software, could you give me some hints /clues of how to check / monitor the internal bus with oat?

@jonnew
Copy link
Owner

jonnew commented May 13, 2017

With regard to frame rate: does the max frame rate depend on the number of cameras you are running? That would imply some bus bandwidth limitation. If not, then I've noticed that Point Grey can be very optimistic with their frame rate specifications. e.g. the camera will only achieve a maximal rate under a certain ROI constraint or shutter mode. For my GigE cameras which are specified at 30 Hz, they will only achieve this if I free run the shutter or use mode 14 r and even then some shutters triggers are ignored. Make sure this is not what is limiting you. You can try different shutter settings in oat-frameserve to see if that helps.

With respect to bus bandwidth/monitoring: I don't really have any specific ideas since i work mostly with GigE cameras. I would recommend just getting on the phone with Point Grey to ask it this is some hardwired limitation of the hardware or driver, or if there is some software work around that we could potentially patch into oat-frameserve

@lengoanhcat
Copy link
Author

The max frame rate does not depends on how many cameras I run. Its maximum is 32.75 fps.
Which oat command I should use to specify the mode 14 r / or any other modes ?
I am trying to contact PointGrey to specifically ask about possible limitation in streaming videos from six different cameras. Hopefully, I could report any good news soon.

@lengoanhcat
Copy link
Author

Hi,

I am now in contact with technical supporter from PointGrey and they suggest to following function and codes to start and sync across multiple cameras. Is there any good way to incorporate the code lines into oat. Noted that, I am able to open all six cameras with FlyCap2 GUI but still unable to create six different oat frameserver.


int grabStatus = StartSyncCaptureAndGrab(ppCameras, numCameras);
if (grabStatus != 0)
{
// Cleanup if start sync capture fails intermittently
for (unsigned int i = 0; i < numCameras; i++)
{
if (ppCameras[i] != NULL)
{
ppCameras[i]->StopCapture();
ppCameras[i]->Disconnect();
delete ppCameras[i];
}
}

    cout << "Press Enter to exit..." << endl;
    cin.ignore();
    return -1;
}

Regards,

Cat Le

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants