239 lines
9.4 KiB
Markdown
239 lines
9.4 KiB
Markdown
# The Imaging Source
|
|
Equipment from The Imaging Source is currently being evaluated.
|
|
|
|
* https://www.theimagingsource.com
|
|
|
|
|
|
# Sensors
|
|
|
|
DMK 33UX174
|
|
|
|
* https://www.theimagingsource.com/products/industrial-cameras/usb-3.0-monochrome/dmk33ux174/
|
|
|
|
|
|
# Lenses
|
|
V5014-MP
|
|
|
|
F1.4 version of lens listed here (e.g. V5024-MPZ which is F2.4)
|
|
|
|
* https://www.theimagingsource.com/products/optics/lenses/high-end/
|
|
|
|
|
|
# Documentation
|
|
User documentation for The Imaging Source Linux libraries.
|
|
`tiscamera`:
|
|
* https://www.theimagingsource.com/documentation/tiscamera/
|
|
|
|
|
|
# Source Code
|
|
Code is available under libre licenses.
|
|
The Imaging Source tends to use the Apache license for their files.
|
|
|
|
The Linux SDK for The Imaging Source cameras
|
|
* https://github.com/TheImagingSource/tiscamera
|
|
|
|
Programming samples in Python and C++ for the tiscamera GStreamer modules.
|
|
* https://github.com/TheImagingSource/Linux-tiscamera-Programming-Samples
|
|
|
|
Source code to the flasher is libre, but the code it flashes to the
|
|
cameras is proprietary, afaict.
|
|
|
|
Linux USB Firmware Update Tool
|
|
* https://github.com/TheImagingSource/tcam-firmware-update
|
|
|
|
|
|
# Build
|
|
Build tools thusly.
|
|
|
|
**XXX NOTE XXX**
|
|
|
|
The first process may involve some non-libre files.
|
|
Further investigation is needed. After compile, see:
|
|
|
|
`./build/src/v4l2/CMakeFiles/tcam-backend-v4l2.dir`
|
|
|
|
The second process listed below may avoid the blobs.
|
|
|
|
```
|
|
git clone https://github.com/TheImagingSource/tiscamera
|
|
cd tiscamera
|
|
# Review command, runs with sudo:
|
|
./scripts/dependency-manager install
|
|
mkdir build
|
|
cd build/
|
|
cmake -DTCAM_BUILD_ARAVIS=ON -DTCAM_BUILD_TOOLS=ON -DTCAM_BUILD_V4L2=ON \
|
|
-DTCAM_BUILD_LIBUSB=ON -DTCAM_BUILD_DOCUMENTATION=ON ..
|
|
# The following will potentially download some non-libre `.o` files.
|
|
make
|
|
# The following will potentially install some non-libre `.o` files.
|
|
sudo make install
|
|
```
|
|
|
|
Perhaps to avoid the non-free bits and keep the final installation
|
|
libre, it could be done something like this:
|
|
|
|
```
|
|
git clone https://github.com/TheImagingSource/tiscamera
|
|
cd tiscamera
|
|
# Review command, runs with sudo:
|
|
./scripts/dependency-manager install
|
|
mkdir build
|
|
cd build/
|
|
cmake -DTCAM_BUILD_ARAVIS=ON -DTCAM_BUILD_TOOLS=ON -DTCAM_BUILD_V4L2=ON \
|
|
-DTCAM_BUILD_LIBUSB=ON -DTCAM_BUILD_DOCUMENTATION=ON ..
|
|
# The following will potentially download some non-libre `.o` files.
|
|
make
|
|
sudo mkdir -p /usr/share/theimagingsource/tiscamera/uvc-extension/
|
|
sudo cp ./data/uvc-extensions/usb33.json /usr/share/theimagingsource/tiscamera/uvc-extension/
|
|
sudo cp ./build/data/udev/80-theimagingsource-cameras.rules /etc/udev/rules.d/
|
|
sudo cp ./build/bin/tcam-gigetool /usr/bin/
|
|
sudo cp ./build/bin/tcam-uvc-extension-loader /usr/bin/
|
|
```
|
|
|
|
|
|
# stvid
|
|
Works with `stvid` and a configuration snippet like this:
|
|
|
|
```
|
|
[Camera]
|
|
camera_type = CV2
|
|
|
|
[CV2]
|
|
device_id = 0
|
|
nx = 1920
|
|
ny = 1080
|
|
nframes = 250
|
|
```
|
|
|
|
# Hardware Info
|
|
This is the output from `v4l2-ctl --all`.
|
|
|
|
```
|
|
Driver Info:
|
|
Driver name : uvcvideo
|
|
Card type : DMK 33UX174
|
|
Bus info : usb-0000:00:14.0-5
|
|
Driver version : 5.18.16
|
|
Capabilities : 0x84a00001
|
|
Video Capture
|
|
Metadata Capture
|
|
Streaming
|
|
Extended Pix Format
|
|
Device Capabilities
|
|
Device Caps : 0x04200001
|
|
Video Capture
|
|
Streaming
|
|
Extended Pix Format
|
|
Media Driver Info:
|
|
Driver name : uvcvideo
|
|
Model : DMK 33UX174
|
|
Serial : 30220539
|
|
Bus info : usb-0000:00:14.0-5
|
|
Media version : 5.18.16
|
|
Hardware revision: 0x00000000 (0)
|
|
Driver version : 5.18.16
|
|
Interface Info:
|
|
ID : 0x03000002
|
|
Type : V4L Video
|
|
Entity Info:
|
|
ID : 0x00000001 (1)
|
|
Name : DMK 33UX174
|
|
Function : V4L2 I/O
|
|
Flags : default
|
|
Pad 0x01000007 : 0: Sink
|
|
Link 0x02000010: from remote pad 0x100000a of entity 'Extension 3' (Video Pixel Formatter): Data, Enabled, Immutable
|
|
Priority: 2
|
|
Video input : 0 (Camera 1: ok)
|
|
Format Video Capture:
|
|
Width/Height : 1920/1080
|
|
Pixel Format : 'Y16 ' (16-bit Greyscale)
|
|
Field : None
|
|
Bytes per Line : 3840
|
|
Size Image : 4147200
|
|
Colorspace : sRGB
|
|
Transfer Function : Default (maps to sRGB)
|
|
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
|
|
Quantization : Default (maps to Full Range)
|
|
Flags :
|
|
Crop Capability Video Capture:
|
|
Bounds : Left 0, Top 0, Width 1920, Height 1080
|
|
Default : Left 0, Top 0, Width 1920, Height 1080
|
|
Pixel Aspect: 1/1
|
|
Selection Video Capture: crop_default, Left 0, Top 0, Width 1920, Height 1080, Flags:
|
|
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 1920, Height 1080, Flags:
|
|
Streaming Parameters Video Capture:
|
|
Capabilities : timeperframe
|
|
Frames per second: 30.000 (30/1)
|
|
Read buffers : 0
|
|
|
|
User Controls
|
|
|
|
brightness 0x00980900 (int) : min=0 max=511 step=1 default=240 value=151
|
|
gamma 0x00980910 (int) : min=1 max=500 step=1 default=100 value=126
|
|
gain 0x00980913 (int) : min=0 max=480 step=1 default=0 value=23
|
|
|
|
Camera Controls
|
|
|
|
auto_exposure 0x009a0901 (menu) : min=0 max=3 default=3 value=1 (Manual Mode)
|
|
1: Manual Mode
|
|
3: Aperture Priority Mode
|
|
exposure_time_absolute 0x009a0902 (int) : min=1 max=300000 step=1 default=3 value=1
|
|
exposure_time_us 0x0199e201 (int) : min=20 max=30000000 step=1 default=333 value=20
|
|
auto_shutter 0x0199e202 (bool) : default=1 value=0
|
|
auto_exposure_reference 0x0199e203 (int) : min=0 max=255 step=1 default=128 value=117
|
|
gain_auto 0x0199e205 (bool) : default=1 value=0
|
|
trigger_mode 0x0199e208 (bool) : default=0 value=0
|
|
software_trigger 0x0199e209 (button) : value=0 flags=write-only
|
|
strobe_enable 0x0199e211 (bool) : default=0 value=0
|
|
strobe_polarity 0x0199e212 (bool) : default=0 value=0
|
|
strobe_operation 0x0199e213 (menu) : min=0 max=1 default=1 value=1 (Exposure)
|
|
0: Fixed Duration
|
|
1: Exposure
|
|
strobe_duration 0x0199e214 (int) : min=0 max=32767 step=1 default=100 value=100
|
|
strobe_delay 0x0199e215 (int) : min=0 max=32767 step=1 default=0 value=0
|
|
gpout 0x0199e216 (bool) : default=0 value=0
|
|
gpin 0x0199e217 (bool) : default=0 value=0
|
|
roi_offset_x 0x0199e218 (int) : min=0 max=1664 step=2 default=0 value=0
|
|
roi_offset_y 0x0199e219 (int) : min=0 max=1196 step=2 default=0 value=60
|
|
roi_auto_center 0x0199e220 (bool) : default=1 value=1
|
|
trigger_polarity 0x0199e234 (menu) : min=0 max=1 default=0 value=1 (Falling Edge)
|
|
0: Rising Edge
|
|
1: Falling Edge
|
|
trigger_exposure_mode 0x0199e236 (menu) : min=0 max=1 default=0 value=0 (Frame Start)
|
|
0: Frame Start
|
|
1: Exposure Active
|
|
trigger_burst_count 0x0199e237 (int) : min=1 max=1000 step=1 default=1 value=1
|
|
trigger_debounce_time_us 0x0199e238 (int) : min=0 max=1000000 step=1 default=0 value=0
|
|
trigger_mask_time_us 0x0199e239 (int) : min=0 max=1000000 step=1 default=0 value=0
|
|
trigger_noise_suppression_time 0x0199e240 (int) : min=0 max=1000000 step=1 default=0 value=0
|
|
auto_functions_roi_control 0x0199e241 (bool) : default=1 value=0
|
|
auto_functions_roi_left 0x0199e242 (int) : min=0 max=1904 step=1 default=0 value=480
|
|
auto_functions_roi_top 0x0199e243 (int) : min=0 max=1184 step=1 default=0 value=300
|
|
auto_functions_roi_width 0x0199e244 (int) : min=16 max=1920 step=1 default=0 value=960
|
|
auto_functions_roi_height 0x0199e245 (int) : min=16 max=1200 step=1 default=0 value=600
|
|
flip_horizontal 0x0199e251 (bool) : default=0 value=0
|
|
flip_vertical 0x0199e252 (bool) : default=0 value=0
|
|
exposure_auto_upper_limit_auto 0x0199e254 (bool) : default=1 value=0
|
|
exposure_auto_lower_limit_us 0x0199e255 (int) : min=20 max=1000000 step=1 default=333 value=30
|
|
exposure_auto_upper_limit_us 0x0199e256 (int) : min=20 max=1000000 step=1 default=333 value=33333
|
|
override_scanning_mode 0x0199e257 (int) : min=1 max=16 step=1 default=1 value=1
|
|
auto_functions_roi_preset 0x0199e258 (menu) : min=0 max=5 default=2 value=2 (Center 50%)
|
|
0: Full Sensor
|
|
1: Custom Rectangle
|
|
2: Center 50%
|
|
3: Center 25%
|
|
4: Bottom Half
|
|
5: Top Half
|
|
trigger_global_reset_release 0x0199e261 (bool) : default=0 value=0
|
|
scanning_mode_selector 0x0199e263 (int) : min=1 max=16 step=1 default=1 value=1
|
|
scanning_mode_identifier 0x0199e264 (int) : min=1 max=1 step=1 default=1 value=1 flags=read-only
|
|
scanning_mode_scale_horizontal 0x0199e265 (int) : min=1 max=1 step=1 default=1 value=1 flags=read-only
|
|
scanning_mode_scale_vertical 0x0199e266 (int) : min=1 max=1 step=1 default=1 value=1 flags=read-only
|
|
scanning_mode_binning_h 0x0199e267 (int) : min=1 max=1 step=1 default=1 value=1 flags=read-only
|
|
scanning_mode_binning_v 0x0199e268 (int) : min=1 max=1 step=1 default=1 value=1 flags=read-only
|
|
scanning_mode_skipping_h 0x0199e269 (int) : min=1 max=1 step=1 default=1 value=1 flags=read-only
|
|
scanning_mode_skipping_v 0x0199e270 (int) : min=1 max=1 step=1 default=1 value=1 flags=read-only
|
|
scanning_mode_flags 0x0199e271 (int) : min=0 max=0 step=0 default=0 value=0 flags=read-only
|
|
trigger_delay_100ns 0x0199e272 (int) : min=0 max=1000000 step=1 default=0 value=31
|
|
```
|