じどう化とか

ロボット、IoT、AIとか

CADがおしゃべりしたらCADもゲームみたいに楽しくならないかな?

CADのコマンドがゲームの必殺技みたいに叫んだら楽しくないかな?

というわけで作っていみました。
Solidworksでコマンドを実行するたびにwavファイルを呼び出します。動画ではずんだもんにしゃべってもらってます。

エラー処理もろくにしてないので、あくまで遊びの範囲にしてください。なお、bingに相談して作ってます(便利)。


www.youtube.com

概要

今回はSolidworksのマクロを利用しています。

  • Cドライブの中に"C:\temp\wave"というフォルダを作ります。
  • そのフォルダの中に、音声ファイル(WAV)と設定ファイル(CSV)を入れます。
  • 設定ファイルでは、数字と音声ファイルの名前を書きます。数字は、Solidworksでどんな操作をしたかを表すもので、swCommands_e Enumerationと呼ばれています。どんな数字がどんな操作に対応しているかは、次のサイトで見ることができます。
    swCommands_e Enumeration - 2021 - SOLIDWORKS API Help
  • マクロを実行すると、設定ファイルに書いた数字の操作をするたびに、その数字に対応した音声ファイルが再生されます。この効果はSolidworksを終了するまで続きます

マクロ本体

メイン部分

Dim swEventsHandler  As EventsHandler

Sub main()

    Set swEventsHandler = New EventsHandler

End Sub

クラスモジュール部分

Option Explicit
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Public WithEvents swApp As SldWorks.SldWorks
Private filePaths() As String 'ファイルパスを格納する配列
Private commandIDs() As String '数字を格納する配列

Private Sub Class_Initialize()
    Set swApp = Application.SldWorks
    Dim fileNum As Integer 'ファイル数
    Dim i As Integer 'ループカウンタ
    Open "C:\temp\wave\sound_list.csv" For Input As #1
    fileNum = 0
    While Not EOF(1)
        ReDim Preserve filePaths(fileNum)
        ReDim Preserve commandIDs(fileNum)
        Input #1, filePaths(fileNum), commandIDs(fileNum)
        fileNum = fileNum + 1
    Wend
    Close #1
    MsgBox "VOICEVOX:ずんだもん" & vbCrLf & "(Exit Load : " & fileNum & ")"
End Sub

 

Private Function swApp_CommandOpenPreNotify(ByVal command As Long, ByVal userCommand As Long) As Long
    Dim i As Integer 'ループカウンタ
    Dim comandStr As String '再生するコマンドを格納する変数
    '数字と比較して対応するファイルを検索する
    For i = 0 To UBound(commandIDs)
        If commandIDs(i) = CStr(command) Then
            comandStr = "play " & filePaths(i)
            Exit For
        End If
    Next i
    
    '再生するファイルが見つかった場合は、wavファイルを再生する
    If comandStr <> "" Then
        Call mciSendString(comandStr, "", 0, 0)
        'MsgBox comandStr
    End If
End Function

設定ファイルの例("C:\temp\wave\sound_list.csv")

C:\temp\wave\001_ずんだもん(ノーマル)_おしだし.wav,8
C:\temp\wave\002_ずんだもん(ノーマル)_おしだかっとっ.wav,10
C:\temp\wave\003_ずんだもん(ノーマル)_ぐるん.wav,24
C:\temp\wave\004_ずんだもん(ノーマル)_ぐるんかっと.wav,48
C:\temp\wave\005_ずんだもん(ノーマル)_ねじねじ.wav,39
C:\temp\wave\006_ずんだもん(ノーマル)_あーる.wav,9

参考サイト

swCommands_e Enumeration - 2021 - SOLIDWORKS API Help

Handling SOLIDWORKS events (codestack.net)

Qidi i-matesの冷却ノズルダクトを変えてみる

ことの経緯(関係ないし)

Qidi i-matesを運転していると、フィラメントが出てこなくなり、お?

フィラメントを抜いてみると途中で溶けている。

調べていくと、別件で分解修理をしたときにヘッド冷却用ファンを間違えて組付けてしまい。ファンが回らなくなって、ファンが焼けてしまって故障したみたい。細ノズル用のヘッドのファンと部品を交換して修理完了。

で、いろいろ調べている中でQidi用のダクトノズルのデータに出会う!

ダクトノズルの印刷

調べる中で、ノズル冷却用ファンのダクトノズルを見つけたので取り付けてみます。

www.printables.com

