Ciclop 3D Scanner実機レビュー

池田ラボにてスキャンまでやってたのでレビューを書いていきます。
随時写真などを追記していきます。
組み立ては動画と池田ラボ記事を参照

■組立に関して
組み立てによるのズレは後でスキャンソフトで補正するので、組み立て時点では精度はにこだわる必要はなさそうです(組み立てに関しての寸法指示などもとくに用意されていない)

■ソフトウェア、接続
スキャンにはオープンソースのHorusを使用します。
公式HPのダウンロードリンクが切れてしまっていますが、GitHubのリリースからダウンロードすることができます。2018/05/23時点での最新版は0.2RC1です。

Horusを起動すると下のような画面になるので最初は一番上のWizardModeで進めていきます。

Connectingを押すとウェブカメラとターンテーブルと接続されます。


ウェブカメラの接続されているCOM番号は自動で入ってくれるので特に変更する必要はありませんでした。USBデバイスをじゃらじゃらつけている場合は番号を指示する必要があるかもしれません、その場合はバイスマネージャーを参照してください。
また、初回はおそらくFirmwareをアップデートしてくださいという旨の警告が表示されます、設定画面にボードの種類の選択とアップロードボタンがありますので、ArudoinoUNOを選択してアップロードを押すとFirmwareが更新されます。
Invert the Moter directionのチェックが外れていると入れてねと警告が出るので入れておきます。
チェックを入れていてもなぜか入れてね警告が出ることがありますが、その場合は無視して進めても問題なくスキャンはできました。
Connnectボタンを押せば接続されるはずです。

■キャリブレーション
接続後はキャリブレーションボード(白と黒のチェス盤のような板)をターンテーブルに置いてキャリブレーションを行います。
キャリブレーションとは現在の機械の状況や周りの環境を覚えさせていい感じに補正してくれるように準備する操作です。とても大事です。
キャリブレーションボードを載せてAutocheck、calibrationを押すと勝手にテーブルとカメラがくるくる回ってキャリブレーションしてくれます。キャリブレーションボードの白黒が判別できないような暗いor明るすぎると失敗しますので、適度な明るさの場所で実行することをおすすめします。
きれいにスキャンするためにレーザーの線が細く対称になっているのが好ましいらしいです
。レーザーの焦点は下の画像の部分をくるくる回すと調節ができます。

悪い例

良い例


■スキャン
Autocheck、calibrationが終わってnextボタンを押すと、形だけスキャンするか色もスキャンするかを選択する画面が出てきます。ここは目的に応じて選択します。
ターンテーブルにスキャンしたい対象を載せて再生ボタンみたいなボタンを押すとスキャンが開始します。
だいたい10分程度でスキャンが完了します。

スキャン時の注意点としては、余計な赤色の情報がカメラに映らないようにスキャンしたほうがきれいなデータになります。例えばカメラの正面に仁王立ちしてスキャンすると、赤色レーザーのはみ出た部分が服に当たり、中途半端に服のデータがスキャンデータのゴミとして入ってしまいます。また、太陽光は赤色の電磁波の周波数を含んでいるので逆光もノイズだらけになります。いっそ部屋を暗くすると形はきれいにスキャンできると思います。
↓画像はマウスをスキャンした画像です。マウスの上のオレンジ色のノイズはカメラの前に立っていた人の服のノイズです。人が立っていなければ消えます。

ただし、色情報もウェブカメラで撮っているので、色付きでスキャンする場合は部屋が明るくないと黒い色しか取れなくなってしまいます。目的に応じて部屋の明るさも調節する必要があります。

■スキャンデータ
スキャンが完了したらエクスポートで.plyの形式で保存することができます。
Horusで保存したPLYデータはWindows10で標準搭載されている3DビューアーやAutodeskのRecapなどで開ける拡張子ですが、実際に開くとエラーになります。
いろいろ試した結果、フリーソフトのMeshLabで開くことができました。
MeshLabで点群に面を貼ってメッシュデータ化することもできるので、MeshLabとセットで運用することが好ましいようです。
参考

スティックのりをスキャンした点群データ
暗めだけどそれっぽくとれている

点群データに面を貼ってメッシュ化したもの(3Dプリントとかするために必要なやつ)
密度がたりなくてボソボソになっている。

スキャンを細かくするというよりもメッシュの張り方を設定でイジる必要がありそうです。

自分のところでは法線計算時にNeighbour num を 1000 に設定、Screened Poisson Surface Reconstruction でメッシュを張ることで上手くいきました。

法線計算
Filters > Point Set > Compute normals for point sets

メッシュ化
Filters > Remeshing, Simplification and Reconstruction > Screened Poisson Surface Reconstruction

これで出てくるモデルデータは頂点カラー(Vertex Color)なので、用途によってはテクスチャに変換する必要があるかもです。

出典:
DP 3D Scan to STL 3D Print with the DPI-8X SR, MeshLab, and 3D Builder

GUIDE FOR OPTIMUM SCANNING

GUIDE TO POST-PROCESSING OF THE POINT CLOUD

あと、メッシュ化後にモデルが変に暗い時は
Filters > Normals, Curvatures and Orientation > Invert Faces Orientation
で、表面と裏面をひっくりかえしてやると明るく出来る場合があります。

ガイドありがとうございます、参考になります。ところで、この3Dスキャナーは、高度なスキャニング用の3Dソフト(SkanectArtecの3Dソフト)に対応しているのでしょうか?

超亀レスごめんなさい。

Skanect や Artec の対応3Dスキャナのページには記載がないので恐らく対応していないのではないかと思います(後で試用版で動くか試してみます)。

Features - Skanect 3D Scanning Software By Occipital

最高の3Dスキャン用ソフトウェア | Artec Studio – 3Dモデリング用ソフトウェア

ページによれば、Skanect は Structure CoreStructure Sensor をサポート、Artec Studio 13 Ultimate は Microsoft KinectASUS XTionPrimeSenseIntel RealSense F200R200&SR300XYZprinting 3Dスキャナ をサポートしているようです。

とはいえ、Ciclop と Horus は OSHW/OSS なプロダクトなので、Skanect や Artec Studio の開発元が対応しようと思えば対応可能ではあろうと思います。

あるいはスキャニングソフト側の SDK が公開されていれば、それを使って制御用プラグインを自作することが考えられます。

残念ながら、Artec Studio も Skanect も Ciclop を認識しませんでした(OS 側からは USB シリアルと Webcam が見えているだけなので自然なことではあるのですが)。

ただし、どちらも Microsoft Kinect への対応があるようですので Ciclop を Kinect に偽装するドライバとエミュレータを開発すれば使えるように出来るかもしれません。

API 特許問題に引っかかりそうですし少し不安が残りますが Ciclop/Horus の改造で対応するならデファクトスタンダードな Kinect に合わせるのが一番互換性を高められそうですし、Kinect 搭載プロセッサの真似をして、Arduino と PC の間に適当なコンピュータを挟んで(あるいはGPGPUで) PC 側の負荷の軽減を目指しても楽しそうです。

何かの助けになれば幸いです。

はじめまして。突然の質問すみません。
最近購入してセットアップの際こちらのレビューを拝見して大変助かりました。ありがとうございます。

1点、セットアップ中に引っかかっていまして、Horusのインストールなどはうまくいったのですが、Horusを起動した際にカメラとの接続がうまくいきません。

接続するUSBポートを変えたりもしたのですが「Unplug and plug your camera USB cable and try to connect again」と出てきてしまい接続出来ずにいます。

Logicool カメラ設定でちゃんと起動するのでHorus上での設定の問題かと思うのですが、何が問題かお分かりになりますでしょうか?
お知恵を拝借出来れば幸いです。

こんにちは。
久しぶりに起動してみましたがこちらでは問題なく接続されてしまったので該当の警告が出ませんでした。
色々試したところ、別のカメラアプリでカメラが使用されている場合は「Unplug and plug your camera USB cable and try to connect again」となりました。
後ろでロジクール設定アプリなどが立ち上がっている場合は終了した状態で試してみてください。

あとノートパソコンでWebカメラがもともとついているものの場合カメラIDを設定する必要があるかもしれません。

お返事ありがとうございます。色々試していただき感謝です。重ねてお礼申し上げます。

再度ご指摘いただいた方法で試してみましたが、依然カメラ読み込みは出来ず、といった状況です。(PC環境としてはデスクトップで特にカメラなどは付いておりません。)

ちなみに使っているのがHorusのバージョン0.2rc1で、何度か試みた所感としてはPreference でのArduino Unoへのファームウェア書き込みがうまくいってないようです。

「Upload farmware」をクリックして書き込みインジケーター自体が表示されないので、そこがまずうまくいってないのかなと。

Horus上からのアプローチでダメならArduino IDEから書き込んでみようと思ったのですが、「horus-fw」というINOファイルを書き込もうとしたところそれもエラーになってしまいました。

こうなってくるとそもそもPCと物理的な接続が疑われるのですがいかがでしょうか?

あまりArduinoには詳しくないので正しいはわかりませんが、

Horusの更新が止まってしまっているので私が使用しているものも0.2rc1です。
Upload farmwareを押したときはこちらではゲージが表示されていました。
同じ画面上にありますBaud rateが対応したものでないと書き込みは失敗となりました。またUpload farmwareを押したときにスキャナー本体からカチッとリレー音のような音がします。

これらの挙動がまったくなく無反応の場合Arduinoを認識していないかもしれませんね。