Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Getting axisCamera image result in n ecxeption somtimes (http://www.chiefdelphi.com/forums/showthread.php?t=152212)

cnc4 06-11-2016 12:58

Getting axisCamera image result in an exception somtimes
 
Hi all, my team and I are trying to make vision code for the robot.
The vision works great but sometimes we get an exception from the getImage method in the axisCamera class. After I get several exception I get an outOfMemory exception pointing on the getImage method. Those two exception are pointing on the native method that the getImage use.
Error:
Code:

_Priv_ReadJPEGString_C(image.getAddress(), getByteBufferAddress(string_buf), stringLength);
Line 29329 in NIVision.class.

I dont have the error text right now but this is an unkownError type. the error code is imaqError -123673104, I didnt find any help in the internet for this error.

Thanks in advance!

euhlmann 07-11-2016 07:20

Re: Getting axisCamera image result in n ecxeption somtimes
 
That error code is undocumented. Can you post the full error text?

cnc4 07-11-2016 08:21

Re: Getting axisCamera image result in n ecxeption somtimes
 
1 Attachment(s)
Quote:

Originally Posted by euhlmann (Post 1615382)
That error code is undocumented. Can you post the full error text?

Here you go, hope this help.

Thanks for your help!

euhlmann 07-11-2016 11:09

Re: Getting axisCamera image result in n ecxeption somtimes
 
Take screenshots please :)

So it's more than an undocumented error code, it seems WPILib is actually using NIVision black magic with a "private" function that's completely undocumented. You might be better off opening an issue on the WPILib repo. I can't help without documentation or source code :rolleyes:

mikets 07-11-2016 23:00

Re: Getting axisCamera image result in an exception somtimes
 
Quote:

Originally Posted by cnc4 (Post 1615300)
Hi all, my team and I are trying to make vision code for the robot.
The vision works great but sometimes we get an exception from the getImage method in the axisCamera class. After I get several exception I get an outOfMemory exception pointing on the getImage method. Those two exception are pointing on the native method that the getImage use.
Error:
Code:

_Priv_ReadJPEGString_C(image.getAddress(), getByteBufferAddress(string_buf), stringLength);
Line 29329 in NIVision.class.

I dont have the error text right now but this is an unkownError type. the error code is imaqError -123673104, I didnt find any help in the internet for this error.

Thanks in advance!

My understanding of the NIVision code is that it's actually written in C++ natively and have a Java wrapper. Because of this, the Java garbage collector doesn't reclaim image buffers allocated by NIVision API. Therefore, if you allocate image buffer for every frame, you are going to run out of memory really fast if you don't explicitly release the buffer after it's done. There are a lot of discussion threads about this issue, you can probably find and read them in the forums here. There are two ways to fix this. You can either rewrite the code so it doesn't allocate a new image buffer on every frame you process (we rewrote our code that only uses two preallocated frame buffers), or you will need to call image.free() when you are done with the buffer (Please note that I don't have the NIVision documentation in front of me so the actual API name may be different).

cnc4 07-11-2016 23:32

Re: Getting axisCamera image result in an exception somtimes
 
Quote:

Originally Posted by mikets (Post 1615542)
My understanding of the NIVision code is that it's actually written in C++ natively and have a Java wrapper. Because of this, the Java garbage collector doesn't reclaim image buffers allocated by NIVision API. Therefore, if you allocate image buffer for every frame, you are going to run out of memory really fast if you don't explicitly release the buffer after it's done. There are a lot of discussion threads about this issue, you can probably find and read them in the forums here. There are two ways to fix this. You can either rewrite the code so it doesn't allocate a new image buffer on every frame you process (we rewrote our code that only uses two preallocated frame buffers), or you will need to call image.free() when you are done with the buffer (Please note that I don't have the NIVision documentation in front of me so the actual API name may be different).

But the main issue is that I get an unkown exception. You thinks that the exception is cused by outOfBufferException in the native method?

Quote:

Originally Posted by euhlmann (Post 1615404)
Take screenshots please :)

So it's more than an undocumented error code, it seems WPILib is actually using NIVision black magic with a "private" function that's completely undocumented. You might be better off opening an issue on the WPILib repo. I can't help without documentation or source code :rolleyes:

I would of take screenshots but I did't had the computer neer me :p.

Ammm... so it never happend to other teams? No one ever reported this issue?


All times are GMT -5. The time now is 09:45.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi