thibaultmarin / hpp2plantuml

Convert C++ header files to PlantUML
MIT License
223 stars 35 forks source link

help me convert this puml to png #16

Closed improve100 closed 3 years ago

improve100 commented 3 years ago

$java -jar /home/auser/bin/plantuml.jar ndt.puml -tsvg Error line 98 in file: ndt.puml Some diagram description contains errors

@startuml

/' Objects '/

namespace pcl { class NormalDistributionsTransform <template<typename PointSource, typename PointTarget>> { +NormalDistributionsTransform() +~NormalDistributionsTransform()

pointhessian : Eigen::Matrix<double, 18, 6>

    #point_gradient_ : Eigen::Matrix<double, 3, 6>
    #h_ang_a2_ : Eigen::Vector3d
    #h_ang_a3_ : Eigen::Vector3d
    #h_ang_b2_ : Eigen::Vector3d
    #h_ang_b3_ : Eigen::Vector3d
    #h_ang_c2_ : Eigen::Vector3d
    #h_ang_c3_ : Eigen::Vector3d
    #h_ang_d1_ : Eigen::Vector3d
    #h_ang_d2_ : Eigen::Vector3d
    #h_ang_d3_ : Eigen::Vector3d
    #h_ang_e1_ : Eigen::Vector3d
    #h_ang_e2_ : Eigen::Vector3d
    #h_ang_e3_ : Eigen::Vector3d
    #h_ang_f1_ : Eigen::Vector3d
    #h_ang_f2_ : Eigen::Vector3d
    #h_ang_f3_ : Eigen::Vector3d
    #j_ang_a_ : Eigen::Vector3d
    #j_ang_b_ : Eigen::Vector3d
    #j_ang_c_ : Eigen::Vector3d
    #j_ang_d_ : Eigen::Vector3d
    #j_ang_e_ : Eigen::Vector3d
    #j_ang_f_ : Eigen::Vector3d
    #j_ang_g_ : Eigen::Vector3d
    #j_ang_h_ : Eigen::Vector3d
    #target_cells_ : TargetGrid
    #updateIntervalMT(double& a_l, double& f_l, double& g_l, double& a_u, double& f_u, double& g_u, double a_t, double f_t, double g_t) : bool
    #auxilaryFunction_PsiMT(double a, double f_a, double f_0, double g_0, double mu) : double
    #auxilaryFunction_dPsiMT(double g_a, double g_0, double mu) : double
    #computeDerivatives(Eigen::Matrix<double, 6, 1>& score_gradient, Eigen::Matrix<double, 6, 6>& hessian, PointCloudSource& trans_cloud, Eigen::Matrix<double, 6, 1>& p, bool compute_hessian) : double
    #computeStepLengthMT(const Eigen::Matrix<double, 6, 1>& x, Eigen::Matrix<double, 6, 1>& step_dir, double step_init, double step_max, double step_min, double& score, Eigen::Matrix<double, 6, 1>& score_gradient, Eigen::Matrix<double, 6, 6>& hessian, PointCloudSource& trans_cloud) : double
    #gauss_d1_ : double
    #gauss_d2_ : double
    +getOulierRatio() : double {query}
    +getStepSize() : double {query}
    +getTransformationProbability() : double {query}
    #outlier_ratio_ : double
    #step_size_ : double
    #trans_probability_ : double
    #trialValueSelectionMT(double a_l, double f_l, double g_l, double a_u, double f_u, double g_u, double a_t, double f_t, double g_t) : double
    #updateDerivatives(Eigen::Matrix<double, 6, 1>& score_gradient, Eigen::Matrix<double, 6, 6>& hessian, Eigen::Vector3d& x_trans, Eigen::Matrix3d& c_inv, bool compute_hessian) : double
    +getResolution() : float {query}
    #resolution_ : float
    +getFinalNumIteration() : int {query}
    #computeAngleDerivatives(Eigen::Matrix<double, 6, 1>& p, bool compute_hessian) : void
    #computeHessian(Eigen::Matrix<double, 6, 6>& hessian, PointCloudSource& trans_cloud, Eigen::Matrix<double, 6, 1>& p) : void
    #computePointDerivatives(Eigen::Vector3d& x, bool compute_hessian) : void
    #computeTransformation(PointCloudSource& output) : void
    #computeTransformation(PointCloudSource& output, const Eigen::Matrix4f& guess) : void
    +{static} convertTransform(const Eigen::Matrix<double, 6, 1>& x, Eigen::Affine3f& trans) : void
    +{static} convertTransform(const Eigen::Matrix<double, 6, 1>& x, Eigen::Matrix4f& trans) : void
    #init() : void
    +setInputTarget(const PointCloudTargetConstPtr& cloud) : void
    +setOulierRatio(double outlier_ratio) : void
    +setResolution(float resolution) : void
    +setStepSize(double step_size) : void
    #updateHessian(Eigen::Matrix<double, 6, 6>& hessian, Eigen::Vector3d& x_trans, Eigen::Matrix3d& c_inv) : void
}

}

