立体地図を作る -ピースに磁石を埋め込んでみた。-
立体地図のピースに磁石を埋め込んでみました。紙の上でピースを組み合わせているとすぐに動いてしまうので、磁石がくっつくホワイトボードの上などでやれば気楽に楽しめるのではないかと思ったのです。各ペースの3DモデルをZBrushで編集して裏面に円筒形の磁石を埋め込む穴をあけて出力し、Amazonで買ったネオジム磁石を埋め込んでみました。
上の写真で左は直径5mm、右は直径2mmの磁石を埋め込んだものです。
3Dプリンタの調子も良くなったところで出力作業を続け、北海道と沖縄以外の都府県のピースは出力が終わりました。しばらく四苦八苦してピースを合わせたのがこんな感じ。
磁石でホワイトボードにくっついているのでちょっとゆらしたくらいでは動きません。
縦に起こして持っても大丈夫。
Adventure3のフィラメントがロードできなくて困った件の顛末
3DプリンタAdventure 3を使い始めて3か月強、順調に働いてくれていたプリンタですが2度目のフィラメントの交換時にトラブルが発生しました。ロード/アンロードが機能しなくなりフィラメントの送り出しが全くできなくなってしまったのです。ノズルの詰まりが原因かと思って付属の針金で掃除したのですが状況は変わらず。
メールでサポートに問い合わせたところ対処方法として提示されたのが
1.較正をやりなおす
2.ノズル温度を上げる
3.押出部のギアについているカスを掃除する
でした。ノズル温度が高い状態で物理的に手でフィラメントを引っ張っても全く動かないので正直1や2の処置で問題が解決するとは思えません(いちおう試したけれどやっぱりだめした)。3.についても見える範囲ではカスはついていません(見かけは下記のような感じ)。
原因は押出部だなとあたりをつけて思いきってギア回りの部品をはずしてみたら、やはりでした。下の写真(フィラメントは抜いた状態)のように折れたか剥がれたかしたフィラメントのかけらが詰まっていました。
このかけらを除いて部品をはめなおせばよかったのですがここで大失敗。部品のバネをはめそこねてプリンタ筐体の裏側に落としてしまったのです。しょうがないのでまたサポートに助けを求めたらていねいに筐体の分解手順を教えてくれました。
これで落ちていたバネを見つけてもう一度組み立てて無事にロード/アンロードができるようになりました。
これで大丈夫と出力しようとしたら出力途中で頻繁に(というか必ず)filament errorが発生して出力を中断してしまうようになりました。ノズル温度が低いのではないかと思い初期設定(210℃になっていたけと最初からこうだったかな?)より少し上げて220℃にしたところ快調に出力するようになりました。何も設定を変えていないのになぜerrorがでるようになったのかは不明ですがいまのところは結果オーライで使用しています。
今回のトラブルですが、ノズルが詰まっている/詰まりかけている状態でロードのときに無理やりフィラメントを押し込もうとしてフィラメントが割れた/剥がれたのが原因のようです。これまでノズルの掃除は全くしていなかったのですが、今後は定期的に実施せねばと思いました。
立体地図を作るのに便利なプログラム2種についての覚書
立体地図のモデル(OBJ形式)を制作で品質や作業効率の改善のために以下のようなPythonプログラムを作ってみました。いずれもOBJ形式データを生成するませに標高メッシュの情報を表すCSV形式のデータの前処理を行うプログラムです。
標高値の平滑化(ガウシアンフィルタ)
https://www.dropbox.com/s/eljitfa74xgbq7r/Gaussian.py?dl=1
山脈部分を触るとチクチクしてちょっと痛いという指摘があったこと、ピースを組み合わせて遊んでいるうちに細かい凸が折れたりつぶれたりしてしまうことがあったので凹凸をある程度ならして平滑化するプログラムを作ってみました。
3×3の重みづけマトリックス(下図)に従って標高の値の加重平均を計算していきます。
右は左のオリジナルモデルに対して加重平均フィルタを3回かけた結果です。表面の凸凹がだいぶ滑らかになりました。
形状の平滑化(モルフォロジー処理)
https://www.dropbox.com/s/bqloitvmkkb3o40/OpenClose.py?dl=1
QGISから取り込んだ標高データをそのまま3Dモデルにすると標高の低い部分でぽつんと穴があいたり、県境の形状が1メッシュ分だけ飛び出してはめ合わせがしにくくなったりします。これまでは3DをGenObj.pyで生成してからZBrushに読み込んで手作業で修正していたのですが、何十個もやっていたら肩こりと緊張性頭痛がひどくなってしまい自動化を検討することにしました。
モルフォロジー処理の拡張操作(注目点の周り3×3のいずれかにデータがあれば注目点にも標高のデータを補間する)、縮退操作(注目点の周り3×3の全てにデータがある場合のみ注目点のデータを残す)を実装し、まず穴を埋めるためのClose処理(先に拡張を行ってから縮退を実施)を行い、続いてかたちを整えるためにOpen処理(先に縮退を行ってから拡張を実施)を実施することにしました。
左端のオリジナルでは浜名湖(佐鳴湖?)のあたりに穴があいて抜けていますがクローズ処理によって塞ぐことができています。続いてオープン処理を行うことで輪郭の形の細かい凹凸をならしています(右端の画面)。金魚のような形の背びれの部分などはこれによってはめ合わせがしやすい単純な形になりました。これまではOBJファイルを作ってからZBrushのZModelerブラシで面をひとつずつ操作してこれらの修正を行っていたのがとても楽になりました。
立体地図を作る -本州部分を3Dプリントしてみた-
Adventure 3を使って本州部分の1都2府31県を立体地図パズルのピースとして出力してみました。
はめ合わせてみるとこんな感じ。場所によってかため、ゆるめのばらつきはあるものの全部のピースをはめ合わせることができます。DMM.makeに出力をお願いした場合(ナイロン)より少し精度は落ちる印象ですが、コストは数分の一ですみます。
3Dモデルの作成方法は以前Blogに記載したのと基本同じです。
- QGISを使ってJAXA、国土地理院のデータから座標ごとの標高一覧(CSV)を作成
- PythonのスクリプトでOBJ形式データ作成
- ZBrushに読み込んで小さな穴や凸凹を修正
- FlashPrintに読み込んでモデル補正やサポート材を付与後、出力
3Dプリンターを購入したことで楽になったのは4の作業です。プリント結果を得られるまでの待ち時間が短くなったことはもちろんですが、業者に依頼していたときは事前に業者指定のチェックツールでエラーがでないようにモデルを補正しておかないといけなかったのですが、これがプリンター付属のソフトで簡単にできるようになりました。
まとまった数のピースを3Dプリントしてみて悩ましいなと思ったのは、どれくらいの縮尺率で地図を作るのがパズルとして遊びやすいのかという点です。今回は水平方向の縮尺を2775000分の1にしていますが、本州部分だけでけっこう大きくなってしまい(A4サイズを大幅にはみ出している)日本全土をパズルとして楽しむには相当大きなテーブルが必要になってしまいます。もうひとまわりぐらい小さくしたいのですが、日本の県の面積って下の写真のようにずいぶんばらつきがあって全体が手ごろな大きさになる縮尺だとただでさえ小さな都府がさらに小さくなってしまいます。東京や大阪などをどのくらい小さくしても受け入れられるのかというのは難しい判断です。
クインジェット試作3号機についての補足
パーツを結合させたときにすきまができてしまう問題について、3Dペンと半田ごてを使って補正を行ってみました。下の図で左端が接着しただけですきまがあいている状態、中央は3Dペンをこて代わりにして本体と同じフィラメントですきまを埋めた状態、右端は半田ごて(こて先が平たいやつ)で凸凹を伸ばした状態です。
PLA樹脂用のやすりをかけたりして指でさわった感じではそこそこスムーズになったのですが、見栄えはいまいち、塗装したらきれいになるかな? まだまだ試行錯誤が必要です。
ちなみに今回すきまを埋めるのに使った3Dペンはこちら。工夫次第でいろいろおもしろい使い方ができそうです。
Fusion 360でクインジェットのモデリング:試作3号機は自社生産で
これまで試作したクインジェットは3D出力をDMM.makeにお願いしていましたが、試作3号機ではついに設計から生産まで市田屋工務店での一貫制作が実現しました。下の写真のオレンジ色の機体がAdventure 3で出力したパーツを組み合わせて完成させたクインジェットです。
写真左の2号機用にFusion 360で作成した3Dモデルを基本的には踏襲していますが、安価なFDM(熱溶解積層)方式のプリンタで出力できるよう小さくて精度が必要な形状については見直しを行っています。下の図は後部ハッチを開閉するための軸の部分のモデルです。2号機のモデルはDMM.makeさんは正確に造形してくれましたが、Adventure 3ではさすがにこんな精度では出力することができません。右のように軸をだいぶ大きくして、合わせて軸受けの凹みも大きくなるよう3Dモデルを修正しました。
これくらい大きくするとAdventure 3で出力してもはめ合わせることができて、後部ハッチを開閉することができます(下の写真を参照)。
また、出力できるサイズが小さいこと(スペック(15cm)の範囲内であっても出力対象のサイズが大きくなると誤差が大きくなる気がする)からモデルをいくつかのパーツに分けて出力し、後で接着することにしました。パーツに分けるとパーツごとにプリンタのベッドに置く向きを決められるので、サポート材が付く面(どうしても汚くなる)が目立たないよう調整ができるというメリットもあります。
分割して出力したパーツは瞬間接着剤で接着しています。
ネット上にはPLA樹脂は瞬間接着剤ではくっつかないという旨の記事もありましたが私の使った接着剤では問題ありませんでした。
ただ、パーツに分けた切断面がうまくかみ合わなくてすきまなく接着できないという問題はのこっています(下図)。
ラフトやサポート材に接する面は、ラフトやサポートを切り離してもけっこう凸凹です。PLA樹脂用の紙やすりをかけたりしていますがあまりうまくはめ合わせることができていません。
今回、なんとかAdventure 3で出力したパーツを組み合わせてものを作るところまでは確認できたので次は出来上がりを美しくすることに挑戦したいですね。
ロボットの骨格を作る その1
子供のころ、クインジェットのようなSF的乗り物と並んで作りたかったプラモデルはヒト型のロボットでした。ガンプラがブームになるはるか以前の時代で、ロボットのプラモデルというとモーターとギアを内蔵して脚を前後に動かして行進するタイプばかりでした。動くのは動くで楽しいのですが、かたちとしては本物(?)のロボットに遠くおよばない不格好なものです。当時、男の子用の人形のおもちゃで20か所(だったかな)の関節が動くGIジョーというのがあって、子供心にプラモデルでもGIジョーみたいに手足の関節が動くロボットがあればいいのにと思ったものです。
それから半世紀のときが流れ、CADソフトと3Dプリンターのおかげで個人がオリジナルのプラモデル(PLAモデル?)を制作できる環境が整いました。子供のころの夢を実現するのは今、というわけでわが市田屋工務店においてもオリジナルロボットの制作プロジェクトをスタートさせました。ゆくゆくは変形・合体が可能なスーパーロボットを開発したいところですが、その道のりは遠く、まずは関節部が可動するロボットの骨組み作りに挑戦しているところです。
Thingiverseにあるロボット的なもののモデルをみると球体(オス型)とそれを包むお椀のような部分(メス型)とで構成するボールジョイントで関節部を作っているものが主流のようだったのでわがロボット骨格の試作1号機の関節部にもボールジョイントを採用することにしました。ボールジョイントの場合、オス型をメス型にパチンと押し込むことになるので、メス型が緩すぎるとジョイントの役目をはたせないし、きつすぎるとオス型を押し込めないし力を入れすぎるとメス型が壊れてしまいます(下図参照)。
専門家なら材料の特性なんかから最適な形状を計算できるのでしょうが、こちらにはそんな知識がありません。オス型の球形部の大きさやメス型のお椀の形や厚さを いろいろ変えて試行錯誤を繰り返しました。
Adventure3で同じモデルを出力しても、造形物の向き(縦置きか横置きか)やサポート材の有無によって各部の大きさに微妙な差異が発生します。ロボット全体をできるだけコンパクトに作りたいのでボールジョイントもできるだけ小さくしたいのですが、あまり大きさの誤差が大きくなると組立の際の歩留まりが悪くなります。今回はオスジョイントの球形部の直径を5mmにして(もう少し大きくしたほうがよかったかも)、以下のようなモデルを作成しました。
このボールジョイントのモデルを使って手足や胸、腰などの骨格のパーツを作成、ヒト型のモデルを組み上げました。
Adventure3で出力してみました。無骨な 感じですが関節を曲げてポーズをとることができます。
ただ、肩の関節をもう一つつけないと人間と同じようなポーズがとれない(現状だと「前へならえ」ができない)ことが判明。関節を曲げる角度によっては位置を固定できずだらんと垂れてしまうことがあることもわかりました。いろいろ課題はありますがこれから改良を続けていくつもりです。