Gazebo/MoveIt のための 3D モデリング(2)準備編

著者:yamamoto.yosuke

Gazebo/MoveIt のための 3D モデリング(2)準備編

今回の記事のゴールは右の図のようにモデリングに必要な情報を Rhinoceros 上に表示することです.

筆者はこの作業を「召喚の儀式」と勝手に呼んでいます.召喚の儀式を行っても勝手にモデルが湧き出てくるわけではないのですが,このようにすることで効率的にモデリングができると考えています.

作業の流れは次のようになっています.

  1. カタログ → 各投影図の画像
  2. Rhinoceros 上に外形寸法大の直方体を描く
  3. 各投影図画像を空間上に配置

1. カタログ → 各投影図の画像

まず,カタログの PDF ファイルから寸法図の各投影を画像として切り取ります.カタログが紙面の場合はスキャナで画像として取り込むと良いでしょう.

本例では右の図をクリックするとサンプルカタログ画像が表示されるのでそれを使ってください.また同じサンプルカタログの PDF ファイルは下記リンク先にあります.

正面図 左側面図 上面図

Windows の場合は一例として次のように PDF ファイルから投影図を画像として保存します.

  1. PDF ファイルを「Acrobat Reader」で表示
  2. 画像保存したい部分を拡大して
  3. Win+PrintScreen キーで画面をクリップボードにコピー
  4. ペイントを開いて「貼り付け」
  5. 必要部分を選択してトリミング

Mac の場合は同様のことを次のように行います.

  1. PDF ファイルを「プレビュー」アプリで開く
  2. PNG 画像でエクスポート
  3. 2. で保存した PNG 画像ファイルを「プレビュー」で開く
  4. 「プレビュー」でトリミング編集して各投影図としてそれぞれ保存

2. Rhinoceros 上に外形寸法大の直方体を描く

各投影図の画像を Rhinoceros の空間上に配置する前に画像のサイズ調整やモデリングしながら大きさの確認をするなどの目的のためモデリング対象の外形寸法を反映した線画(ワイヤーフレーム)の直方体を描画します.

Rhinoceros を起動します.起動時に表示されるテンプレートの Small Millimeters か Large Millimeters を開きます.

Rhinoceros の設定変更は必須ではないですが,洗濯機のような大きさの対象物の場合は次のようにしておくのをお奨めします.設定変更はメニューバーの ファイル(F) → プロパティ(R)… を選択して小ウィンドウ「ドキュメントのプロパティ」内で行います.

  • グリッド
    • グリッドのプロパティ
      • グリッド線数(E): 200
      • 細グリッド線間隔(G): 10.0 ミリメートル
      • 太グリッド線間隔(M): 10 本(細グリッド線)
    • グリッドスナップ
      • スナップ間隔(S): 0.5 ミリメートル
  • 単位
    • 単位と許容差
      • 絶対許容差(T): 0.001 単位
      • 角度許容差(A): 0.01 度
    • 距離表示
      • 距離の精度(E): 1.0000

それでは Rhinoceros 空間内にモデルの外形寸法に対応したワイヤーフレームボックスを描画します.

分かりやすいように「レイヤ 01」の名前を本記事では「outline」に変更します.レイヤ名は何でも良いです.

  • 「レイヤ 01」上で右クリック → レイヤ名を変更
    • もしくはレイヤ名上でダブルクリック

そして outline レイヤ名の少し右をクリックしてチェックマークを入れて編集対象にします.

カタログの3面図を見ると洗濯機のボディの高さが 1050 [mm],主な幅が 640 [mm],奥行きが 720 [mm] とあります.

またロボットの座標構成は一般的には次のようになっています.

  • ロボットの一般的な座標構成
    • X 正方向 : 前
    • Y 正方向 : 左
    • Z  正方向 : 上

なお,Rhinoceros はどのような分野の座標系を採用しているのか分かりませんがビューの名前とロボットの一般的な座標構成による前後・左右が異なっているので,それはそれとしてビューの名前は気にしないこととします.

このように製品の外形寸法やロボットの一般的な座標構成をふまえて,最初に XY 平面上に原点を重心とする X方向 740 [mm] Y方向 640 [mm] の長方形を描きます.

  1. Top ビューを選択
  2. 曲線(C) → 長方形(G) → 中心,コーナー指定(N)
  3. 「長方形の中心: 」に 0,0 を入力して Enter キーを押す
  4. 長方形の X 方向の長さ(=奥行き)の 720 を入力して Enter キーを押す
  5. 長方形の Y 方向の長さ(=幅)の 640 を入力して Enter キーを押す