namespace pcl { class PCLBase <template> { +PCLBase() +PCLBase(const PCLBase& base) +~PCLBase() +getIndices() : IndicesConstPtr {query} +getIndices() : IndicesPtr +getInputCloud() : PointCloudConstPtr {query}

input_ : PointCloudConstPtr

    +operator[](size_t pos) : PointT& {query}
    #deinitCompute() : bool
    #fake_indices_ : bool
    #initCompute() : bool
    #use_indices_ : bool
    #indices_ : pcl::IndicesPtr
    +setIndices(pcl::IndicesPtr indices) : void
    +setIndices(pcl::IndicesConstPtr indices) : void
    +setIndices(const PointIndicesConstPtr& indices) : void
    +setIndices(size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols) : void
    +setInputCloud(const PointCloudConstPtr& cloud) : void
}

}

namespace pcl { class PCL_EXPORTSPCLBase <template<>> { +PCLBase() +~PCLBase() +getIndices() : IndicesPtr +getInputCloud() : PCLPointCloud2ConstPtr

input_ : PCLPointCloud2ConstPtr

    #deinitCompute() : bool
    #fake_indices_ : bool
    #initCompute() : bool
    #use_indices_ : bool
    #x_idx_ : int
    #y_idx_ : int
    #z_idx_ : int
    #indices_ : pcl::IndicesPtr
    #x_field_name_ : std::string
    #y_field_name_ : std::string
    #z_field_name_ : std::string
    #field_sizes_ : std::vector<int>
    +setIndices(pcl::IndicesPtr indices) : void
    +setIndices(const PointIndicesConstPtr& indices) : void
    +setInputCloud(const PCLPointCloud2ConstPtr& cloud) : void
}

}

namespace pcl { abstract class Registration <template<typename PointSource, typename PointTarget, typename Scalar=float>> { +PCL_DEPRECATED("[pcl::registration::Registration::setInputCloud] setInputCloud is deprecated. Please use setInputSource instead." ) void setInputCloud ( const PointCloudSourceConstPtr& cloud) +PCL_DEPRECATED("[pcl::registration::Registration::getInputCloud] getInputCloud is deprecated. Please use getInputSource instead." ) PointCloudSourceConstPtr const getInputCloud () +Registration()

function<void(const pcl::PointCloud& cloud_src, const std::vector& indices_src, const pcl::PointCloud& cloud_tgt, const std::vector& indices_tgt)

