In modern robotics camera cables often lay close to high power motor and other cables and occasional burst of EMI noise is unavoidable.
That’s why MIPI frames are protected with CRC - so that ISP can ignore occasional bad frame and continue.
But Argus capture breaks down even after a single corrupted frame with errors like:
“General error queue is out of sync with frame queue”
Jan 25 15:45:24 orin2 nvargus-daemon: (Argus) Error Timeout: (propagating from src/api/CaptureSessionImpl.cpp, function waitForIdle(), line 630)
Jan 25 15:45:24 orin2 nvargus-daemon: SCF: Error Timeout: (propagating from src/services/capture/CaptureServiceDeviceViCsi.cpp, function waitCompletion(), line 368)
Jan 25 15:45:24 orin2 nvargus-daemon: SCF: Error Timeout: (propagating from src/services/capture/CaptureServiceDevice.cpp, function pause(), line 936)
Jan 25 15:45:24 orin2 nvargus-daemon: SCF: Error Timeout: During capture abort, syncpoint wait timeout waiting for current frame to finish (in src/services/capture/CaptureServiceDevice.cpp, function handleCancelSourceRequests(), line 1029)
Jan 25 15:45:24 orin2 nvargus-daemon: Module_id 30 Severity 2 : (fusa) Error: Timeout propagating from:/capture/src/fusaViHandler.cpp 776
After that I cannot resume capture without restarting Argus daemon.
This is unacceptable for a mission critical camera application.
I see that this question was already asked:
“We are planning to improve the camera recovery and error handling but can’t promise the release date.”
“The latest release have improve the error handling but didn’t verify every case.”
Is there some way to configure Argus daemon to just report errors to the app and continue with frame capture regardless?