598 Commits

Author SHA1 Message Date
yair
c95178829a ommit tests 2025-11-16 05:32:17 +02:00
yair
50f2b370d3 launch script with get//set 2025-11-16 05:28:37 +02:00
yair
19f8e1d02e with crop 2025-11-16 05:24:38 +02:00
yair
fe6312e484 add get all by default 2025-11-16 05:21:25 +02:00
yair
bc12e0ea13 Fix property getters to query hardware state instead of cached values
- PROP_AUTO_EXPOSURE now queries hardware using IS_GET_ENABLE_AUTO_SHUTTER
- PROP_AUTO_GAIN now queries hardware using IS_GET_ENABLE_AUTO_GAIN
- PROP_GAIN_BOOST now queries hardware using IS_GET_GAINBOOST

This ensures each camera reports its actual hardware state rather than
a shared cached value when properties are queried via camera_control.py
2025-11-16 05:21:09 +02:00
yair
b62451d80f Add IS_GET_GAINBOOST support to IDS uEye plugin
- Add gain-boost property to gstidsueyesrc (boolean)
- Implement is_SetGainBoost() API call in property setter and framerate/exposure function
- Add UDP control commands SET_GAIN_BOOST and GET_GAIN_BOOST
- Add --gain-boost command-line flag to launch-ids.py
- Update camera_control.py with get-gain-boost and set-gain-boost commands
- Change parameter defaults to None (exposure, framerate, gain) to respect INI file defaults
- Only set properties when explicitly provided by user - INI file is source of truth
2025-11-16 04:58:17 +02:00
yair
48f669f5c8 feat(idsueye): Add exposure range validation and query support
- Query camera's actual exposure range before setting exposure time
- Validate and clamp exposure values to supported min/max limits
- Log detailed information about range, requested vs actual values
- Add GET_EXPOSURE_RANGE command to UDP control interface
- Update Python control scripts with exposure range query support

This prevents IS_INVALID_EXPOSURE_TIME errors and ensures values are
always within the camera's capabilities. The exposure range varies by
framerate and sensor configuration.
2025-11-16 04:37:09 +02:00
yair
43878b36e2 add auto gain 2025-11-16 04:05:26 +02:00
yair
6654b99eab added auto exposure 2025-11-16 04:00:14 +02:00
yair
acbd8ec416 Add gain control support to IDS uEye camera driver
- Added 'gain' property to gstidsueyesrc element (0-100, 0=auto)
- Implemented hardware gain control using is_SetHardwareGain() API
- Added --gain/-g command-line argument to launch-ids.py
- Added SET_GAIN and GET_GAIN UDP control commands
- Updated STATUS command to include gain value
- Added get-gain and set-gain commands to camera_control.py test client
- Gain can be set at startup or adjusted dynamically during runtime
2025-11-16 03:54:29 +02:00
yair
e09938a5a1 ignore demos 2025-11-16 03:37:37 +02:00
yair
497ea26aa7 fix exposure limits 2025-11-16 03:37:26 +02:00
yair
00df62c305 Improve IDS uEye error handling with comprehensive error code mapping
- Replaced garbled is_GetError() output with human-readable error messages
- Added error code mapping for 25+ common IDS errors from uEye.h
- Enhanced camera initialization with detailed logging and context
- Error messages now include error code, name, description, and troubleshooting hints
- Added information about device/camera ID attempted and available camera count
- Example: Error 3 now shows 'IS_CANT_OPEN_DEVICE (3): Cannot open device - check if camera is connected and not in use. Camera/Device ID used: 99, Available cameras: 2'

Fixes issue where camera initialization failures showed cryptic characters instead of useful error information.
2025-11-16 03:25:33 +02:00
yair
cf0d7e14f1 ueye includes from 49.3.0 2025-11-16 03:24:41 +02:00
yair
8880dbf3cf Add display option and device-id support to launch-ids.py
- Added --display option for 1/4 sized preview window using autovideosink
- Added --camera-id and --device-id options for camera selection
- Added UDP control commands: SET_CAMERA_ID, GET_CAMERA_ID, SET_DEVICE_ID, GET_DEVICE_ID
- Updated GStreamer idsueyesrc element to support device-id property
- device-id uses IS_USE_DEVICE_ID flag for system enumeration
- camera-id continues to use user-definable ID (0 for first found)
- Updated STATUS command to include camera_id and device_id
2025-11-16 03:19:42 +02:00
yair
245f26e069 script name changed 2025-11-16 02:57:30 +02:00
yair
9051fe182a feat: add comprehensive IDS uEye camera control script
- Add full-featured launch-ids.py with command-line argument parsing
- Implement UDP control server for dynamic exposure/framerate adjustment
- Support configurable video streaming (UDP) with optional display preview
- Add exposure control in milliseconds (1.0-1000.0ms, default 10ms)
- Add framerate control (1-20200 Hz, default 750Hz)
- Include video cropping, queue configuration, and verbose/quiet modes
- Integrate argcomplete for tab completion support
- Add comprehensive error handling and validation
- Support custom camera configuration files
- Enable tee-based pipeline for simultaneous UDP streaming and display

