Would like this to supersede #8850. @SeanCurtis-TRI I've assigned you for now given that it supersedes that issue, but can reassign if you'd like. (I could also reword that issue if you'd like.)
Regarding this TODO comment:
https://github.com/RobotLocomotion/drake/blob/594f1864b5ef654e1b4c4eaf0b2ef9a58e8334eb/geometry/render/camera_properties.h#L13-L16
Potential solutions could be actually using CameraInfo, or making a static factory method or something that takes an intrinsic matrix.
For renderer support, I'm fine if a renderer currently chokes if it can't support a set of intrinsics (either a non-central principal point, unequal fx + fy, skew, etc.).
\cc @thduynguyen Part of this could also involve adding back-projection utilities like what you requested, and then possibly have Anzu use this structure?
(Bringing this up with minor relevance to #11878)
Ok, I'm ready to start submitting PRs against this. The effort to do this is going to come in multiple phases. ~The overall result can be found here: https://github.com/SeanCurtis-TRI/drake/tree/PR_camera_intrinsics~ (Edit: Original branch has gone stale and is no longer representative, and doesn't even guarantee to exist anymore.)
Here's the plan:
CameraInfo, RgbdSensor and introduce RenderCameraPropertiesRgbdSensor. However, at this point, actual intrinsic values that aren't "centered and symmetric" will spew a warning.geometry/ infrastructure to support setting camera intrinsics. This will hit QueryObject, GeometryState and, the RenderEngine base class.RenderEngine base class will include behavior such that if a derived class hasn't implemented the behavior necessary to set the camera from intrinsics, it will default to the simple version we have today.RenderEngineVtk. This will make the feature live and accessible.------ everything above the line implemented in the linked branch; everything below still to be done -----
RenderEngineGl that is currently porting over.CameraProperties and DepthCameraProperties related APIs.CameraProperties and RenderCamera in RenderEngine APIRenderEngine API that uses CameraPropertiesRgbdSensor API that uses CameraPropertiesManipulationStation API that uses CameraPropertiesCameraProperties(The first PR should be submitted on 6/15/2020.)
Woot for the PR :bullettrain_front:!
Most helpful comment
Ok, I'm ready to start submitting PRs against this. The effort to do this is going to come in multiple phases. ~The overall result can be found here: https://github.com/SeanCurtis-TRI/drake/tree/PR_camera_intrinsics~ (Edit: Original branch has gone stale and is no longer representative, and doesn't even guarantee to exist anymore.)
Here's the plan:
CameraInfo,RgbdSensorand introduceRenderCameraPropertiesRgbdSensor. However, at this point, actual intrinsic values that aren't "centered and symmetric" will spew a warning.geometry/infrastructure to support setting camera intrinsics. This will hitQueryObject,GeometryStateand, theRenderEnginebase class.RenderEnginebase class will include behavior such that if a derived class hasn't implemented the behavior necessary to set the camera from intrinsics, it will default to the simple version we have today.RenderEngineVtk. This will make the feature live and accessible.------ everything above the line implemented in the linked branch; everything below still to be done -----
RenderEngineGlthat is currently porting over.CameraPropertiesandDepthCameraPropertiesrelated APIs.CameraPropertiesandRenderCamerainRenderEngineAPIRenderEngineAPI that usesCameraPropertiesRgbdSensorAPI that usesCameraPropertiesManipulationStationAPI that usesCameraPropertiesCameraProperties(The first PR should be submitted on 6/15/2020.)