Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JAI Camera different sensors #4

Open
ilgazaskin opened this issue Mar 1, 2022 · 7 comments
Open

JAI Camera different sensors #4

ilgazaskin opened this issue Mar 1, 2022 · 7 comments

Comments

@ilgazaskin
Copy link

Hello,

I'm using a JAI camera that has 3 different sensors (1 RGB, and 2 NIR). JAI is a Genicam camera and I can use this package to reach the camera in ROS. It works fine for RGB sensor but, how can I reach NIR sensors. I would probably need to define something on the config file, but I couldn't really figure it out. Could you help me?

Best.

@heikohimu
Copy link
Contributor

The package is a rather simple ROS wrapper and does not support publishing of different images from one camera. You may extend the implementation if you like. I have not worked with a JAI camera an do not know how they publish images from different sensors. In general, there are two possibilities. The camera either offers several streams for sending data of the different chips or it uses different components. Could you post the output of the tool 'gc_info '? Then I may know more.

@ilgazaskin
Copy link
Author

ilgazaskin commented Mar 1, 2022

Hi,

Thank you for the response.

The result of gc_info is below.

Device:            ---
Vendor:            JAI Corporation
Model:             FS-3200T-10GE-NNC
TL type:           GEV
Display name:      ---
User defined name: 
Serial number:     
Version:           
TS Frequency:      0

Available streams:
  Stream ID: ---