サポートがうまくレイアウトできないの45度印刷

結果

 

同じモデルで比較したいので、ダクトノズルを印刷

i-matesに取り付けた様子(取り付けのネジがとどいてない)


(右)ダクトノズルをつけて印刷

(左)標準

(右)ダクトノズルをつけて印刷

(左)標準

標準のダクトノズルではわずかに欠けていた部分がきれいに印刷。気持ち糸引きの糸が細くなったかな?

ClearGraspを使って、透明なボトルをRealsenseで撮影したい!それもWindows(WSL)で

Google AI blogのClearGraspを利用して、透明なボトルを撮影してみる。いつかマッチングをさせたい。という内容です。

現在我が家には、Linux環境がないのでWindowsで行いたいのですが、ClearGraspは構成上でonly Linuxとなっています。このためWSLから実行するために用意しました。

思い出しながら書いているので抜けてるかもしれませんがご容赦ください

github.com

環境を用意

WSLのインストール

WSL2のインストールと分かりやすく解説【Windows10/11】 | チグサウェブ

WSLでUSBを動かせるようにする

【第4回】WSL2にUbuntu 22.04 LTSを導入する(Webカメラを使う) - パソコン関連もろもろ

WSL2 USBカメラ+他のUSB機器 2022年09月06日版

他には、動作試験用にfswebcamやGeditもインストール

3DとRealsense周りは以下の物をインストール

  • Pytorch
  • CUDA

WSL2 上の Ubuntu での NVIDIA CUDA ツールキット, NVIDIA cuDNN, PyTorch, TensorFlow 2.7 のインストールと動作確認(Windows 上)

  • LibRealsense

RealsenseをセットアップしてROSやUnityで使う方法

【第4回】WSL2にUbuntu 22.04 LTSを導入する(Webカメラを使う) - パソコン関連もろもろ

/bin/sh: 1: bc: not found

buを別でインストール

3.9.1-landiskクロスコンパイル - forester3の日記

 

本体の用意(での問題点)

  • $ sudo apt-get install libhdf5-10 libhdf5-serial-dev libhdf5-dev libhdf5-cpp-11
    で"libhdf5-10"と"libhdf5-cpp-11"がインストールできず。
    "sudo apt update"などやったが効果なし。
    結局問題のあった"libhdf5-10"と"libhdf5-cpp-11"を取り除いて実行
    $ sudo apt-get install libhdf5-serial-dev libhdf5-dev
    なんでこれでよいかがわからない。
  • $ pip install -r requirements.txt
    でCould not find a version that satisfies the requirement opencv-python==4.1.2.30と怒られる。opencv-python==4.1.2.30が無いとのこと。
    requirements.txtをopencv-python==4.7.0.68と書き換え
  • depth2depthは"api/depth2depth/gaps"に入っており自分でコンパイルする。
  • depth2depthをコンパイル中、GL/Glu.hが無いといわれる。

    以下を実行した。
    $ sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
  • python起動し足りなかったライブラリは入れていく
  • eval_dept_completion.py を実行の際に__init__.py周りでエラーが出た。__init__.pyの書き方を少し修正した。

  • live_demoを起動するために、パイプラインソフトを起動するとエラーが出る。
    • realsense.cppの解像度を変更、154,156行のフレームレートも30fpsに固定

    合わせてcamera.pyも修正
  • ダウンロードした”cleargrasp-checkpoints”はフォルダ"data"以下に"cleargrasp"といフォルダを作って入れる
  •  libcuda.soのリンクが見つからない

    "~/.bashrc"に以下を追加
    export PATH=/usr/local/cuda/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/lib/wsl/lib/:$LD_LIBRARY_PATH
  • camera.pyでエラーが出る。

    284行目のlongをint64に修正

普段の起動

wslにUSBを紐づける

USBのリストを確認して、1-5をwslに紐づける

wsl側

>usbipd wsl list

>usbipd wsl attach --busid 1-5

以下、画像は1-5を紐づけた様子

wsl側でカメラの接続を確認

$ lsusb

カメラの権限を変更する

$ sudo chmod 777 /dev/video*

カメラ準備完了

デモを動かす。まずはRealsenseの画像をTCP経由(パソコン内)で渡すソフトを起動する。このソフトは"&"をつけて起動したまま次のコマンドへ行く。

$ cd ~/cleargrasp/live_demo/

$ ./realsense/build/realsense &

続いてスクリプト本体を起動する

python live_demo.py -c config/config.yaml

 

