3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MATLAB/SimulinkAdvent Calendar 2024

Day 19

Simscapeを用いたロボットの可動域描画

Last updated at Posted at 2024-12-25

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)角度の組み合わせ生成

  • リニアに数値が上がるソースを配置
  • カウントアップを組み合わせて全角度の組み合わせを実現
    スクリーンショット 2024-12-25 235927.png
    (8-2)SimlinkとSimscapeを接続
  • actuation端子に接続するため微分値が必要?みたいなエラーがでたので,左下の0と1のConstantを置いたらとりあえず動きました.(要確認)
    スクリーンショット 2024-12-25 235958.png
    (8-3)変数に格納
  • out.simoutで変数に格納しておきます.
    スクリーンショット 2024-12-26 000016.png

実行するとMechanics Explorersで以下のような挙動を示します.(1/8倍速)
(エンドエフェクタがずれているのはCAD座標のミス)
レコーディング 2024-12-29 222702.gif

(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とかにしないと遅すぎて使えないので注意.

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?