2026年5月6日水曜日

OpenPnP:Bottom Vision Pipelineがうまく行かない時

いろいろいじっているうちに不調になってしまいまして。

リカバーで苦労するんだったら、その経緯と結果をここに「こういうpipelineを設定すればバッチリ!」って書こうと思ったのですが……

  1. パーツのbottom vision pipelineをリセットする
  2. 調整したい部品をノズルに吸い付ける
  3. カメラのブライトネスを調整する
    1. Machine SetupのCameraのDevice Settingタブで、全部の数値をデフォルトに戻してAutoを外す
    2. Brightnessを±2ぐらいの範囲で調整する
    3. Partタブで調整したい部品をクリックし、Bottom Vision Settingタブを選び、Test Alignmentボタンをクリックし、ノズルの先の部品が正しく赤枠で囲まれているかを確認する
    4. 囲まれていなかったら2に戻る

これだけでした……要するに、パイプラインはいじらずにカメラをいじれってことです(ヤサグレ

といいますか、pipelineの各項目やその関連についての情報がないんですよね……どなたか見つけたら教えてください。

どっとはらい。

Tips

Machine Setup->Cameras->OpenPnp Capture Camera Bottom VisionのDevice Settingタブで、Brightnessなどの数値を変更してもApplyが有効になりません。

バグじゃん?と思ったけど、これは「数値が即座に反映されているからrevertできないよ」という意図なのかなぁと思ってます。つまりApplyしなくても数値は設定に反映されています。

この辺、Autoのチェックボックスがそれぞれあるんですが、遅くてpipelineには間に合いません。地道に設定しましょう。

Bug?

まだ調査中ですが、Reference Auto Feederで、左下のパネルのActuatorタブから"Set feeder address"でIDをセットして、"Feeder Forward"ボタンからIDを指定するとちゃんとフィードするんですが、メイン画面のFeedersタブからfeedしても動いてくれません。泣いてます。

メイン画面でパーツをピックアップしてノズルに吸着した状態だと真空ポンプがうるさいです。用が終わったらさっさと左下パネルのSpecialタブからDiscard / Recycleしていたのですが、その状態はすぐ上のnozzle表示には反映されるのですが、メインパネルの状態には正しく反映されないようで、アプリを再起動しないと正常になりません。

どうも左下のパネルとメインパネルとの間の連携うまく行ってない感じですね。昔Java屋だった時代もあるので、いろいろと昔の日々を思い出しております。

なお、その状態でも実装するときにはちゃんとフィードされます。どうなってんだ。使い方の問題?ごめんなさい←先に謝っておくという生き方

2026年5月2日土曜日

OpenPnP:Bliend Feederのレンダリング修正

OpenPnPはオープンソースなので、部品を供給するフィーダーが何種類も3Dプリントで作れるように公開されています。ヘッドで自動的に送るもの、電動、テープを貼り付けて静置するものなどいろいろです。

その一つのBlinds Feederは、3Dプリントした土台にテープをセットしてカバーの透明シールを剥がし、同じく3Dプリントしたフタを被せるようになっています。フタをスライドすると中身が飛び出さないようになり、実装のときにはフタをスライドして中身が見えるようにしてから稼働します。

どういう部品(カットテープ)を使うかをスクリプト?でセットすると、OpenSCADというやはりオープンソースのツールが3Dでレンダリングしてくれます。そのSTLを3Dプリンタに持っていけば、部品名のばっちり入った専用フィーダーが手に入るという素晴らしさ。

なのですが……試すとラベルが出力できません。

Claude Opusさんに相談したら3回ぐらいのやりとりで問題が修正されました。

いやー……大したもんだ。

ちなみに、冒頭の画像は、以下のスクリプトで生成されたものです。

    arrayed_tape_lanes=      [
        LaneDefinition(1, tape0402,   ["R0402-316K"]), 
        LaneDefinition(1, tape12mm,   ["LTC4011CFE"]), 
        LaneDefinition(1, tape12mm,   ["TPS630701"]), 
        LaneDefinition(1, tape0402,   ["C0402-100nF"]), 
        LaneDefinition(1, tape0402,   ["R0402-100K"]), 
        ],    

いやー……大したもんだ。

なお、光学認識の精度を高めるために、緑色のフィラメントを使うとクロマキーあれこれで認識精度がよくなるらしいです。

修正したスクリプト?はgithubに上げておきます。オープンソースほんと何もわからんのですが、とりあえず元がGPL 3.0なので公開しておかないといけないよね、ということで。

2026年5月1日金曜日

OpenPnP:Tips:ズレた!?

OpenPnPの実装機PSE-3000を順調にテスト中です。

が。模様替えしていて掃除機で強打してしまいました。

ヘッド(ピックアップを上下させるところ)が曲がってしまったようで、0.05mmほど部品がズレて置かれるようになってしまいました。

光学的な処理は問題ないので、たぶんカメラ位置とピックアップ軸とがずれたのではないか?という推測のもと、関係しそうなところを片っ端からいじっていたら(原始人)、見つかりました。Machine Setup→Heads→ReferenceHead H1→Nozzlesの下に2つノズルがあって、私の場合、両方ともズレますので個々に


Configuration→Coordinate Systemを直します。今回、上に0.05mmほどズレるので、Yの値を0.05mm変えたところ、無事真ん中に置かれるようになりました。

焦りました……自分のミスなのでメーカー製品だったら、サービスマンに来てもらって10万円ぐらい請求されかねない事態でしたが、オープンソース製品こういうところ助かります。

ソフトの改良などでオープンソースに貢献する日が来るかどうかわかりませんが(バグはいくつか見つけましたが)、とりあえずTIPSを公開しつつ恥を晒して生きていこうと思います。