15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CADから点群データを作る

Last updated at Posted at 2019-07-25

##はじめに
PCLで簡単な物体認識を行う際,自前で点群データを作成する必要があります.
点群データの作成には,様々な方法があるのですが,今回は,CADデータでモデリングしたオブジェクトを点群データに変更する手順を紹介.

##動作環境
今回の記事は,windows10側でモデルを作成.ubuntu18.04で点群データに変換しました.
仕様は表にまとめています.

共通

項目
CPU core i7-6820HQ
RAM 16GB
GPU NVIDIA Quadro M1000M

windows側

項目
OS Windows 10 pro
CAD Solid Works 2018-2019

Ubuntu18.04側

項目
OS Ubuntu18.04
変換ソフト Meshlab
pcl 1.8
ROS melodic

##CADでモデルを作成 (.STL)形式で保存
windows側での操作
今回はSolid Worksを使用しました.
Solid Worksは幅広い分野で使用されCADソフトの中でも,シェア率が結構高めです.
AUTOCADやFUSION360等を使用しても大丈夫だと思います.

Solid Worksは学生であれば,ほぼ無償で使用することができます.
とりあえず,認識する対象をCADで作成してみました.
今回は,おもちゃの飛行機をリバースエンジニアリングしました.
こんな感じです.
air_pcl.PNG
このパーツファイルを(.STL)形式で保存します.
アセンブリしたものを使用する際は,一度,指定保存で(.SLDAEM)をパーツファイル(.SLDPart)に変換.その後変換したパーツファイルを(.STL)形式として,指定保存します.

##点群データ(.pcd)形式に変換
ここからはubuntu側での作業となります.
参考にしたサイトはこちら
変換には,pcl_toolsが必要となります
インストールしていない場合は,

sudo apt-get install  pcl-tools

でインストールできます.

  1. まずmeshlabを開き,(.STL)形式のデータをインポートします.
  2. 次に,(.obj)ファイルでエクスポート(指定保存)します.
  3. 一度,meshlab閉じ,再び起動させ(.obj)形式のデータをロードします.
  4. 次に,スケールを合わせます.
    Solid Worksでは一般的に[mm]でモデルを作成することが多いです.しかしmeshlabの基本単位が[m]なので,スケールサイズを変換する必要があります.

meshlabのFiltersNormarls,Cnrvatures and OrientationTransform:scaleを選択します.scale.png
このとき各軸を図のように0.1倍づつしてあげて,Applyをクリックしcloseします.
Apllyをクリックしないと,モデルに適用されないので注意してください.
ここまでできたら,(.obj)形式で再度上書き保存し,一度meshlabを閉じてください.

5.再びmeshlabを開いて3の操作を行ってください.これにより,サイズを[mm]
に合わせることができます.※一度で,スケールサイズを0.001倍すると自分の場合うまく行きませんでした.

6.(.obj)から(.pcl)形式に変換.
変換は以下のように行います.

pcl_mesh_sampling input.obj  output.pcd -leaf_size 0.001

引数とかは,参考サイトに書いてあるので割愛.
これで,(.pcl)形式の自前データを作成することができました.
グラフィカルに確認したい場合は,

pcl_viewer output.pcd

で見ることができます.
すごく見づらいですけど,こんな感じ
air_plane.png

生データを見たい場合は,

gedit output.pcd

で見ることができる.
こんな感じ(一部を抜粋).

output.pcd
# .PCD v0.7 - Point Cloud Data file format
VERSION 0.7
FIELDS x y z
SIZE 4 4 4
TYPE F F F
COUNT 1 1 1
WIDTH 43185
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 43185
DATA ascii
0.0087611452 -0.050566815 0.0059146006
0.0059727603 -0.049213119 0.0059028571
0.0011607565 -0.04599423 0.0059653334
0.036394902 -0.044901699 0.0059582125
0.037355382 -0.044040166 0.0059934631
-0.0069311424 -0.040136784 0.00594847
-0.0087683918 -0.039120279 0.0058913622
-0.0094063086 -0.038501743 0.0059710327
-0.015966881 -0.030564643 0.0059039053

このように,PCLでは[m]が基準となって,データが格納されている.

##終わりに
Solid Worksとmeshlabでデータをインポートした際に,スケールサイズか変わっていることに気づかず,苦労しました...
自前で作成したデータをもとに,PCLで簡単な物体認識をする内容は,また今度書きたいと思います.

15
11
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?