I am facing an issue the the positional tracking retrieve rate with the ZED X mini with sl.POSITIONAL_TRACKING_MODE.GEN_2 on a Jetson AGX Orin , when I shake the camera a bit, the rate drops to 30Hz (normal behavior should be 60Hz).
Please note that this does no happen when I use sl.POSITIONAL_TRACKING_MODE.GEN_1.
I calculate the rate using the timestamps. Find attached the script that I am using to produce this issue. pos_rate.py (1.5 KB)
platform: Jetson AGX Orin
ZED SDK: 4.1.4
Python: 3.8.10
Hi @Myzhar
Thank you for the prompt response.
I might as well point that I am using the HD1200 resolution.
Unfortunately I upgraded the SDK to 4.2.5 but still facing the same issue. I am still facing an oscillating rate of pose between 30-60Hz periodically. This occur much less with DEPTH_MODE.PERFORAMCE than DEPTH_MODE.ULTRA. Also when shaking the camera while using sl.POSITIONAL_TRACKING_MODE.GEN_2 will cause the pose rate to drop permanently to 20-30Hz.
Let me know if I need to provide more information required for troubleshooting. Thank you.
Hello @Dhiaeddine-Oussayed,
What is the version of the AGX JetPack are you using? It appears that this might be related to a performance issue. Are you using the AGX for any other tasks? Additionally, do you see any warning messages in the console while running your code?
If you’re aiming for a more stable FPS with GEN_2, consider disabling the depth module by setting DEPTH_MODE::NONE. You can also disable the loop closure module by setting enable_area_memory to false when initiating tracking.
Hi @TanguyHardelin ,
I am using JetPack 5.1.1.
Initially I noticed the issue while running other tasks. But the same issue happened even while running the script that shared above only.
No, I do not see any warning messages.
By disabling depth module by setting DEPTH_MODE::NONE I manage to achieve constant 60Hz pose rate, however this is also achievable even by using DEPTH_MODE::PERFORMANCE. I also have set enable_area_memory to False, yet, by shaking a camera a bit, simulating a moving robot vibrations, the rate permanently drops to 20-30Hz.
Thank you for your response. I have a few follow-up questions:
Had the tracking completed the VIO initialization before you started the hard movement? You can check the initialization status using the getPositionalTrackingStatus method.
Do you have an estimate of the board’s load when you started shaking the camera? Shaking the camera might trigger additional computation due to potential IMU saturation, which could explain why your frame rate drops to 20-30 Hz.
Related to the previous question, what is the amplitude of your movement when you “shake” the camera?
Additionally, please consider updating to a more recent version of JetPack. JetPack 6 offers better-optimized functions that can help achieve a more consistent frame rate.
zed.get_position(pose_data, sl.REFERENCE_FRAME.WORLD) is returning OK. zed.get_positional_tracking_status().tracking_fusion_status is returning VISUAL_INERTIAL. zed.get_positional_tracking_status().odometry_status is returning OK.
Before shaking the camera the board’s load is consistent and at max 60%. After shaking the boad’s load is not consistent and oscilate between 0-60%. So no, shaking does not introduce more computation.
I am shaking by hand slowly, not aggressively. In fact while testing lately I don’t need to shake it to introduce the rate drop, even if I move back and forth a big object in the field of view of the camera (Camera is point to the ground with a distance <50cm), I get the same observation (i.e a rate drop to 20-30Hz)
I’ve ran other experiments with a ZED-BOX with JetPack 6.0 and ZED-SDK 4.2.2 and 4.2.5 (I tried both) I didn’t manage to get 60Hz pose rate even without moving the camera or the objects within the field of view.