Open3D (C++ API)  0.13.0
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Namespaces | Functions
open3d::t::pipelines::kernel Namespace Reference

Namespaces

 odometry
 

Functions

core::Tensor ComputePosePointToPlane (const core::Tensor &source_points, const core::Tensor &target_points, const core::Tensor &target_normals, const pipelines::registration::CorrespondenceSet &correspondences)
 Computes pose for point to plane registration method. More...
 
std::tuple< core::Tensor, core::TensorComputeRtPointToPoint (const core::Tensor &source_points, const core::Tensor &target_points, const pipelines::registration::CorrespondenceSet &correspondences)
 Computes (R) Rotation {3,3} and (t) translation {3,} for point to point registration method. More...
 
void ComputePosePointToPlaneCPU (const float *source_points_ptr, const float *target_points_ptr, const float *target_normals_ptr, const int64_t *correspondences_first, const int64_t *correspondences_second, const int n, core::Tensor &pose, const core::Dtype &dtype, const core::Device &device)
 
void ComputeRtPointToPointCPU (const float *source_points_ptr, const float *target_points_ptr, const int64_t *correspondences_first, const int64_t *correspondences_second, const int n, core::Tensor &R, core::Tensor &t, const core::Dtype dtype, const core::Device device)
 
OPEN3D_HOST_DEVICE bool GetJacobianPointToPlane (int64_t workload_idx, const float *source_points_ptr, const float *target_points_ptr, const float *target_normals_ptr, const int64_t *correspondence_first, const int64_t *correspondence_second, float *J_ij, float &r)
 
void FillInRigidAlignmentTerm (core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &Ti_ps, const core::Tensor &Tj_qs, const core::Tensor &Ri_normal_ps, int i, int j, float threshold)
 
void FillInSLACAlignmentTerm (core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &Ti_ps, const core::Tensor &Tj_qs, const core::Tensor &normal_ps, const core::Tensor &Ri_normal_ps, const core::Tensor &RjT_Ri_normal_ps, const core::Tensor &cgrid_idx_ps, const core::Tensor &cgrid_idx_qs, const core::Tensor &cgrid_ratio_qs, const core::Tensor &cgrid_ratio_ps, int i, int j, int n, float threshold)
 
void FillInSLACRegularizerTerm (core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &grid_idx, const core::Tensor &grid_nbs_idx, const core::Tensor &grid_nbs_mask, const core::Tensor &positions_init, const core::Tensor &positions_curr, float weight, int n, int anchor_idx)
 
void FillInRigidAlignmentTermCPU (core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &Ti_qs, const core::Tensor &Tj_qs, const core::Tensor &Ri_normal_ps, int i, int j, float threshold)
 
void FillInSLACAlignmentTermCPU (core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &Ti_qs, const core::Tensor &Tj_qs, const core::Tensor &normal_ps, const core::Tensor &Ri_normal_ps, const core::Tensor &RjT_Ri_normal_ps, const core::Tensor &cgrid_idx_ps, const core::Tensor &cgrid_idx_qs, const core::Tensor &cgrid_ratio_qs, const core::Tensor &cgrid_ratio_ps, int i, int j, int n, float threshold)
 
void FillInSLACRegularizerTermCPU (core::Tensor &AtA, core::Tensor &Atb, core::Tensor &residual, const core::Tensor &grid_idx, const core::Tensor &grid_nbs_idx, const core::Tensor &grid_nbs_mask, const core::Tensor &positions_init, const core::Tensor &positions_curr, float weight, int n, int anchor_idx)
 
OPEN3D_HOST_DEVICE void matmul3x3_3x1 (float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22, float v0, float v1, float v2, float &o0, float &o1, float &o2)
 
OPEN3D_HOST_DEVICE void matmul3x3_3x3 (float a00, float a01, float a02, float a10, float a11, float a12, float a20, float a21, float a22, float b00, float b01, float b02, float b10, float b11, float b12, float b20, float b21, float b22, float &c00, float &c01, float &c02, float &c10, float &c11, float &c12, float &c20, float &c21, float &c22)
 
OPEN3D_HOST_DEVICE float det3x3 (float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22)
 
core::Tensor RtToTransformation (const core::Tensor &R, const core::Tensor &t)
 Convert rotation and translation to the transformation matrix. More...
 
core::Tensor PoseToTransformation (const core::Tensor &pose)
 Convert pose to the transformation matrix. More...
 
void DecodeAndSolve6x6 (const core::Tensor &A_reduction, core::Tensor &delta, float &inlier_residual, int &inlier_count)
 Decodes a 6x6 linear system from a compressed 29x1 tensor. More...
 
