2
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?

Fusion 360で作ったモデルをROS2で利用したい

Last updated at Posted at 2025-01-03

背景

ROS2で関節のあるロボットを動かしたくなった。
KDLとかURDFとか使うんだよと同僚に教えてもらったので勉強したことをメモ。
Fusion 360からURDFを出力するアドインがあるそうなので、それをインストールし、Rviz2に表示するところまで目標にする。

準備

  • Ubuntuの準備
    WSL2でUbuntu22.04TLSをインストール
wsl --install -d Ubuntu-22.04

アドオンのインストール

fusion360でURDFを出力するアドオンがあるそう。いくつかフォークがあるそうだけど、以下を参考にSpaceMaster85/fusion2urdfを利用。

インストールまではハマるところないかな?と思う。ダウンロードしたファイルを以下のコマンドをpowershell上で実行。

cd <path to fusion2urdf>
Copy-Item ".\URDF_Exporter\" -Destination "${env:APPDATA}\Autodesk\Autodesk Fusion 360\API\Scripts\" -Recurse
  • はまりポイント
    基本的に公式通り進めていくとインストールできると思いますが、Python3.9以上ではdistutilsの名前が変わったみたいでそのままでは動かない。実行時にエラーが見えない。
    pullrequestが出てるがまだマージはされてないみたいなのでここに紹介。
URDF_Exporter/utils/utils.py
from distutils.dir_util import copy_tree
URDF_Exporter/utils/utils.py
copy_tree(package_dir, save_dir)

この2行を、下のように直す。

URDF_Exporter/utils/utils.py
from shutil import copytree
URDF_Exporter/utils/utils.py
copytree(package_dir, save_dir, dirs_exist_ok=True)

個人的には、ソフトウェアのこういうところがめちゃくちゃ嫌い。
ハードウェアで言ったら、みんな使ってる半田ごて買ってきたけど、自分で直さないと使えませんよ!みたいなのが平然と出回ってる。解せぬ。

Rviz2で表示するまでの実行手順

ここまでで準備ができたので、順番にいく。

Fusion360でモデルを作成

気を付けること:

  • Fusion360は英語にしておく

  • アセンブリのジョイントを設定(拘束ではなくジョイントにする)
    image.png

  • 子部品→親部品の順に選択しないと正しくインポートされないらしい。

  • base_linkを設定
    base_linkは、そのモデルの基盤となるリンクのことで、単純に名前をbase_linkにするとよい。

実行

image.png

ここから、URDF_Exporterを実行。
image.png

正しく実行されると、保存先フォルダの確認、ROS1/ROS2の確認画面が出てくる。

ちょっとした後処理

URDF変換といいつつ、実際に出てくるのはxacroなので、変換が必要。
先ほど出力したファイルを全て丸ごと、WSL上のROS2のworkspaceのsrcフォルダへコピーする。正しく配置すると以下のようなファイル構成。

/home/ubuntu/
     |--urdf_tutorial
        |--src
          |--launch
          |--meshes
          |--urdf
          |--CmakeLists.txt
          ...

WSL上でMakeする。

colcon build
source ./install/setup.bash

未解決編

ここからは未解決。
公式のチュートリアルに従えば、あとはlaunchするだけで表示できるはずだが、ROS2ではなぜか実行できない。また、URDFファイルもこの時点ではできていない。(なんでやねん!)

  • xacroを実行してurdfを作成。
    ※colcon buildしてからじゃないとxacroは実行エラーになる。
$ ros2 run xacro xacro -o ./src/urdf/[robotname].urdf ./src/urdf/[robotname].xacro
  • Rviz2で表示
    rviz2を立ち上げ、add > RobotModelを選択して[OK]を押す。
$rviz2

image.png
image.png

RobotModelを開き、Description SourceをFileに、その下のファイルタブからファイル名を選択するとロボットが表示されるはず。
image.png

これでやっと表示されました。
なぜか先ほどFusion360上で設定した関節がぐちゃぐちゃになって出てきましたけどね!!!

解決したら追記します。

2
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
2
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?