Available features:
  Category: Root (RO)
    Category: DeviceControl (RO)
      String: DeviceVendorName (RO): JAI Corporation
      String: DeviceModelName (RO): FS-3200T-10GE-NNC
      String: DeviceManufacturerInfo (RO): See the possibilities
      String: DeviceVersion (RO): 0.2.1.0
      String: DeviceFirmwareVersion (RO): 0.2.0.2
      String: DeviceFpgaVersion (RO): 0.0.2.3
      String: DeviceSerialNumber (RO): ---
      String: DeviceUserID (RW): ---
      Integer: DeviceSFNCVersionMajor (RO) [-9223372036854775808, 9223372036854775807]: 2 
      Integer: DeviceSFNCVersionMinor (RO) [-9223372036854775808, 9223372036854775807]: 3 
      Integer: DeviceSFNCVersionSubMinor (RO) [-9223372036854775808, 9223372036854775807]: 0 
      Integer: DeviceManifestEntrySelector (RW) [1, 1]: 1 
      Integer: DeviceManifestXMLMajorVersion (RO) [0, 4294967295]: 0 
      Integer: DeviceManifestXMLMinorVersion (RO) [0, 4294967295]: 1 
      Integer: DeviceManifestXMLSubMinorVersion (RO) [0, 4294967295]: 6 
      Integer: DeviceManifestSchemaMajorVersion (RO) [0, 4294967295]: 1 
      Integer: DeviceManifestSchemaMinorVersion (RO) [0, 4294967295]: 1 
      String: DeviceManifestPrimaryURL (RO): Local:---
      String: DeviceManifestSecondaryURL (RO): 
      Enumeration: DeviceTLType (RO) [GigEVision]: GigEVision
      Integer: DeviceTLVersionMajor (RO) [-9223372036854775808, 9223372036854775807]: 2 
      Integer: DeviceTLVersionMinor (RO) [-9223372036854775808, 9223372036854775807]: 0 
      Integer: DeviceTLVersionSubMinor (RO) [-9223372036854775808, 9223372036854775807]: 1 
      Integer: DeviceLinkSelector (RW) [0, 0]: 0 
      Integer: DeviceLinkSpeed (RO) [0, 536870911875000]: 125000000 Bps
      Enumeration: DeviceLinkHeartbeatMode (RW) [On Off]: On
      Float: DeviceLinkHeartbeatTimeout (RW) [500000, 1.2e+08]: 5e+06 us
      Integer: DeviceStreamChannelCount (RO) [0, 4294967295]: 3 
      Integer: DeviceStreamChannelSelector (RW) [0, 2]: 0 
      Integer: DeviceEventChannelCount (RO) [0, 4294967295]: 1 
      Command: DeviceReset (WO)
      Enumeration: DeviceTemperatureSelector (RW) [Mainboard]: Mainboard
      Float: DeviceTemperature (RO) [-3.40282e+38, 3.40282e+38]: 55.73 C
      Integer: Timestamp (RO) [0, 9223372036854775807]: 559449915290 ns
      Command: TimestampReset (WO)
      Command: TimestampLatch (WO)
      Integer: TimestampLatchValue (RO) [0, 9223372036854775807]: 0 ns
      Enumeration: UserDefinedValueSelector (RW) [Value1 Value2 Value3 Value4 Value5]: Value1
      Integer: UserDefinedValue (RW) [-2147483648, 2147483647]: 0 
    Category: SourceControl (RO)
      Integer: SourceCount (RO) [0, 4294967295]: 3 
      Enumeration: SourceSelector (RW) [Source0 Source1 Source2]: Source0
      Integer: SourceIDValue (RO) [0, 4294967295]: 0 
    Category: ImageFormatControl (RO)
      Integer: SensorWidth (RO) [0, 4294967295]: 2064 
      Integer: SensorHeight (RO) [0, 4294967295]: 1544 
      Enumeration: SensorDigitizationBits (RO) [Eight Ten Twelve]: Ten
      Integer: WidthMax (RO) [0, 4294967295]: 2048 
      Integer: HeightMax (RO) [0, 4294967295]: 1536 
      Integer: Width (RO) [16, 2048]: 2048 
      Integer: Height (RO) [8, 1536]: 1536 
      Integer: OffsetX (RO) [0, 0]: 0 
      Integer: OffsetY (RO) [0, 0]: 0 
      Enumeration: BinningHorizontalMode (RO) [Sum Average]: Sum
      Integer: BinningHorizontal (RO) [1, 2]: 1 
      Enumeration: BinningVerticalMode (RO) [Sum Average]: Sum
      Integer: BinningVertical (RO) [1, 2]: 1 
      Enumeration: PixelFormat (RO) [BayerRG8 BayerRG10 BayerRG10Packed BayerRG12 BayerRG12Packed]: BayerRG8
      Enumeration: TestPattern (RO) [Off GreyHorizontalRamp GreyVerticalRamp GreyHorizontalRampMoving HorizontalColorBar VerticalColorBar HorizontalColorBarMoving]: Off
    Category: AcquisitionControl (RO)
      Enumeration: AcquisitionMode (RO) [SingleFrame MultiFrame Continuous]: Continuous
      Command: AcquisitionStart (WO)
      Command: AcquisitionStop (WO)
      Integer: AcquisitionFrameCount (RO) [1, 65535]: 1 
      Float: AcquisitionFrameRate (RW) [0.125, 11.3389]: 3 Hz
      Enumeration: TriggerSelector (RW) [AcquisitionStart AcquisitionEnd FrameStart AcquisitionTransferStart]: AcquisitionStart
      Enumeration: TriggerMode (RO) [Off On]: Off
      Command: TriggerSoftware (WO)
      Enumeration: TriggerSource (RO) [PulseGenerator0 PulseGenerator1 PulseGenerator2 PulseGenerator3 UserOutput0 UserOutput1 UserOutput2 UserOutput3 Action0 Action1 Action2 Action3 Software Line4 Line5 Line6 Line10 Nand0Out Nand1Out]: Line4
      Enumeration: TriggerActivation (RO) [RisingEdge FallingEdge]: RisingEdge
      Enumeration: TriggerOverlap (RO) [Off ReadOut]: Off
      Float: TriggerDelay (RO) [0, 500000]: 0 us
      Enumeration: ExposureMode (RO) [Off Timed TriggerWidth]: Timed
      Float: ExposureTime (RW) [1, 332472]: 9229 us
      Enumeration: ExposureAuto (RW) [Off Once Continuous]: Off
      Enumeration: ExposureModeOption (RO) [Off RCT]: Off
      Enumeration: AcquisitionSyncMode (RO) [AsyncMode SyncMode]: SyncMode
    Category: AnalogControl (RO)
      Enumeration: GainSelector (RW) [AnalogAll DigitalRed DigitalBlue]: AnalogAll
      Float: Gain (RW) [1, 16]: 1 
      Enumeration: GainAuto (RW) [Off Once Continuous]: Off
      Enumeration: BlackLevelSelector (RW) [All Red Blue]: All
      Float: BlackLevel (RW) [-133, 255]: 0 
      Enumeration: BalanceWhiteAuto (RW) [Off Once Continuous Preset3200K Preset5000K Preset6500K Preset7500K]: Off
      Enumeration: AWBAreaSelector (RW) [LowRight LowMidRight LowMidLeft LowLeft MidLowRight MidLowMidRight MidLowMidLeft MidLowLeft MidHighRight MidHighMidRight MidHighMidLeft MidHighLeft HighRight HighMidRight HighMidLeft HighLeft]: LowRight
      Boolean: AWBAreaEnable (RW): 1
      Boolean: AWBAreaEnableAll (RW): 1
      Integer: AWBControlSpeed (RW) [1, 8]: 4 
      Enumeration: BalanceWhiteAutoResult (RO) [Idle Processing Converging Succeeded Error1 Error2 Error3 Error4 Error5]: Idle
      Float: Gamma (RW) [0.45, 1]: 0.45 
      Enumeration: LUTMode (RW) [Off Gamma LUT]: Off
    Category: AutoLevelControl (RO)
      Integer: ALCReference (RW) [30, 95]: 50 %
      Enumeration: ALCAreaSelector (RW) [LowRight LowMidRight LowMidLeft LowLeft MidLowRight MidLowMidRight MidLowMidLeft MidLowLeft MidHighRight MidHighMidRight MidHighMidLeft MidHighLeft HighRight HighMidRight HighMidLeft HighLeft]: LowRight
      Boolean: ALCAreaEnable (RW): 1
      Boolean: ALCAreaEnableAll (RW): 1
      Integer: ALCControlSpeed (RW) [1, 8]: 4 
      Enumeration: AutoControlStatus (RO) [Idle ProcessingExposureTime ProcessingGain ConvergingExposureTime ConvergingGain Error1 Error2]: Idle
      Float: ExposureAutoControlMin (RW) [100, 9228]: 100 
      Float: ExposureAutoControlMax (RW) [101, 332472]: 9229 
      Float: GainAutoControlMin (RW) [1, 15]: 1 
      Float: GainAutoControlMax (RW) [2, 16]: 16 
    Category: LUTControl (RO)
      Enumeration: LUTSelector (RW) [Red Green Blue]: Red
      Integer: LUTIndex (RW) [0, 256]: 0 
      Integer: LUTValue (RW) [0, 4095]: 0 
    Category: DigitalIOControl (RO)
      Enumeration: LineSelector (RW) [Line1 Line2 Line3 Line4 Line5 Line6 Line8 Line10 Nand0In1 Nand0In2 Nand1In1 Nand1In2 TimeStampReset]: Line1
      Enumeration: LineMode (RO) [Input Output InternalConnection]: Output
      Boolean: LineInverter (RW): 0
      Boolean: LineStatus (RO): 0
      Integer: LineStatusAll (RO) [0x0, 0xffffffff]: 0x0 
      Enumeration: LineSource (RW) [AcquisitionActive0 AcquisitionActive1 AcquisitionActive2 FrameActive0 FrameActive1 FrameActive2 ExposureActive0 ExposureActive1 ExposureActive2 FVAL0 FVAL1 FVAL2 LVAL0 LVAL1 LVAL2 AcquisitionTriggerWait0 AcquisitionTriggerWait1 AcquisitionTriggerWait2 FrameTriggerWait0 FrameTriggerWait1 FrameTriggerWait2 PulseGenerator0 PulseGenerator1 PulseGenerator2 PulseGenerator3 UserOutput0 UserOutput1 UserOutput2 UserOutput3 Line4 Line5 Line6 Line10 Nand0Out Nand1Out Low High]: Line4
      Enumeration: LineFormat (RO) [NoConnect TriState TTL LVDS RS422 OptoCoupled OpenDrain InternalSignal]: TTL
      Integer: OptInFilter (RW) [0, 1000000]: 0 ns
      Enumeration: UserOutputSelector (RW) [UserOutput0 UserOutput1 UserOutput2 UserOutput3]: UserOutput0
      Boolean: UserOutputValue (RW): 0
    Category: CounterAndTimerControl (RO)
      Enumeration: CounterSelector (RW) [Counter0 Counter1 Counter2 Counter3]: Counter0
      Enumeration: CounterEventSource (RW) [Off FrameTrigger]: Off
      Enumeration: CounterEventActivation (RO) [RisingEdge FallingEdge]: RisingEdge
      Command: CounterReset (WO)
      Integer: CounterValue (RO) [0, 4294967295]: 0 
      Enumeration: CounterStatus (RO) [CounterIdle CounterTriggerWait CounterActive CounterCompleted CounterOverflow]: CounterIdle
    Category: ActionControl (RO)
      Integer: ActionDeviceKey (WO) 
      Integer: ActionQueueSize (RO) [0, 4294967295]: 256 
      Integer: ActionSelector (RW) [0, 3]: 0 
      Integer: ActionGroupMask (RW) [0x0, 0xffffffff]: 0x0 
      Integer: ActionGroupKey (RW) [0x0, 0xffffffff]: 0x0 
    Category: EventControl (RO)
      Enumeration: EventSelector (RW) [Line1RisingEdge Line1FallingEdge Line2RisingEdge Line2FallingEdge Line3RisingEdge Line3FallingEdge Line4RisingEdge Line4FallingEdge Line5RisingEdge Line5FallingEdge Line6RisingEdge Line6FallingEdge Line8RisingEdge Line8FallingEdge Line10RisingEdge Line10FallingEdge Stream0AcquisitionTrigger Stream1AcquisitionTrigger Stream2AcquisitionTrigger Stream0FrameStart Stream1FrameStart Stream2FrameStart Stream0FrameEnd Stream1FrameEnd Stream2FrameEnd Stream0ExposureStart Stream1ExposureStart Stream2ExposureStart Stream0ExposureEnd Stream1ExposureEnd Stream2ExposureEnd]: Line1RisingEdge
      Enumeration: EventNotification (RW) [Off On]: Off
    Category: UserSetControl (RO)
      Enumeration: UserSetSelector (RW) [Default UserSet1 UserSet2 UserSet3]: Default
      Command: UserSetLoad (NA)
      Command: UserSetSave (NA)
    Category: SequencerControl (RO)
      Enumeration: SequencerMode (RO) [Off On]: Off
      Enumeration: SequencerModeSelect (RO) [TriggerSequencerMode CommandSequencerMode]: TriggerSequencerMode
      Integer: SequencerSetSelector (RW) [1, 128]: 1 
      Integer: SequencerWidth (RO) [16, 2048]: 2048 
      Integer: SequencerHeight (RO) [8, 1536]: 1536 
      Integer: SequencerOffsetX (RO) [0, 0]: 0 
      Integer: SequencerOffsetY (RO) [0, 0]: 0 
      Integer: SequencerBinningHorizontal (RO) [1, 2]: 1 
      Integer: SequencerBinningVertical (RO) [1, 2]: 1 
      Integer: SequencerFrameCount (RO) [1, 255]: 1 
      Float: SequencerExposureTime (RO) [1, 7.99914e+06]: 9229 us
      Float: SequencerGainAnalogAll (RO) [1, 16]: 1 
      Float: SequencerGainDigitalRed (RO) [0.447, 5.624]: 1 
      Float: SequencerGainDigitalBlue (RO) [0.447, 5.624]: 1 
      Float: SequencerBlackLevelAll (RO) [-133, 255]: 0 
      Boolean: SequencerLutEnable (RO): 0
      Integer: SequencerSetNext (RO) [0, 128]: 2 
      Integer: SequencerRepetition (RO) [1, 255]: 1 
      Integer: SequencerSetActive (RO) [1, 128]: 1 
      Integer: SequencerSetStart (RO) [1, 128]: 1 
      Integer: SequencerCommandIndex (RW) [1, 128]: 1 
      Command: SequencerReset (WO)
    Category: ChunkDataControl (RO)
      Boolean: ChunkModeActive (RO): 0
      Enumeration: ChunkSelector (RW) [OffsetX OffsetY Width Height BinningHorizontal BinningVertical PixelFormat Timestamp LineStatusAllOnExposureStart CounterValue ExposureTime Gain BlackLevel DeviceSerialNumber DeviceUserID DeviceTemperature]: OffsetX
      Boolean: ChunkEnable (RW): 0
      Register: ChunkImage (NA)
      Integer: ChunkOffsetX (NA) 
      Integer: ChunkOffsetY (NA) 
      Integer: ChunkWidth (NA) 
      Integer: ChunkHeight (NA) 
      Integer: ChunkBinningHorizontal (NA) 
      Integer: ChunkBinningVertical (NA) 
      Enumeration: ChunkPixelFormat (NA) 
      Integer: ChunkTimestamp (NA) 
      Integer: ChunkLineStatusAllOnExposureStart (NA) 
      Enumeration: ChunkCounterSelector (RW) [Counter0 Counter1 Counter2]: Counter0
      Integer: ChunkCounterValue (NA) 
      Float: ChunkExposureTime (NA) 
      Enumeration: ChunkGainSelector (RW) [AnalogAll DigitalRed DigitalBlue]: AnalogAll
      Float: ChunkGain (NA) 
      Enumeration: ChunkBlackLevelSelector (RW) [All Red Blue]: All
      Float: ChunkBlackLevel (NA) 
      String: ChunkDeviceSerialNumber (NA): 
      String: ChunkDeviceUserID (NA): 
      Enumeration: ChunkDeviceTemperatureSelector (RW) [Mainboard]: Mainboard
      Float: ChunkDeviceTemperature (NA) 
    Category: TestControl (RO)
      Integer: TestPendingAck (RW) [0, 4294967295]: 0 ms
    Category: TransportLayerControl (RO)
      Integer: PayloadSize (RO) [0, 4294967295]: 3145728 B
      Category: GigEVision (RO)
        Enumeration: GevPhysicalLinkConfiguration (RW) [SingleLink]: SingleLink
        Enumeration: GevSupportedOptionSelector (RW) [SingleLink MultiLink StaticLAG DynamicLAG PAUSEFrameReception PAUSEFrameGeneration IPConfigurationLLA IPConfigurationDHCP IPConfigurationPersistentIP StreamChannelSourceSocket StandardIDMode MessageChannelSourceSocket CommandsConcatenation WriteMem PacketResend Event EventData PendingAck IEEE1588 Action UnconditionalAction ScheduledAction PrimaryApplicationSwitchover ExtendedStatusCodes ExtendedStatusCodesVersion2_0 DiscoveryAckDelay DiscoveryAckDelayWritable TestData ManifestTable CCPApplicationSocket LinkSpeed HeartbeatDisable SerialNumber UserDefinedName StreamChannelBigAndLittleEndian StreamChannelIPReassembly StreamChannelMultiZone StreamChannelPacketResendDestination StreamChannelAllInTransmission StreamChannelUnconditionalStreaming StreamChannelExtendedChunkData]: SingleLink
        Boolean: GevSupportedOption (RO): 1
        Integer: GevInterfaceSelector (RW) [0, 0]: 0 
        Integer: GevMACAddress (RO) [0:0:0:0:0:0, ff:ff:ff:ff:ff:ff]: 0:c:df:a:6d:f6 
        Boolean: GevPAUSEFrameReception (RW): 1
        Boolean: GevPAUSEFrameTransmission (RW): 1
        Boolean: GevCurrentIPConfigurationLLA (RW): 1
        Boolean: GevCurrentIPConfigurationDHCP (RW): 1
        Boolean: GevCurrentIPConfigurationPersistentIP (RW): 1
        Integer: GevCurrentIPAddress (RO) [0, 4294967295]: 2852044215 
        Integer: GevCurrentSubnetMask (RO) [0, 4294967295]: 4294901760 
        Integer: GevCurrentDefaultGateway (RO) [0, 4294967295]: 3232235521 
        Enumeration: GevIPConfigurationStatus (RO) [None PersistentIP DHCP LLA ForceIP]: PersistentIP
        Integer: GevPersistentIPAddress (RW) [0, 4294967295]: 2852044215 
        Integer: GevPersistentSubnetMask (RW) [0, 4294967295]: 4294901760 
        Integer: GevPersistentDefaultGateway (RW) [0, 4294967295]: 3232235521 
        Integer: InterPacketGap (RO) [0, 65535]: 0 
        Integer: NetworkThroughputSafetyMargin (RO) [10, 100]: 100 %
        Boolean: GevIEEE1588 (RW): 0
        Enumeration: GevIEEE1588ClockAccuracy (RO) [Within25ns Within100ns Within250ns Within1us Within2p5u Within10us Within25us Within100us Within250us Within1ms Within2p5ms Within10ms Within25ms Within100ms Within250ms Within1s Within10s GreaterThan10s AlternatePTPProfile Unknown Reserved]: Unknown
        Enumeration: GevIEEE1588Status (RO) [Initializing Faulty Disabled Listening PreMaster Master Passive Uncalibrated Slave]: Disabled
        Enumeration: GevGVCPExtendedStatusCodesSelector (RW) [Version1_1 Version2_0]: Version1_1
        Boolean: GevGVCPExtendedStatusCodes (RW): 0
        Boolean: GevGVCPPendingAck (RW): 0
        Enumeration: GevGVSPExtendedIDMode (RO) [Off On]: On
        Enumeration: GevCCP (RW) [OpenAccess ExclusiveAccess ControlAccess]: ControlAccess
        Integer: GevPrimaryApplicationSocket (RO) [0, 4294967295]: 57656 
        Integer: GevPrimaryApplicationIPAddress (RO) [0, 4294967295]: 2852044086 
        Integer: GevMCPHostPort (RO) [0, 4294967295]: 47981 
        Integer: GevMCDA (RO) [0, 4294967295]: 2852044086 
        Integer: GevMCSP (RO) [0, 4294967295]: 54125 
        Integer: GevStreamChannelSelector (RW) [0, 2]: 0 
        Integer: GevSCPHostPort (RO) [0, 65535]: 54178 
        Boolean: GevSCPSFireTestPacket (RO): 1
        Boolean: GevSCPSDoNotFragment (RO): 1
        Integer: GevSCPSPacketSize (RO) [1476, 16366]: 8976 B
        Integer: GevSCPD (RO) [0, 1108153]: 0 
        Integer: GevSCDA (RO) [0, 4294967295]: 2852044086 
        Integer: GevSCSP (RO) [0, 4294967295]: 49408 
      Category: NetworkStatistics (RO)
        Category: oMACControlFunctionEntity (RO)
          Integer: aPAUSEMACCtrlFramesReceived (RO) [0, 4294967295]: 3742 
    Category: PulseGenerator (RO)
      Integer: ClockPreScaler (RW) [1, 4096]: 100 
      Float: PulseGeneratorClock (RW) [0.0244141, 100]: 1 MHz
      Enumeration: PulseGeneratorSelector (RW) [PulseGenerator0 PulseGenerator1 PulseGenerator2 PulseGenerator3]: PulseGenerator0
      Integer: PulseGeneratorLength (RW) [1, 1048575]: 30000 
      Float: PulseGeneratorLengthMs (RW) [0.001, 1048.58]: 30 ms
      Float: PulseGeneratorFrequency (RW) [0.953676, 1e+06]: 33.3333 Hz
      Integer: PulseGeneratorStartPoint (RW) [0, 1048575]: 0 
      Float: PulseGeneratorStartPointMs (RW) [0, 1048.58]: 0 ms
      Integer: PulseGeneratorEndPoint (RW) [1, 1048575]: 15000 
      Float: PulseGeneratorEndPointMs (RW) [0.001, 1048.58]: 15 ms
      Float: PulseGeneratorPulseWidth (RO) [-1.79769e+308, 1.79769e+308]: 15 ms
      Integer: PulseGeneratorRepeatCount (RW) [0, 255]: 0 
      Enumeration: PulseGeneratorClearActivation (RW) [Off RisingEdge FallingEdge LevelHigh LevelLow]: Off
      Enumeration: PulseGeneratorClearSource (RW) [AcquisitionActive0 AcquisitionActive1 AcquisitionActive2 FrameActive0 FrameActive1 FrameActive2 ExposureActive0 ExposureActive1 ExposureActive2 AcquisitionTriggerWait0 AcquisitionTriggerWait1 AcquisitionTriggerWait2 FrameTriggerWait0 FrameTriggerWait1 FrameTriggerWait2 PulseGenerator1 PulseGenerator2 PulseGenerator3 UserOutput0 UserOutput1 UserOutput2 UserOutput3 Line4 Line5 Line6 Line10 Nand0Out Nand1Out]: Line4
      Enumeration: PulseGeneratorClearSyncMode (RW) [AsyncMode SyncMode]: AsyncMode
    Category: Shading (RO)
      Enumeration: ShadingCorrectionMode (RW) [FlatShading ColorShading]: FlatShading
      Enumeration: ShadingMode (RW) [Off User1 User2 User3]: Off
      Command: PerformShadingCalibration (WO)
      Enumeration: ShadingDetectResult (RO) [Idle Succeeded Error1 Error2 Error3 Error4]: Idle
    Category: Correction (RO)
      Enumeration: VideoProcessBypassMode (RO) [Off On]: Off
    Category: BlemishControl (RO)
      Boolean: BlemishEnable (RW): 1
      Command: BlemishDetect (WO)
      Integer: BlemishDetectThreshold (RW) [1, 100]: 10 %
      Command: BlemishStore (WO)
      Integer: BlemishCompensationIndex (RW) [1, 1736]: 1 
      Integer: BlemishCompensationPositionX (RW) [-1, 2047]: -1 
      Integer: BlemishCompensationPositionY (RW) [-1, 1535]: -1 
      Command: BlemishCompensationDataClear (WO)
      Integer: BlemishCompensationNumber (RO) [0, 1736]: 0 
    Category: MultiRoiControl (RO)
      Enumeration: MultiRoiMode (RO) [Off On]: Off
      Integer: MultiRoiIndex (RW) [0, 7]: 0 
      Integer: MultiRoiWidth (RO) [16, 2048]: 256 
      Integer: MultiRoiHeight (RO) [8, 1536]: 192 
      Integer: MultiRoiOffsetX (RO) [0, 1792]: 0 
      Integer: MultiRoiOffsetY (RO) [0, 1344]: 0 
      Integer: MultiRoiHorizontalEnableNumber (RO) [1, 8]: 1 
      Integer: MultiRoiVerticalEnableNumber (RO) [1, 8]: 1 
    Category: FileAccessControl (RO)
      Enumeration: FileSelector (RW) [UpdatePackage]: UpdatePackage
      Enumeration: FileOperationSelector (RW) [Open Close Read Write Delete]: Open
      Command: FileOperationExecute (NA)
      Enumeration: FileOperationStatus (RO) [Success Failure]: Success
      Integer: FileOperationResult (RO) [0, 4294967295]: 0 
      Integer: FileAccessOffset (RW) [0, 4294967295]: 0 B
      Integer: FileAccessLength (RW) [0, 4294967295]: 0 B
      Enumeration: FileOpenMode (RW) [Read Write ReadWrite]: Read
      Integer: FileSize (RO) [0, 4294967295]: 0 B
      Register: FileAccessBuffer (RW)
    Category: FWUpdateControl (RO)
      Command: UpdateCommand (RO)
      Boolean: FWUpdateEnable (RW): 0