Provides complete camera control interface with both CLI configuration
and runtime UDP control for exposure/framerate adjustments.
2025-11-16 02:36:11 +02:00
yair
487c755975 feat: add command-line parameter support to test_exposure_control.py
- Add argparse for individual get/set operations
- Support commands: get-exposure, set-exposure, get-framerate, set-framerate, status
- Add 'test' command to run full test suite (preserves original functionality)
- Show help when no parameters provided
- Add optional tab completion support with argcomplete
- Maintain backward compatibility with existing test functionality

Usage examples:
  python scripts/test_exposure_control.py                    # Show help
  python scripts/test_exposure_control.py test               # Run full test suite
  python scripts/test_exposure_control.py get-exposure       # Get current exposure
  python scripts/test_exposure_control.py set-exposure 10    # Set exposure to 10ms
  python scripts/test_exposure_control.py status             # Get pipeline status
2025-11-16 02:35:10 +02:00
yair
193244e9a3 Here's a commit message for the changes to [scripts/launch-ids.py](scripts/launch-ids.py):
```
fix(launch-ids): fix videocrop element error and enhance startup output

- Fix GstAddError caused by duplicate pipeline.add(videocrop) call
  The videocrop element was being added to the pipeline twice: once
  explicitly when crop was enabled, and again in the element linking loop.
  Removed the duplicate add operation.

- Enhance startup configuration display
  Display all configured parameters at startup in a formatted summary:
  * Camera config file path
  * Exposure time (ms)
  * Framerate (Hz)
  * Crop settings (pixels or disabled)
  * Queue buffer size (if configured)
  * Video stream destination (UDP host:port)
  * Control server port (or disabled status)
  * Complete pipeline description

The output is now formatted with separators and aligned labels for
better readability, making it easier to verify settings at startup.
```
2025-11-16 02:20:12 +02:00
yair
083cd86702 fix: correct exposure units from seconds to milliseconds
- Update idsueyesrc exposure property to use milliseconds (per gst-inspect)
- Fix default exposure value from 0.016 to 10ms
- Update validation range to 1.0-1000.0ms in control server
- Correct all documentation and examples in UDP_CONTROL_PROTOCOL.md
- Update test_exposure_control.py to use millisecond values

