LiveLink bodies.is_new, what exactly it does?

I have Livelink running, but aftr some time and many detected objects, bodies.is_new ==1 satement is false and does not get true. What this exactly does and why it becomes 0? Is there a way to debug and see what is heppening? Where data gets “stuck” ?

Thanks

Hi,

The AI detection can be done asynchronously with the image capture. The is_new value tells you if the data has already been retrieved by the last retrieveObject() or is a new data.

The issue you mentionned has already been identified by our team : after a long time, the is_new field is always returning false. For the moment, the source of the problem has not been found.
The workaround I can give you for now is to disable/re enable the OD detection module once this happens.

I’ll see with the SDK team if they have some news about the problem.

Best,
Benjamin Vallon

Stereolabs Support

1 Like

Any advice where best were to do the disable/enable within the code?

You can use these two methods : EnableObjectDetection() and DisableObjectDetection()

How to detect that, because sometimes it’s == 0 and then 1, how to check that it fell over and there is a problem?

Hi,

You can count the number of time “is_new” is false in a row. If this count is highter than a certain amount (like 10 times, which should not happen if everything is working correctly), trigger the disable/enable of the OD module.

Hi there, continuation of the previous issues:
So I have Sender (Jetson with 3.8.1), Receiver LIveLink (Win with 3.8.1)
After long time of running, sender stops sending and does not throw an error. I have tried C and Python senders and both behave the same. C sender just hangs and process needs to be killed, Python just runs in the loop and does not throw an error. Sometimes, I get LOW USB Bandwidth error, if this happens Jetson need reboot. Otherwise just shutting down the sender and running again re-establishes the stream.

Here is Python code:

import sys
import pyzed.sl as sl

def main():

init = sl.InitParameters()
init.camera_resolution = sl.RESOLUTION.HD720
init.depth_mode = sl.DEPTH_MODE.NONE
cam = sl.Camera()
status = cam.open(init)
if status != sl.ERROR_CODE.SUCCESS:
    print(repr(status))
    exit(1)

runtime = sl.RuntimeParameters()

stream = sl.StreamingParameters()
stream.codec = sl.STREAMING_CODEC.H264
stream.bitrate = 7000
stream.chunk_size = 16400
stream.port = 30000
status = cam.enable_streaming(stream)
if status != sl.ERROR_CODE.SUCCESS:
    print(repr(status))
    exit(1)

print("  Quit : CTRL+C\n")
while True:
    err = cam.grab(runtime)
    if err == sl.ERROR_CODE.SUCCESS:
        print("Streaming")
    else:
        print("Error");

cam.disable_streaming()
cam.close()

if name == “main”:
main()

Questions:
Does Jetson need AI module installed object tracking module enabled/installed if using just to stream to Livelink receiver?
How to catch grab/camera error and exit the app?
H264vs H265 codec, what is more reliable? Does it have impact on object tracking?
What is lowest bitrate for still reliable skeletal tracking?
What causes low USB bandwidth error?
On Livelink “confidence”: 60, - what would be optimal setting for tracking objects at 3m range?

Thanks In advance.