Multiple depth cameras, affine transform a point cloud?

asked 2019-02-09 03:47:09 -0500

knarx gravatar image

I'm using ROS to combine two live point clouds from RealSense D415 depth cameras for a volumetric video capture system. So far I've successfully gotten multiple streams together in RViz using the tutorials provided here:

https://realsense.intel.com/how-to-mu...

I can rough out an alignment, but it's not easy or accurate.

I've been able to find a good workflow in MeshLab to determine the depth cameras' relative location to each other using static PLYs. One mesh serves as the Fixed Frame, and using the Align tool in MeshLab I can determine the other's transformation and coordinates as a 4x4 matrix that contains a vector and a 3x3 transformation matrix. However, I can't seem to figure out how to best apply the affine transform as a tf command in ROS.

Is there something as easy as the static transform publisher, but for affine transforms? To properly align the point cloud I'd need more than just coordinates and rotation, but also scale, shear which don't appear to be supported by tf. Once I know my alignment, I only need to apply the transform once.

Any other suggestions on how to best align two point clouds in a decently accurate way?

edit retag flag offensive close merge delete

Comments

This is a typical multi-camera extrinsic calibration task. Personally I would do that, then all pointclouds will align automatically, as the cameras have been calibrated against each other.

There are multiple pkgs available that can do that for you.

gvdhoorn gravatar image gvdhoorn  ( 2019-02-09 11:13:04 -0500 )edit

Thanks! Any recomendations for specific packages? I'm looking for a more ICP approach to gain the extrinsic values since aligning the point clouds will be more accurate. The rgbd_registration package ( http://wiki.ros.org/rgbd_registration ) would have worked perfect but is depreciated.

knarx gravatar image knarx  ( 2019-02-09 21:34:58 -0500 )edit

Don't know about ICP based approaches.

re: rgbd_registration: found a fork here. You'll have to port it a bit though.

gvdhoorn gravatar image gvdhoorn  ( 2019-02-10 14:16:23 -0500 )edit

As to mutli-camera extrinsing calibration, you could take a look at kalibr.

I'm not an expert, just noticed the type of job you're trying to do.

gvdhoorn gravatar image gvdhoorn  ( 2019-02-10 14:17:55 -0500 )edit