I am using two basler acA1920-25uc camera and run it on Jetson Orin NX 16Gb and . In two days time, Consistently I am getting the following error. Read operation on device '2676:ba02:2:4:44' failed: 'The requested operation timed out.' : TimeoutException thrown (file 'PylonUsbDevice.cpp', line 778) in one of the two basler cameras The frequency of errors is not frequent. Do anyone know what is root cause to this error and how to fix it? PC : Jetson Orin NX 16GB (Seeed Studio) Connect Camera through USB3.0 Camera : Aca1920-25uc Cables : 2200000621 (basler cables) I measured the Jetson's parameters. However, almost all parameters are stable in voltage and current during camera errors. (VDD > 5V)
class Camera :
# Config Camera
def __init__(self,serial_number,nodeFile = None):
self.nodeFile = nodeFile
self.camera = self.connect_camera(serial_number)
self.camera.Open()
print("Using device ", self.camera.GetDeviceInfo().GetModelName())
print("Reading file back to camera's node map...")
# Load settings from node file
self.loadSettings(self.nodeFile)
# Start Grab Image
self.camera.TriggerMode.SetValue('On')
# self.camera.TriggerDelay.SetValue(0)
# self.camera.TriggerSelector.SetValue('FrameStart')
self.camera.TriggerSource.SetValue('Software') #
self.startGrab()
def loadSettings(self,nodeFile):
# load settings from Node file
if nodeFile :
pylon.FeaturePersistence.Load(nodeFile, self.camera.GetNodeMap(), True)
def startGrab(self):
# Start Grab Image
self.camera.StartGrabbing(pylon.GrabStrategy_LatestImageOnly)
def stopGrab(self):
# Stop Grab Image
self.camera.StopGrabbing()
def connect_camera(self,serial_number):
# Connect and check Camera
devices = pylon.TlFactory.GetInstance().EnumerateDevices()
for device in devices:
try :
camera = pylon.InstantCamera(pylon.TlFactory.GetInstance().CreateDevice(devices[1]))
# CHECK IF CAMERA 1 IS CORRECT SERIAL NUMBER
if camera.GetDeviceInfo().GetSerialNumber() == serial_number :
print("CAM1-info: ",camera.GetDeviceInfo().GetSerialNumber())
return camera
except Exception as error :
print("CAMERA",error)
def triggerCamera(self):
# Capture camera
# if self.camera.WaitForFrameTriggerReady(10000):
time.sleep(0.005)
try :
if self.camera.WaitForFrameTriggerReady(5000, pylon.TimeoutHandling_ThrowException) :
self.camera.ExecuteSoftwareTrigger()
grabResult = self.camera.RetrieveResult(1000, pylon.TimeoutHandling_ThrowException)
if grabResult.GrabSucceeded():
img = grabResult.Array
return img
except Exception as error:
print("Trigger Error: ",error)
return None
def saveImage(self,grabResult,typeImage,quality = 100 ):
# Save image into folder
now = datetime.now()
dateTime = now.strftime("%d-%m-%Y_%H-%M-%S")
img = pylon.PylonImage()
img.AttachGrabResultBuffer(grabResult)
if typeImage == "jpg" :
ipo = pylon.ImagePersistenceOptions()
ipo.SetQuality(quality)
filename = f"{dateTime}.jpg"
img.Save(pylon.ImageFileFormat_Jpeg, filename, ipo)
else :
filename = f"{dateTime}.png"
img.Save(pylon.ImageFileFormat_Png, filename)```