It also explains how to do that in JAI eBUS Player here (page:27) : https://www.stemmer-imaging.com/media/uploads/cameras/jai/15/159906-JAI-FS-3200T-10GE-NNC-Manual.pdf

Any help is appreciated. Thank you!

@heikohimu
Copy link
Contributor

Thanks for posting the camera parameters. The camera offers images on different streams (i.e. DeviceStreamChannelCount is 3). This is the first camera that I see that uses multiple streams. In the rc_genicam_camera package, it is hard coded to expect only one stream and publish images from the first stream (see

). You would need to extend that to open all streams and publish the images on different topics, preferably using different threads.

I guess configuration of parameters for the different streams works by changing the value of DeviceStreamChannelSelector. Then the parameters like PixelFormat would be parameters of the selected stream. That can all be done in the configuration file as it is.

@ilgazaskin
Copy link
Author

Hi heikohimu,

Thank you for the reply.

Unfortunately, changing DeviceStreamChannelSelector to 1 or 2 doesn't work. The steps I do in the eBusPlayer GUI for changing the sensor is below:

  1. Read and copy GevSCPHostPort and GevSCDA values while GevStreamChannelSelector is 0.
  2. Change the GevStreamChannelSelector value to 1.
  3. Paste GevSCPHostPort and GevSCDA values while GevStreamChannelSelector is 1.
  4. Go back to GevStreamChannelSelector=0 and put zero on GevSCPHostPort and GevSCDA values while GevStreamChannelSelector is 0.