    +~Registration()
    #correspondence_estimation_ : CorrespondenceEstimationPtr
    #correspondences_ : CorrespondencesPtr
    +getSearchMethodTarget() : KdTreePtr {query}
    #tree_ : KdTreePtr
    +getSearchMethodSource() : KdTreeReciprocalPtr {query}
    #tree_reciprocal_ : KdTreeReciprocalPtr
    #final_transformation_ : Matrix4
    +getFinalTransformation() : Matrix4
    +getLastIncrementalTransformation() : Matrix4
    #previous_transformation_ : Matrix4
    #transformation_ : Matrix4
    +getInputSource() : PointCloudSourceConstPtr
    +getInputTarget() : PointCloudTargetConstPtr
    #target_ : PointCloudTargetConstPtr
    -point_representation_ : PointRepresentationConstPtr
    #transformation_estimation_ : TransformationEstimationPtr
    #converged_ : bool
    #force_no_recompute_ : bool
    #force_no_recompute_reciprocal_ : bool
    +hasConverged() : bool
    +initCompute() : bool
    +initComputeReciprocal() : bool
    +registerVisualizationCallback(boost::function<FunctionSignature>& visualizerCallback) : bool
    +removeCorrespondenceRejector(unsigned int i) : bool
    #searchForNeighbors(const PointCloudSource& cloud, int index, std::vector<int>& indices, std::vector<float>& distances) : bool
    #source_cloud_updated_ : bool
    #target_cloud_updated_ : bool
    #corr_dist_threshold_ : double
    #euclidean_fitness_epsilon_ : double
    +getEuclideanFitnessEpsilon() : double
    +getFitnessScore(double max_range) : double
    +getFitnessScore(const std::vector<float>& distances_a, const std::vector<float>& distances_b) : double
    +getMaxCorrespondenceDistance() : double
    +getRANSACIterations() : double
    +getRANSACOutlierRejectionThreshold() : double
    +getTransformationEpsilon() : double
    #inlier_threshold_ : double
    #transformation_epsilon_ : double
    +getMaximumIterations() : int
    #max_iterations_ : int
    #min_number_correspondences_ : int
    #nr_iterations_ : int
    #ransac_iterations_ : int
    #reg_name_ : std::string
    +getClassName() : std::string& {query}
    #correspondence_rejectors_ : std::vector<CorrespondenceRejectorPtr>
    +getCorrespondenceRejectors() : std::vector<CorrespondenceRejectorPtr>
    +addCorrespondenceRejector(const CorrespondenceRejectorPtr& rejector) : void
    +align(PointCloudSource& output) : void
    +align(PointCloudSource& output, const Matrix4& guess) : void
    +clearCorrespondenceRejectors() : void
    #{abstract} computeTransformation(PointCloudSource& output, const Matrix4& guess) : void
    +setCorrespondenceEstimation(const CorrespondenceEstimationPtr& ce) : void
    +setEuclideanFitnessEpsilon(double epsilon) : void
    +setInputSource(const PointCloudSourceConstPtr& cloud) : void
    +setInputTarget(const PointCloudTargetConstPtr& cloud) : void
    +setMaxCorrespondenceDistance(double distance_threshold) : void
    +setMaximumIterations(int nr_iterations) : void
    +setPointRepresentation(const PointRepresentationConstPtr& point_representation) : void
    +setRANSACIterations(int ransac_iterations) : void
    +setRANSACOutlierRejectionThreshold(double inlier_threshold) : void
    +setSearchMethodSource(const KdTreeReciprocalPtr& tree, bool force_no_recompute) : void
    +setSearchMethodTarget(const KdTreePtr& tree, bool force_no_recompute) : void
    +setTransformationEpsilon(double epsilon) : void
    +setTransformationEstimation(const TransformationEstimationPtr& te) : void
}

}

/' Inheritance relationships '/

namespace pcl { PCLBase <|-- Registration }

namespace pcl { Registration <|-- NormalDistributionsTransform }

/' Aggregation relationships '/

@enduml

thibaultmarin commented 3 years ago

Hi, The input C++ code generating the puml file would be required to investigate a potential bug, but my plantuml does produce an image without error from the puml code you posted (PlantUML Version 1.2020.02). This suggests that the puml code is valid.

improve100 commented 3 years ago

thank you very much. update plantuml Version 1.2021.5 fixed the problem,and also last version plantuml output directory is working.:smiley: my hpp2plantuml version hpp2plantuml 0.8.1 is the newest version?