template<typename scalar_t >
OPEN3D_HOST_DEVICE void PoseToTransformationImpl (scalar_t *transformation_ptr, const scalar_t *pose_ptr)
 Shared implementation for PoseToTransformation function. More...
 

Function Documentation

◆ ComputePosePointToPlane()

core::Tensor open3d::t::pipelines::kernel::ComputePosePointToPlane ( const core::Tensor source_points,
const core::Tensor target_points,
const core::Tensor target_normals,
const pipelines::registration::CorrespondenceSet correspondences 
)

Computes pose for point to plane registration method.

Parameters
source_pointssource points indexed according to correspondences.
target_pointstarget points indexed according to correspondences.
target_normalstarget normals indexed according to correspondences.
correspondencesCorrespondenceSet. [refer to definition in /cpp/open3d/t/pipelines/registration/TransformationEstimation.h].
Returns
Pose [alpha beta gamma, tx, ty, tz], a shape {6} tensor of dtype Float32, where alpha, beta, gamma are the Euler angles in the ZYX order.

◆ ComputePosePointToPlaneCPU()

void open3d::t::pipelines::kernel::ComputePosePointToPlaneCPU ( const float *  source_points_ptr,
const float *  target_points_ptr,
const float *  target_normals_ptr,
const int64_t *  correspondences_first,
const int64_t *  correspondences_second,
const int  n,
core::Tensor pose,
const core::Dtype dtype,
const core::Device device 
)

◆ ComputeRtPointToPoint()

std::tuple< core::Tensor, core::Tensor > open3d::t::pipelines::kernel::ComputeRtPointToPoint ( const core::Tensor source_points,
const core::Tensor target_points,
const pipelines::registration::CorrespondenceSet correspondences 
)

Computes (R) Rotation {3,3} and (t) translation {3,} for point to point registration method.

Parameters
source_pointssource points indexed according to correspondences.
target_pointstarget points indexed according to correspondences.
correspondencesCorrespondenceSet. [refer to definition in /cpp/open3d/t/pipelines/registration/TransformationEstimation.h].
Returns
tuple of (R, t). [Dtype: Float32].

◆ ComputeRtPointToPointCPU()

void open3d::t::pipelines::kernel::ComputeRtPointToPointCPU ( const float *  source_points_ptr,
const float *  target_points_ptr,
const int64_t *  correspondences_first,
const int64_t *  correspondences_second,
const int  n,
core::Tensor R,
core::Tensor t,
const core::Dtype  dtype,
const core::Device  device 
)

◆ DecodeAndSolve6x6()

void open3d::t::pipelines::kernel::DecodeAndSolve6x6 ( const core::Tensor A_reduction,
core::Tensor delta,
float &  inlier_residual,
int &  inlier_count 
)

Decodes a 6x6 linear system from a compressed 29x1 tensor.

Parameters
A_reduction1x29 tensor storing a linear system, (21 for $J^T J$ matrix, 6 for $J^T r$, 1 for residual, 1 for inlier count).
delta6d tensor for a se3 tangent vector.
inlier_residualFloat residual for the inliers.
inlier_countInt number of inliers.

◆ det3x3()

OPEN3D_HOST_DEVICE float open3d::t::pipelines::kernel::det3x3 ( float  m00,
float  m01,
float  m02,
float  m10,
float  m11,
float  m12,
float  m20,
float  m21,
float  m22 
)
inline

◆ FillInRigidAlignmentTerm()

void open3d::t::pipelines::kernel::FillInRigidAlignmentTerm ( core::Tensor AtA,
core::Tensor Atb,
core::Tensor residual,
const core::Tensor Ti_ps,
const core::Tensor Tj_qs,
const core::Tensor Ri_normal_ps,
int  i,
int  j,
float  threshold 
)

◆ FillInRigidAlignmentTermCPU()

void open3d::t::pipelines::kernel::FillInRigidAlignmentTermCPU ( core::Tensor AtA,
core::Tensor Atb,
core::Tensor residual,
const core::Tensor Ti_qs,
const core::Tensor Tj_qs,
const core::Tensor Ri_normal_ps,
int  i,
int  j,
float  threshold 
)

◆ FillInSLACAlignmentTerm()

void open3d::t::pipelines::kernel::FillInSLACAlignmentTerm ( core::Tensor AtA,
core::Tensor Atb,
core::Tensor residual,
const core::Tensor Ti_ps,
const core::Tensor Tj_qs,
const core::Tensor normal_ps,
const core::Tensor Ri_normal_ps,
const core::Tensor RjT_Ri_normal_ps,
const core::Tensor cgrid_idx_ps,
const core::Tensor cgrid_idx_qs,
const core::Tensor cgrid_ratio_qs,
const core::Tensor cgrid_ratio_ps,
int  i,
int  j,
int  n,
float  threshold 
)

◆ FillInSLACAlignmentTermCPU()

void open3d::t::pipelines::kernel::FillInSLACAlignmentTermCPU ( core::Tensor AtA,
core::Tensor Atb,
core::Tensor residual,
const core::Tensor Ti_qs,
const core::Tensor Tj_qs,
const core::Tensor normal_ps,
const core::Tensor Ri_normal_ps,
const core::Tensor RjT_Ri_normal_ps,
const core::Tensor cgrid_idx_ps,
const core::Tensor cgrid_idx_qs,
const core::Tensor cgrid_ratio_qs,
const core::Tensor cgrid_ratio_ps,
int  i,
int  j,
int  n,
float  threshold 
)

◆ FillInSLACRegularizerTerm()

void open3d::t::pipelines::kernel::FillInSLACRegularizerTerm ( core::Tensor AtA,
core::Tensor Atb,
core::Tensor residual,
const core::Tensor grid_idx,
const core::Tensor grid_nbs_idx,
const core::Tensor grid_nbs_mask,
const core::Tensor positions_init,
const core::Tensor positions_curr,
float  weight,
int  n,
int  anchor_idx 
)

◆ FillInSLACRegularizerTermCPU()

void open3d::t::pipelines::kernel::FillInSLACRegularizerTermCPU ( core::Tensor AtA,
core::Tensor Atb,
core::Tensor residual,
const core::Tensor grid_idx,
const core::Tensor grid_nbs_idx,
const core::Tensor grid_nbs_mask,
const core::Tensor positions_init,
const core::Tensor positions_curr,
float  weight,
int  n,
int  anchor_idx 
)

◆ GetJacobianPointToPlane()

OPEN3D_HOST_DEVICE bool open3d::t::pipelines::kernel::GetJacobianPointToPlane ( int64_t  workload_idx,
const float *  source_points_ptr,
const float *  target_points_ptr,
const float *  target_normals_ptr,
const int64_t *  correspondence_first,
const int64_t *  correspondence_second,
float *  J_ij,
float &  r 
)
inline

◆ matmul3x3_3x1()

OPEN3D_HOST_DEVICE void open3d::t::pipelines::kernel::matmul3x3_3x1 ( float  m00,
float  m01,
float  m02,
float  m10,
float  m11,
float  m12,
float  m20,
float  m21,
float  m22,
float  v0,
float  v1,
float  v2,
float &  o0,
float &  o1,
float &  o2 
)
inline

◆ matmul3x3_3x3()

OPEN3D_HOST_DEVICE void open3d::t::pipelines::kernel::matmul3x3_3x3 ( float  a00,
float  a01,
float  a02,
float  a10,
float  a11,
float  a12,
float  a20,
float  a21,
float  a22,
float  b00,
float  b01,
float  b02,
float  b10,
float  b11,
float  b12,
float  b20,
float  b21,
float  b22,
float &  c00,
float &  c01,
float &  c02,
float &  c10,
float &  c11,
float &  c12,
float &  c20,
float &  c21,
float &  c22 
)
inline

◆ PoseToTransformation()

core::Tensor open3d::t::pipelines::kernel::PoseToTransformation ( const core::Tensor pose)

Convert pose to the transformation matrix.

Parameters
posePose [alpha beta gamma, tx, ty, tz], a shape {6} tensor of dtype Float32, where alpha, beta, gamma are the Euler angles in the ZYX order.
Returns
Transformation, a tensor of shape {4, 4}, dtype and device same as pose.

◆ PoseToTransformationImpl()

template<typename scalar_t >
OPEN3D_HOST_DEVICE void open3d::t::pipelines::kernel::PoseToTransformationImpl ( scalar_t *  transformation_ptr,
const scalar_t *  pose_ptr 
)
inline

Shared implementation for PoseToTransformation function.

◆ RtToTransformation()

core::Tensor open3d::t::pipelines::kernel::RtToTransformation ( const core::Tensor R,
const core::Tensor t 
)

Convert rotation and translation to the transformation matrix.

Parameters
RRotation, a tensor of shape {3, 3}.
tTranslation, a tensor of shape {3,}.
Returns
Transformation, a tensor of shape {4, 4}, dtype and device same as R and t.