In this way, I can see the Sensor1 image in the player. Now, I'm thinking to modify the configuration file with these steps. Is there any command to say "read" GevSCPHostPort value somehow in the configuration file instead of writing directly integer?

An example of a config file in my mind:

GevStreamChannelSelector=1
GevSCPHostPort=read(GevSCPHostPort)
GevSCDA=read(GevSCDA)
GevStreamChannelSelector=0
GevSCPHostPort=0
GevSCDA=0.0.0.0

@heikohimu
Copy link
Contributor

No, the config file is meant to apply values before streaming images. But you could script that on the command line with gc_info if the camera keeps the settings between sessions, e.g.:

gc_info <sensor_id>?GevSCPHostPort GevStreamChannelSelector=0 => extract last part into variable VALUE_PORT
gc_info <sensor_id>?GevSCDA => extract last part into variable VALUE_SCDA
gc_info <sensor_id> GevStreamChannelSelector=1 GevSCPHostPort=$VALUE_PORT GevSCDA=$VALUE_SCDA
 GevStreamChannelSelector=0 GevSCPHostPort=0 GevSCDA=0.0.0.0

@ilgazaskin
Copy link
Author

Hi Heikohimu,

Thanks for the support. However, for changing the sensor, I somehow connect to the device (to get the port) but stop the acquisition to change the values. I'm launching the camera in ROS. Then I execute the command:
rosservice call /jai_camera/set_genicam_parameter 'AcquisitionStop'
Everything works fine up to now, I can also get desired values by:

rosservice call /jai_camera/get_genicam_parameter GevSCDA
rosservice call /jai_camera/get_genicam_parameter GevSCPHostPort

But when I want to write these values, I get:

return_code: 
  value: -1
  message: "Feature not writable: GevSCDA"

I also checked with gc_info and these values are turning to (RO) when I launch the camera.

Is there any way to write on these values while the camera is still working but the acquisition is stopped?

@heikohimu
Copy link
Contributor

Only one application is permitted to set GenICam parameters. Others may only read them. If you cannot change the values in one application (i.e. gc_info) and then afterwards stream in another (i.e. ROS driver), then you need to change the ROS driver to make the changes itself.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants