前回、とりあえず出来たので動作させましたが結果があまり思わしくありませんでした。
まあ何でも一発で完成なんてこたぁ無いですよね^^;
気を取り直して調整出来るとこを調整します。
まずはFreeLSSのSettingsメニューからレーザー、カメラの距離をきちんと調整します。
(記事下の方に設定方法の解りにくかった箇所を記します。)
カメラやレーザーの位置がおかしいと当然出来る図もおかしくなります。
ちなみに、FreeLSSのXYZ軸方向は3Dプリンターのそれとは異なる事に注意です。
3DプリンターのXY軸方向は真上から見下ろした状態で、高さがZ軸ですが、FreeLSSのXY方向はカメラを通して左右がX軸、上下がY軸、奥行きがZ軸です。
原点は回転台の中心と考えます。
Settingメニューでこの辺がごっちゃになると軽くパニックですので図示しておきます。
その他調整中にいろいろと気付くことがありました。
・取得するファイルを.stlから.plyへ変更しました。
3Dプリンター出力に適した.stlファイルですが色情報が無いので何を取得しているのか解り辛いのです。.ply形式は色情報が反映されるので変なデータであってもどこが壁だとか物体だとかが解ります。
・背景と回転台を黒色である必用があります。
必ず必用という訳ではなさそうですが、その方がレーザー光と外光との判別がうまくいくようです。
スキャンは左右どちらか一個のレーザー、あるいは両方のレーザーを使った3パターンの検出が可能だそうです。
両方使った方が精度が良いだろう!と踏んで設定していたのですが実験的にレーザーを分けてみたところ、それが仇になってうまくスキャン出来ていなかったことに気が付きました。
左のレーザーでスキャンした場合
うおっ!それっぽいの出来てるじゃんっ!!(なんか歪んでる気がするけど)
右のレーザーでスキャンした場合
新種のキノコかな?
左のレーザーのほうが表面が綺麗に検出できています。
が、少し押しつぶされたようにも見えます。
右のレーザーでは凹み部分が上手く認識できていないようです。
全体の型は右の方が合っているように思います。
両方を合わせて比べると
全然違います。んー、これではうまくいかないはずです。
ちなみに、両方のレーザーを使ったモードでスキャンしたものがこちら
なんだこれ??
ちなみに、上の輪っかはどうやら壁をスキャンした結果のようです。
とりあえず結果の良かった左のレーザーで他のものもスキャン実験することにします。
コーヒーカップのスキャン
FreeLSS実験3
そうそう、取手が取れた方が収納は楽だよねー!っておいっ!!
↓
取手が勝手に取れました!
いろいろスキャンして調整してみて解った事が1つあります
どうやらカメラの水平がとれていない!
ということです。
カメラのマウントを適当なアルミ板にしていたので細かな修正が効きません。
仕方ないので3Dプリンターで微調整の出来る部品を作って改良することにしました。
各軸の設定の方法です
※注意 (以下、設定項目で日本語表示されているところはGoogleブラウザの自動翻訳によるもので、実際は英語です。)
例えばカメラのY軸(回転台からカメラまでの高さ)を90mmに設定した場合
カメラのガイドを通してみるとこのように見えます。
赤い十字を参考に垂直、水平が調整できます。
しかし、これでは回転台の中心位置が解りません。
カメラの高さを75mmに設定してみますと
見えますか?
垂直の赤ラインの下の方にちょこっと水平の赤ラインが出ています。
ここが回転台の中心になるようにカメラを合わせるようです。
綺麗に調整できました。
レーザーとカメラ位置の設定はX軸とZ軸で行なうようです。
レーザーとカメラのZ軸は固定、つまり同じ位置に設定する必用があります。どこに合わすのかといいますと↓
要はレーザー角度の問題なので実際にはカメラ手前でも奥でも問題無いようです。
カメラの中心軸から見てレーザーの延長線上の点をレーザーの距離Xとして設定します。
注意点として、右レーザーは「160mm」等と設定しますが、左レーザーは「-160mm」と、マイナス値になるということです。(僕はここの設定ミスしてきちんと像が作れずに悩みました。)
レーザー光はレーザーモジュールの適切な位置を指定した後、キャリブレーション設定することで適切なラインを読むことができるようです。
方法ですが、公開されているデータの中のキャリブレーション用柄を印刷して垂直に立てます。
回転台の中心軸に置き、キャリブレーションボタンを押すだけです。
成功です。
とりあえず調整後のスキャン実行をしてみます。
左レーザーでスキャンした結果
前のものと比べてみるとカメラの水平が取れたからでしょうか?しっかりと垂直になっています。
右レーザーも、前よりは良い感じです。
さて、この切れ目は?
ひょっとしたら回転がうまくいっていないのかも?
立方体スキャンで実験してみます。
ありゃりゃ。
これは、物理的に360°回転していないにも係らず360°スキャンした結果ですね。
確認してみます。0°時点
360°回転後
ソフトウェア的な問題なのか物理的な問題なのかの切り分けが必用そうです。
モーター軸を確認してみますと
オイルが染みてきています。
もしかしたらこれがプーリーを滑らしてしまったのかもしれません。
実験的にプーリーに傷を入れてみます。
0°時点
360°回転後
ありゃ、今度は行き過ぎてしまってる?
とりあえずこのままスキャン
あんれー?マシにはなってるけど完全じゃありません。360°回転し切れていません。
もしかしたら他にも原因があるかも、、360°回転で問題が無く、スキャン中に問題が出るということから、物理的な要因としてはプーリーにダイレクトに回転が伝わっていない可能性が考えられます。伝達が輪ゴムですから各ステップごとにイチイチ伸縮しているのかも?
ソフト的な要因としてはラズパイからモータードライバへ適切な信号が送られていないのかもしれません。
とりあえず物理的な方から攻めてみます。
輪ゴムプーリー式のものを
ギア式に変えて
ギアに換えると回転方向が逆になるのでモーターも逆回転が必用です。ステッピングモーターのDIR信号のLi/Loを切り替えると出来るのですが、そのような設定項目が無かったので物理的に切り替えます。
ステッピングモーターの場合、どちらかの層の一方の配線を入れ替えるだけです。
写真の方向が違いますが、このようにすれば逆回転ができます。
ステップモードも1/4モードから1/8モードへ変更
ステップ反応速度も脱調しないよう変更。
テストで360°回転も無事に成功!
ギア式にして振動が大きくなったので検出物にも両面テープを貼付けました!
これで物理的要因は排除した!カンペキ!
いざ!スキャンしてみた結果
・
・
・
・
!!?
見事な三角!!!
なんでやねんっ!!
そういえば、スキャン中に時々ステップの振動が飛んでる気がしました。
もしかしたらソフト側の問題でしょうか?
以下のようにいろいろと実験してみました。
実験1:とりあえず、ステッピングモーターのフルステップモード できちんと360°回転(120stepモーターをギア駆動、ギア比1:5なので600step)できるか試しました。
結果:問題無し!
実験2:フルステップのままスキャン実行しました。
結果:動かない!(うんともすんとも)
実験3:フルステップモードのまま倍の1200step指定で360°か回転するか試しました。
結果:当然2回転しました。
実験4:2回転すると予想しながら1200step指定のままスキャン実行しました。
結果:360°回転でキチンとスキャンできました!(???)
実験5:モータードライバ1/2ステップモードにして2400step指定でスキャンしました。
結果:4面体が6面体になりました。
実験6:実験5の結果を踏まえて1800step指定でスキャンしました。
結果:きちんと四角になりました!
よくわかりませんが、原因はソフトウェア側の問題というか、勝手なモーターに変えたこちらのせいですがよく解らないなりに解決しました。
フルステップモードで1200step/360°か、1/2ステップモード1800step/360°指定でとりあえずスキャンできるようにはなりました。
最初のに比べると精度もすごくよくなっています。
初っぱなでグチャグチャデータだった置き時計のスキャン
ぐちゃぐちゃですが時計?らしきものは取得できているようです。
反射する材質+透明ガラス+黒色材質というスキャンには悪条件の揃ったテストには辛いオブジェでした。
まだまだ改善の余地はありますが今回は大まかな形状が取得できたので今回はこれでOKとします。
ちなみに、スキャン中にプビューすると黒い回転台にモデルが形成されていくのが見えます。これは地味に楽しいです。
両方のレーザースキャンモードで左右のレーザーの位置の設定がおかしいと、このようにズレてスキャンされます。
スキャンをプレビューで確認しながら微調整しましょう。
実験の途中、ギア歯をヘリカルギアにアップデートしました。15mm+75mm
こういうのをサクッと作れるのが3Dプリンターの良いところですよね。
面倒なギアの作成はこちらのサイト↓を利用させていただきました。
レーザーはレンズの精度が悪いのか、広がる傾向にあったため複数段のレンズをテープで塞ぎ1つに絞りました。レーザーは細い方が良さそうです。
安物のレーザーだからなのか、どうも最初から左右のレーザーの広がりが違うようで綺麗にスキャン出来る方だけ使うことにしました。
今回は長くなりましたが、とりあえず無事に動いたので今のところ調子の良い設定値を備忘録として残します。
動作の様子
マシン全体は電源含めこのような感じでまとまりました。
<今後の課題>もっと精度を良くするために
・レーザーをもっと質の良い物(広がりの少ないもの)に変える。
・フルステップモードのままギアを足してステップ数を増やしてみる。
・光沢のあるオブジェの検出が難しいので乱反射を防ぐ為に偏光板を利用してフィルターをかける。
・外光の影響も関係しそうなので暗室にしてLED照明を付ける。
・レーザー以外の赤色光線を除外する(カメラとラズパイの動作赤LED隠蔽、照明を青緑光のみにする)。
長くなりましたが・・・
<まとめ>今回の設定や実験で解ったこと。
・カメラレビューモードの360°回転が成功したからといって実スキャンで360°回転できるとは限らない!
・フルステップモードが一番精度良い。
・左レーザーのX軸設定は「−(マイナス)」値の指定をしましょう。
・レーザーは精度が良ければ1つで作れる。
・レーザーは精度の良い細いラインのものが望ましい。
・レーザー2つのモードだと互いのレーザー距離設定がシビア。
・レーザーは不検出エリアが増えるのでカメラからあまり離しすぎない方が良い。
・ギアードモーターは煩い。
・回転は一方向(半時計回りのみ)なのでギアードモーターでもバックラッシュの問題は起こらない。
・ラズパイ2でも3でもスキャンスピード自体はそんなに変わらない。
・レーザーのキャリブレーションはSettingsで指定したスキャンに使う側のレーザーのみに対して行なわれる。
・スキャン対象物は白色マット調の物が望ましい。
・黒色、反射する白色や金属、透明のものはスキャン困難。
・僕みたいにテキトーな材料で作ると後で調整が大変(あたりまえ)。
とりあえず今回取得したようなそのままでは使えないようなデータでも、例えば機械のパーツやスマホのケースを作る時には位置決めの参考になります。
3Dデータ取得後にソフトを使って表面処理をするともっと綺麗な3Dデータになります。
次回は、取得したデータの表面処理について触れます。