Resolves unit mismatch between documented seconds and actual milliseconds
expected by the idsueyesrc GStreamer element.
2025-11-16 01:58:36 +02:00
yair
d06a770aa4 docs: merge UDP control protocol and add script documentation to network guide
- Added documentation for launch-ids.py (Python-based camera control)
- Added documentation for test_exposure_control.py (UDP control testing)
- Added documentation for visualize_line_realtime.py (real-time visualization)
- Merged UDP_CONTROL_PROTOCOL.md content into network_guide.md
- Includes architecture diagrams, command reference, client examples
- Complete end-to-end guide for camera control and monitoring
2025-11-15 14:10:27 +02:00
yair
fd651e3cf9 rm wokflows 2025-11-15 14:02:51 +02:00
yair
fef3f0baad Add UDP control protocol and IDS camera scripts
- Added UDP_CONTROL_PROTOCOL.md documenting the UDP control interface
- Added launch-ids.py for IDS camera control
- Added test_exposure_control.py for testing exposure settings
- Added udp_backup.reg for UDP configuration backup
- Added visualize_line_realtime.py for real-time visualization
- Updated .gitignore and ROLLINGSUM_GUIDE.md
- Removed ini/200fps-2456x4pix-cw.ini configuration file
2025-11-15 14:00:36 +02:00
yair
743bfb8323 Decouple display and recording in recv_raw_rolling.py
- Add --record-fps parameter for independent recording frame rate control
- Separate display and recording buffers (display_buffer_obj, record_buffer_obj)
- Enable recording without display and vice versa
- Independent throttling for display and recording operations
- Improve code organization and cleanup handling
2025-11-15 00:48:09 +02:00
yair
d3ee5d998e Fix image orientation in recv_raw_rolling.py - correct 180deg rotation and flip 2025-11-15 00:35:49 +02:00
yair
bdb89b2632 Add UDP traffic analysis tools for GStreamer video debugging 2025-11-14 19:52:11 +02:00
yair
3a799c0a65 Adapt pipeline to transmit single line (2456x1) instead of 2456x4
- Modified recv_raw_rolling.py to handle 2456x1 BGR line format
- Fixed display dimensions (2456 tall x 800 wide)
- Updated 200fps-2456x4pix-cw.ini to start at Y=500
- Added detailed single line transmission docs to network_guide.md
- Updated README.md with quick start example using videocrop
2025-11-14 19:32:14 +02:00
yair
3349050849 Fix IDS uEye AOI issue with non-zero Y offset
- Re-validate AOI configuration before starting video capture
- Fixes 'Invalid buffer size' error when using Start Y > 0
- Query current AOI and re-set it to force SDK internal state update
- Tested with Start Y=0 and Start Y=500 - both work correctly
2025-11-14 19:11:55 +02:00
yair
8c650dde33 Optimize recv_raw_rolling.py: NumPy indexing, display throttling, and MJPEG recording
- Replace cv2.rotate() with NumPy array indexing for 2x+ speedup
- Add --display-fps argument to throttle display refresh while capturing all UDP frames
- Add --save-mjpeg argument to record rolling display to MJPEG video
- Fix display throttling to capture all frames while only refreshing display at specified rate
- Performance: ~300 FPS no-display, ~100 FPS full display, 150-250+ FPS with throttling
2025-11-14 18:27:56 +02:00
yair
e16d36128b Optimize recv_raw_rolling.py: NumPy indexing, display throttling, and MJPEG recording
- Replace cv2.rotate() with NumPy array indexing for 2x+ speedup
- Add --display-fps argument to throttle display refresh while capturing all UDP frames
- Add --save-mjpeg argument to record rolling display to MJPEG video
- Fix display throttling to capture all frames while only refreshing display at specified rate
- Performance: ~300 FPS no-display, ~100 FPS full display, 150-250+ FPS with throttling
2025-11-14 18:27:06 +02:00
yair
fa3dbdef38 opencv optional (100fps max) 2025-11-14 18:10:52 +02:00
yair
25f32bf8e9 go test (no udp limit) 2025-11-14 18:03:44 +02:00
yair
581d0ce7ae go test (no udp limit) 2025-11-14 18:03:35 +02:00
yair
76626278ca rolling optimize 2025-11-14 18:03:15 +02:00
yair
64e4803df3 add stats for drops 2025-11-14 17:27:19 +02:00
yair
4856248bc5 with netwrok 2025-11-14 17:17:02 +02:00
yair
e58e2319a3 dot stuff 2025-11-14 17:11:18 +02:00
yair
4d35d16c72 udp 2025-11-14 17:00:20 +02:00
yair
2699913e92 rolling 2025-11-14 16:29:31 +02:00
yair
72e7091c61 rolling 2025-11-14 16:18:27 +02:00
yair
94f7c04dc6 Fix recv_raw_column.py height mismatch and update script paths in docs
- Fixed HEIGHT from 480 to 640 to match actual videotestsrc output
- Added DEBUG flag to control debug output visibility
- Added cv2.namedWindow() for proper window initialization
- Updated all Python script references in markdown files to scripts/ folder
- Updated network_guide.md with correct frame dimensions and Python receiver option
2025-11-14 15:33:17 +02:00
yair
ee4fd76e13 rem unused lic 2025-11-14 15:01:03 +02:00
yair
1c7ca124b1 del 2025-11-14 15:00:05 +02:00
yair
cb1e5c7607 docs: convert bash commands to PowerShell and merge ROLLINGSUM docs
- Updated all commands in README.md and ROLLINGSUM_GUIDE.md to use PowerShell syntax
- Changed line continuation from backslash (\) to backtick ()
- Updated environment variable syntax to PowerShell format ()
- Merged DESIGN_ROLLINGSUM.md into ROLLINGSUM_GUIDE.md for comprehensive documentation
- Combined user guide with technical design details in single document
- Added table of contents and improved organization
2025-11-14 14:58:39 +02:00
yair
d0467aaf65 converted cli to pwsh 2025-11-14 14:55:05 +02:00
yair
44083222ee refactor: Output analysis results to results/debug directory
- Update analyze_sma.py to save files to results/debug/
- Add timestamp to archived CSV and plot files
- Update .gitignore to exclude results/ directory
- Update ROLLINGSUM_GUIDE.md with new output locations
2025-11-14 14:34:58 +02:00
yair
c783de425a feat: Add CSV logging and analysis tools for rollingsum plugin
- Add csv-file property to log frame statistics
- Create analyze_sma.py for automated CSV analysis with visualizations
- Add comprehensive ROLLINGSUM_GUIDE.md documentation
- Include debugging guide and threshold recommendations
- Uses uv for Python dependency management
2025-11-14 14:21:40 +02:00
yair
ab242739f9 fixed exposure missing 2025-11-14 12:33:04 +02:00
yair
32a0674b6c Unify build process with PowerShell script and update documentation
- Created build.ps1 to merge batch files with auto-copy to GST_PLUGIN_PATH
- Updated README.md to focus on IDS uEye and rollingsum plugins only
- Removed outdated batch files (build_idsueye_only.bat, build_idsueye_and_rollingsum.bat)
- Removed unused build files (set_paths_and_run_cmake.bat, CMakeLists_idsueye_only.txt)
- Updated .gitignore for build artifacts and plugin directory
2025-11-14 11:30:10 +02:00
yair
69dcea025e Add rollingsum filter for frame analysis based on column mean deviation
- Implements GStreamer element that analyzes pixel columns
- Drops frames when column mean deviates from rolling baseline
- Configurable window size, column index, stride, and threshold
- Includes design documentation and build script
- Tested successfully with IDS uEye camera source
2025-11-14 03:44:54 +02:00