次に XY 平面上に描いた長方形を洗濯機の上面に相当する上方に 1050 [mm] コピー移動させます.このような単純な移動は Rhinoceros の「ガムボール」を利用すると良いでしょう.Rhinoceros ウィンドウ内の下の少し右の方に「ガムボール」ボタンがあるのでクリックして有効にします.

  1. Perspective ビューを選択
  2. XY 平面上に描画した長方形をクリックして選択(選択されるとガムボールも表示される)
  3. コピー移動するために Alt キーを押しながら Z 軸(青)をクリック
  4. テキストボックスが表示されるので移動量 1050 を入力して Enter

ガムボールを用いた移動は Ctrl や Alt キーを組み合わせることで次のように働きます.

  • ガムボールの要素をクリックのみ → 選択オブジェクトの移動
  • Alt キー + ガムボールの要素をクリック → 選択オブジェクトのコピー移動
  • Ctrl キー + ガムボールの要素をクリック → 選択オブジェクトのガムボールのみ移動

また,ガムボール以外のコピー移動の方法としてメニューバーの 変形(T) → コピー(C) もしくはコピーのコマンド入力「Copy」もあります.この場合は移動する始点と終点の座標を順次入力してコピー移動させます.

あとは2つの長方形の各頂点間に直線を描画して線で構成された直方体にします.

次の図のようにオブジェクトスナップ Osnap をオンにして端点にスナップするようにチェックを入れると描画時に端点にスナップして正確に描画することができます.

直線コマンドはメニューバーからは 曲線(C) → 直線(L) → 線 で,コマンド入力では Line で実行できます.
(画像をクリックすると大きな画像として表示されます.)

線で構成された直方体が描画できたらそれをグループ化しておきます.全体を選択してメニューバーからは 編集(E) → グループ(G) → グループ化(G) で,コマンド入力では Group で,キーボードショートカットでは CtrL + G でグループ化できます.

後で各投影図画像を配置する時に補助線を描き加えますが,とりあえず outline レイヤーは編集終了ということでロックします.

現在編集中のレイヤはロックできないので「レイヤ 02」を次の各投影図画像を貼り付けるためのレイヤーとして名前を「drawings」などに変更して,drawings レイヤのチェックマーク列をクリックして編集レイヤを変更します.その後で outline レイヤの鍵マークをクリックして南京錠が掛かったアイコンに変更するとレイヤーがロックされます.

 

3. 各投影図画像を空間上に配置

本記事冒頭の「召喚の儀式」の図で示したように Rhinoceros では空間上に画像ファイルを平面として配置することができます.

まず,正面の投影図の画像を配置してみます.

Rhinoceros のビュー名の設定は一般的なロボット座標系の投影面名と異なるので,ロボット座標系から考えると「正面図」は YZ平面(とその平行面)なので,Rhinoceros では Right ビューに相当します. ビューの下にある Right タブを選択したり,Perspective などのビュー左上のビュー名をダブルクリックするなどして4ビュー画面にしてからビュー名 Right をダブルクリックして Right ビュー1つの表示にします.

ビュー左上のビュー名 Right をダブルクリックして全体に表示します.

画像はメニューバーから サーフェス(S) → 平面(P) → ピクチャー(E)  を選択すると「ビッマップを開く」子ウィンドウが開くので正面図の画像ファイルを選択して開きます.

すると「ピクチャーの1つ目のコーナー」を指定するよう言われるので,位置やスケールは後から outline レイヤの直方体に合わせるので,ここでは適当にクリックして指定します.次に「もう一方のコーナーまたは長さ」を指定するように言われるので,Ctrl キーを押しながらマウスを動かすと画像の縦横比を保持したままもう一方の頂点の座標が変化しますのでここでも先ずは適当にクリックしてピクチャーを配置します.

画像の位置とスケールを合わせてゆきます.

まずはコーナー位置を合わせます.正面図のピクチャオブジェクトを選択してオブジェクトを直接ドラッグしたりガムボールを使って移動させ,右の図の例では洗濯機の正面図の右下コーナーを外形の直方体の角に合わせています.画像ファイルなので線はある程度ドット幅を持っていると思いますが,outline レイヤの外形の直方体の線と画像上の線の大体の中心が合うようにします.