WSLでUbuntu,Python,PyTorch,CUDAのバージョンを確認

Ubuntuのバージョンの確認

$ lsb_release -a

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04
Codename:       jammy

Pythonのバージョンの確認

$python3 --version

Python 3.10.6

PyTorchのバージョン確認

PyTorchのバージョンを確認 (version) | 日々、学ぶ

$ pip show torch
Name: torch
Version: 1.13.1
Summary: Tensors and Dynamic neural networks in Python with strong GPU acceleration
Home-page: https://pytorch.org/
Author: PyTorch Team
Author-email: packages@pytorch.org
License: BSD-3
Location: /home/ootone/.local/lib/python3.10/site-packages
Requires: nvidia-cublas-cu11, nvidia-cuda-nvrtc-cu11, nvidia-cuda-runtime-cu11, nvidia-cudnn-cu11, typing-extensions
Required-by: torchaudio, torchvision

CUDAのバージョン確認

$ nvidia-smi
Thu Jan 19 23:30:12 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 527.92.01    Driver Version: 528.02       CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Quadro P1000        On   | 00000000:01:00.0  On |                  N/A |
| 34%   35C    P8    N/A /  47W |    635MiB /  4096MiB |      2%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

 

 

1mmノズルでPETGの透明を何とかきれいに印刷したい2「直行表で実験して、多変量解析で要因ごとに分解し、ソルバーで解くアプローチをエクセルで」

1mmノズルでPETGをきれいに印刷したい。

でも、条件が出ない・・・ということが続いているので実験計画法を使って調節してみます。・・・のパート2です。

アプローチの紹介

今回は条件を探るために、エクセルでプリンタ設定と各不具合の関係式を作ります。その式でシミュレータし、不具合が最小になる設定条件を求めて印刷してみます。

結果➡失敗!

最終的にまったく満足いってません。なんなら前回より悪化しています。太ノズルは難しいですね。

いい経験になったので、記録としてまとめおきます。

続きを読む

PETGの透明を何とかきれいに印刷したい「実験計画法 直行表でのアプローチ」

1mmノズルでPETGをきれいに印刷したい。

でも、条件が出ない・・・ということが続いているので実験計画法を使って調節してみます。

テストサンプルとしてφ30のカップ(厚み1㎜)を作ってみました。

テストサンプル

糸引き、コブ(表面のでっぱり、写真中央、ノズルを走らせたときに引きずるのが原因)、泡立ち(壁の透明樹脂が泡立ち強度の低下と透過度の低下を招く、引き戻しを行うと顕著)、つながりのコブ(Zホップ時に溶融樹脂がツノになり飛び出る)の観点で確認しました。

要素は、今までの経験で関係ありそうなものを並べてL8としました。

直行表

具体的な値は、次のようにしました(値は経験値から振ってます)。

で、CURAでパラメータをいじって印刷。

実験結果一覧

糸引き、泡立ち、つなぎ目ごとにランキングをつけてその値を利用して計算しました。本当は、糸引きの度合いや泡立ちの度合いを数値化すればいいのですが、今回は簡単のためにランキングの値を利用しました。

見たい要素以外の部分を合計し、低いほうを見つけるようにしました。

この表から最適なパラメータを考えましたが、温度、フロー、外壁移動距離、Zホップ高さは共通でしたが、引き戻し長さ、印刷速度が目的によって異なりました。

今回は、えいっで次のように最後に実験を行いました。

比較的きれいになり、糸引きはほぼ最小できました。しかし、泡立ちは起きているのと、ノズル経路のコブが出ています。

次は泡立ちと、コブの関係をもうちょっと詰めていきたいと思います。

Realsenceで遊ぶメモ1「接続してリアルタイム表示➡ダウンサンプリングを試す」

最終目標Realsenceでピック&プレイスをしたい!に向けて遊んでいきます

なお、カメラはD415です。

リアルタイム表示したい。

ネットを探してkobotさんの記事にたどりつきコピペ。

kobot.hatenablog.jp

 

私の環境では、以下の部分を直さなくては動かなかった。

  vis.update_geometry()

    vis.update_geometry(pointcloud)

 



 



詳細3次元点群処理を買ってたのでダウンサンプリングを試したい。

  pcd = o3d.geometry.PointCloud.create_from_rgbd_image(rgbd, pinhole_camera_intrinsic)

この下に、次を付け加え
    #down samplingの実験2022年11月16日
    pcd = pcd.voxel_down_sample(voxel_size=0.03)

結果



あら簡単。