1

PCLでさまざまな機能を計算したい。私の考えは、コマンドラインで指定された内容(クラスの名前とそのパラメーター)に基づいて機能を作成するプログラムを作成し、それらを計算してファイルに書き込むことです。

したがって、「汎用」機能を作成するコードが必要です。PCL機能はテンプレートクラスです。入力タイプ(計算するデータのタイプ)と出力タイプを使用してインスタンス化する必要があります。通常、入力タイプはpcl::PointCloud問題ないので問題ないと思います。出力にはEigen::MatrixXf、「汎用」出力タイプとして使用します。しかし、私はいくつかの奇妙なエラーがあります。

私は最小限の例を書きました(typedef変更を容易にするためにいくつかを使用しています):

#include <pcl/point_types.h>
#include <pcl/features/normal_3d.h>
#include <pcl/features/fpfh.h>

typedef pcl::PointXYZ  Input_T;
//#define USE_EIGEN
#ifdef USE_EIGEN
#warning "USING EIGEN"
typedef Eigen::MatrixXf Output_T;
#else
typedef pcl::PointNormal Output_T;
#endif

int main()
{
  pcl::Feature<Input_T, Output_T>* q = new pcl::NormalEstimation<Input_T, Output_T>;
}

「そのまま」コンパイルすると、機能するはずです。7行目のコメントを外すと、機能しなくなります。GCCによって与えられるエラーは次のとおりです。

tmp/test.cc:16:49: erreur: cannot convert ‘pcl::NormalEstimation<pcl::PointXYZ, Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001> >*’ to ‘pcl::Feature<pcl::PointXYZ, Eigen::Matrix<float, -0x00000000000000001, -0x00000000000000001> >*’ in initialization

Ubuntu12.04でGCC4.6.3でPCL1.6を使用しています。

何が悪いのか考えていますか?PCLユーザーのメーリングリストに質問しましたが、成功しませんでした。

4

0 に答える 0