次は画像のスケールを outline レイヤの外形の直方体の大きさに合わせます.スケールはまず縦横2方向同時スケールの操作をします.縦横どちらで合わせても良いですが寸法が長い方が相対的に精度がでやすいので縦方向で合わせます.メニューバーからは 変形(T) → スケール(S) → 2Dスケール(2) ,コマンドでは Scale2D で実行します.

  1. 正面図のピクチャを選択,他はスケールしないので選択終了
  2. 正面図右下コーナーをスケールする原点に指定(レイヤーにロックが掛かっていてもオブジェクトスナップはできる)
  3. スケールする元の方向と長さを指定するために,Shift を押しながらマウスを動かすとポインタがスケール原点から縦もしくは横に動きが限定されるので,Shift キーを押しながら正面図ピクチャの上辺付近をクリックして指定
  4. 正面図ピクチャの上辺が outline レイヤの外形直方体の上辺に一致するようにしてクリックでスケール決定

画像ファイルはドット絵(ラスターデータ)であることや,カタログの印刷とスキャンや PDF 化の過程で図形としての縦横比が必ずしも保たれているわけではありません.そのため先ほど 2D スケールを行って縦方向のスケールは合ったものの横方向を確認してみると少しずれているようなことが結構あります.その場合は1方向のみの Scale1D コマンド(メニューバーなどからも選択可能)で横方向のみスケール調整します.

このように位置とスケールを合わせるのですが1回でバシッと綺麗に決まらないことがままあるので何回か「位置」「スケール」を繰り返して調整します.

配置した正面図ピクチャーをビューを Perspective に変更して見てみると,おそらく YZ 平面上にあると思います.この場所だとこれから 3D モデルを作るスペースのド真ん中にあり邪魔になるので X 軸方向に -1500[mm] ぐらい移動させておきます.

あとは同様にして「左側面図」と「上面図」の画像を Rhinoceros 上のピクチャとして配置します.

「左側面図」は一般的なロボット座標系では XZ平面 を Y軸 のプラス方向からマイナス方向へ見ることになります.この視点は Rhinoceros の設定では Back ビューに相当します.Rhinoceros のデフォルトでは Front ビューが最初のセット内に設定されていると思いますのでこれを Back ビューにします.ビュー内左上のビュー名右隣にある ▼(逆三角形)マーク → ビューの設定(V) → Back(A) で変更します.

今回の作例用に用意した「左側面図」には最も外側の寸法だけではなく洗濯機の設置検討に参考にする寸法を入れてあります.外寸のスケール調整をした後に寸法の数値から拾った線を outline レイヤーに加えて寸法補助線と重なるかを見て,スケールが合っているか?,位置が合っているか?など確認できます.今回は洗濯機の設置脚が付いている下部ボディの前端の寸法の数値を拾うと最後部から前方に 605[mm] ( = 550 + 55 )の位置だということが分かりますのでそこに線を引き該当する寸法補助線と重なるかを確認しました.

最初の各投影図をレイアウトする時点で間違ったまま進めてしまうとているとそのあとモデリングしたものが使えないものになってしまう可能性があるので注意してください.

他のヒストリータイプの CAD では遡って修正することも可能ですが,時として修正可能なパラメータから外れてモデルが成立しなくなる可能性も無きにしもあらずなのでまず最初の段階で寸法等確認しながら先に進むことをお薦めします.

Rhinoceros ではオブジェクトの位置や距離を確認するにはメニューバーの 解析(A) → 点(P)距離(D) で確認しながら進めると良いでしょう.

「上面図」は Rhinoceros でも Top ビューですので X方向,Y方向 を間違わずに配置すれば問題ないと思います.

さてこれで本記事の最初に述べました「召喚の儀式」が整いました.

おそらく本記事の読者に召喚術を使える「魔術師」や「陰陽師」の方はそう多くはないと思いますので,次回の記事からは今回準備した「召喚の儀式」の情報を基に地道に Rhinoceros 上で 3D モデリングを行う方法をご紹介したいと思います.


<追記:つづきの記事>

Gazebo/MoveIt のための 3D モデリング(1)はじめに
Gazebo/MoveIt のための 3D モデリング(3)基本形状編 - その1

著者について

yamamoto.yosuke administrator

コメントを投稿するにはログインしてください。