1. はじめに
多自由度のロボットの可動域を3次元的に表現したいことってありますよね。
単純にプロットする分には数値計算で点群を生成することはできます.
ですが,3Dモデルを配置しないと直感的に可動域を把握できない
公式がサンプルこの辺の事例ではRigid Body Treeの仕組みがどうも理解できず...
お手軽にやる方法を発見したので共有します.
※デジタルツインにも使えそうなのでこの手法を取りましたが,運動学モデルがあれば点群だけ生成+STL取り込みで同じことができます.
2. 対象者
Autodesk Fusionとsimulinkの基本的な操作ができる人.
SolidWorksやCreoもプラグインの対象なのでXXXXファイルを出力するのはそちらでも問題ありません.
【ソフトウェア】
- MATLAB R2023b
- simscape multibody
- Autodesk Fusion
- Autodesk Inventor 2021
- Simscape Multibody Link Plugin
Inventorのバージョンについては以下のサイトで対応するバージョンを確認してください.
※2024/12/20現在Inventor 2021がサポート終了しており製品とサポート
ページやチャットサポートからダウンロードできないようです.現状,インストーラーさえ所持していればソフトの起動自体はできそうです.
[1] MathWorks, "Install the Simscape Multibody Link Plugin",
https://jp.mathworks.com/help/sm/ug/installing-and-linking-simmechanics-link-software.html
3. 流れ
(1) 各種ソフトインストール
3DCADとMATLABの以下のアドインをインストールしておいてください。
- simscape
- simscape multibody
(2) Link Pluginインストール
インストール方法は公式サイト[1]に記載してあるのでそれ通りに進めてください.
(3) Autodesk Fusionのモデルをエクスポート
Inventor専用のファイルにエクスポートできればいいのですが,最新版のFusionだとInventor 2022以上のファイルしかエクスポートできないのでstepファイルでエスポートします.
(4) Autodesk Inventorで読み込み再ジョイント
Inventorで直接CADデータを作成している場合はそのままで問題ありません.
Fusionでエクスポートしたファイルにはジョイント情報が含まれないので再ジョイントします.
(5) エクスポート
Pluginを使ってCADモデルをエクスポートしてください.
(7) simscapeモデル編集
できたSimscapeモデルを編集していきます.
Jointブロックをダブルクリックし,以下のように書き換えます.
Actuation > Torque: Automatically Computed
Actuation > Motion: Provided by Input
Sensing: Position
(8) 点群データ生成
さらに,点を打っていくアルゴリズムをブロックで組み,運動学のプログラムを組み込みます.
実行すればviewerでモデルが動き回るのを確認できると思います.
(8-1)角度の組み合わせ生成
- リニアに数値が上がるソースを配置
- カウントアップを組み合わせて全角度の組み合わせを実現
(8-2)SimlinkとSimscapeを接続 - actuation端子に接続するため微分値が必要?みたいなエラーがでたので,左下の0と1のConstantを置いたらとりあえず動きました.(要確認)
(8-3)変数に格納 - out.simoutで変数に格納しておきます.
実行するとMechanics Explorersで以下のような挙動を示します.(1/8倍速)
(エンドエフェクタがずれているのはCAD座標のミス)
(9) 3Dモデルを重ねる
Plotに3Dモデルを取り込めれば完成です.
有志の方が作成したSTLReaderを使ってSTLファイルからMATLABにジオメトリをインポートします.
[参考] Eric Johnson, "STL File Reader - File Exchange - MATLAB Central",
https://jp.mathworks.com/matlabcentral/fileexchange/22409-stl-file-reader
4. さいごに
(8-1)のブロックの部分をシリアル通信で角度値を受信すればデジタルツインにも使えます.
その場合,viewerの再生速度をx8~x32とかにしないと遅すぎて使えないので注意.