Drake: camera_properties: Support setting with intrinsic matrix, possibly using CameraInfo

Created on 1 Aug 2019  路  2Comments  路  Source: RobotLocomotion/drake

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)

geometry perception medium dynamics

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:

  • [x] #13557 Submit changes to CameraInfo, RgbdSensor and introduce RenderCameraProperties

    • This provides the core data structures for specifying the intrinsics and API for passing them to the RgbdSensor. However, at this point, actual intrinsic values that aren't "centered and symmetric" will spew a warning.

  • [x] #13635 Implement the geometry/ infrastructure to support setting camera intrinsics. This will hit QueryObject, GeometryState and, the RenderEngine base class.

    • The 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.

  • [x] #13655 Implement the use of full camera intrinsics in RenderEngineVtk. This will make the feature live and accessible.

------ everything above the line implemented in the linked branch; everything below still to be done -----

  • [x] #13835 Python bindings of all new APIs above.

    • [x] #14300 Slight tweak to python bindings to kill soon-to-be-deprecated (and unnecessary) API.

  • [x] #14289 Add intrinsics to the RenderEngineGl that is currently porting over.
  • [X] #14339 Add intrinsics to the Ospray render engine.
  • [ ] Deprecate all of the old CameraProperties and DepthCameraProperties related APIs.

    • [X] #14357 Change relationship between CameraProperties and RenderCamera in RenderEngine API

    • [x] #14359 Deprecate RenderEngine API that uses CameraProperties

    • [x] #14358 Deprecate RgbdSensor API that uses CameraProperties

    • [x] #14375 Deprecate ManipulationStation API that uses CameraProperties

    • [x] #14376 Deprecate CameraProperties

(The first PR should be submitted on 6/15/2020.)

All 2 comments

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:

  • [x] #13557 Submit changes to CameraInfo, RgbdSensor and introduce RenderCameraProperties

    • This provides the core data structures for specifying the intrinsics and API for passing them to the RgbdSensor. However, at this point, actual intrinsic values that aren't "centered and symmetric" will spew a warning.

  • [x] #13635 Implement the geometry/ infrastructure to support setting camera intrinsics. This will hit QueryObject, GeometryState and, the RenderEngine base class.

    • The 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.

  • [x] #13655 Implement the use of full camera intrinsics in RenderEngineVtk. This will make the feature live and accessible.

------ everything above the line implemented in the linked branch; everything below still to be done -----

  • [x] #13835 Python bindings of all new APIs above.

    • [x] #14300 Slight tweak to python bindings to kill soon-to-be-deprecated (and unnecessary) API.

  • [x] #14289 Add intrinsics to the RenderEngineGl that is currently porting over.
  • [X] #14339 Add intrinsics to the Ospray render engine.
  • [ ] Deprecate all of the old CameraProperties and DepthCameraProperties related APIs.

    • [X] #14357 Change relationship between CameraProperties and RenderCamera in RenderEngine API

    • [x] #14359 Deprecate RenderEngine API that uses CameraProperties

    • [x] #14358 Deprecate RgbdSensor API that uses CameraProperties

    • [x] #14375 Deprecate ManipulationStation API that uses CameraProperties

    • [x] #14376 Deprecate CameraProperties

(The first PR should be submitted on 6/15/2020.)

Woot for the PR :bullettrain_front:!

Was this page helpful?
0 / 5 - 0 ratings