Rotate camera calibration coefficients based on camera rotation. Probably. Seems to work. Maybe.
---------
Co-authored-by: Matt <matthew.morley.ca@gmail.com>
There are no settings for solvePNPEnabled while in driver mode but the
UI tries to set it. Let us not do that.
Fixes#1377
Co-authored-by: Chris Gerth <gerth2@users.noreply.github.com>
Uses logic in
https://github.com/PhotonVision/photon-libcamera-gl-driver/pull/16 to
push the ov9281 down to its true minimum exposure.
Updates UI to list the exposure settings in ~~microseconds.~~ Native
units - not everyone works in microseconds.
Does its darndest to actually try to set the exposure in
~~microseconds.~~ Native Units. To do this...
Lifecam is funky when doing this - [cscore limits the exposure settings
to certain quantized
values](https://github.com/wpilibsuite/allwpilib/blob/main/cscore/src/main/native/linux/UsbCameraImpl.cpp#L129).
Add a new camera quirk to allow that.
~~Updated camera quirks to re-evaluate every camera load (rather than
recalling from settings - this shouldn't be necessary)~~ This should be
rolled back, needed for arducam type selection.
Updated camera quirk matching logic to make PID/VID optional, and
basename optional (and only match trailing characters). This enables
mirroring CSCore's logic for identifying lifecams by name.
Updated the USBCamera to primarily use cscore's exposed property names.
Since camera manufacturers use a potpourri of names for the same
thing....
For nice-to-have settings: new soft-set logic to try all possible names,
but gracefully pass if the property isn't there.
For required settings: Search a list for the first setting that's
supported, fail if none are supported.
More logging of camera properties to help debug.
Note: most of this work is because cscore doesn't directly expose a
massaged exposure-setting-absolute API (and, given what we've seen,
probably _shouldn't_, this struggle is not for the faint of heart).
---------
Co-authored-by: Matt <matthew.morley.ca@gmail.com>
* Disable camera orientation option when camera is calibrated.
* Flip logic on if camera is calibrated when disabling camera orientation rotation
* Add comment on why orientation is disabled when camera is calibrated
* Add v banner warning regarding rotating calibrated camera bug
* Run lint
---------
Co-authored-by: Matt <matthew.morley.ca@gmail.com>
UI would say that every camera on a Pi device was a CSI camera basically. It would not let you rotate usb cameras 90 degrees or 270 degrees because it thought that they were CSI cameras. Fixes: #1098