ある元栃木の工業人.jp

電子工作、機械設計、ロボットなどのモノづくりから宇都宮まで色々 ※2021:画像消失につき、c.yimgからマイニング&整備中

Teensy 3.2のHardware Quadrature Decoderを試す

 
Teensy3.2という、ArduinoIDEにて開発できる32bitマイコンボードがある。
 
 
Arduino pro miniとほぼ同じくらいのサイズでありながら、Cortex M4を搭載した96MHz動作のスゴイやつだ。出力ピンも揃っていて使いやすく、Arduinoライクに書けて書き込みも速いので最近はこいつを使う機会が多くなっている。
 
そのなかで、ハードウェアデコーダ機能によるインクリメンタル型のエンコーダの読み取りについてチャレンジしてみたので、備忘録がてら軽くここに置いておこうと思う。
 
ただし、このコラムはある程度マイコン開発に慣れた人を対象にしている。
ご了解いただきたい。

東京の地下鉄路線の3Dマップを作った話(リメイク記事)

この記事は2009/10に作成した
東京地下鉄深さ3Dマップ」 ある元栃木の工業人.jp (旧:常人には到底理解出来ないブログ)
のリメイク記事です。
Yahoo blogのサービス終了に伴い、記事を移植しました。
 
地下鉄の路線というのは、乗車している分にはあまり感じないが、実は凄まじいアップダウンがある。それは例えば他の路線を跨ぐためであったり、河川を潜るためであったり、あるいは駅のホームによる制限だとか、はたまた対核兵器用シェルターのため、などと云われることもある。それらは大都会の地下を編むように張り巡り、さながらニューロンのように1つの巨大なネットワークを構築している。
 
地理、土木、都市形成についてニッチに語り合うブラタモリNHK)が人気となる昨今において、人々が大都会東京の地下鉄はどうなってるんだ?見てみたい!という気持ちを抱くのも当然である。その潮流の中において、2018年のはじめに誕生したのが『東京地下鉄立体線路 東京メトロ編』(バンダイ)というカプセルトイである。
 
(また前置きが長いぞ)

地理院地図の3Dデータから光学式3Dプリンタ(Form2)で出力した話

f:id:kazu_souri:20210130085553p:plain

2014年にHTML5W3Cから発表され、これまで専用アプリケーション上でしか表現し得なかったようなグラフィカルな表現が、オンラインのウェブブラウザ上で実行できるようになった。
 
国土地理院が提供する 「地理院地図」 もその波に乗ったサイトのひとつである。

国土地理院はかなり初期からネット上で国土の基盤的情報を発信してきた。1:25000地形図の「ウォッちず」、航空写真の「空中写真閲覧サービス」などである。その後、「電子国土」を旗印にしてウェブ上でそれらを統合した情報提供・閲覧プラットフォームの構築が進められていた中で、ブラウザのグラフィック機能を拡張したHTML5WebGLの登場はまさに渡りに船だったに違いない。
 

f:id:kazu_souri:20210130085613p:plain

「ウォッちず」 というなつかしい響き…

さて、地理院地図はその基盤として規格化された各種地図情報の膨大なデータベースが存在する。これは地理院タイルとして構造の片鱗を見ることができるのだが、その中にはメッシュ状の数値標高データも含まれている。従って、現在の地理院地図では画像情報と標高情報から3D表現に優れたWebGLによる三次元の地形表示を行うことが可能となっている。
 
ちなみにウォッちず時代でも『立体視システム』という地形図と標高数値データから生成されたステレオグラムによって、立体的に閲覧できる進歩的なサービスが存在していた。

f:id:kazu_souri:20210130085627p:plain

立体視閲覧サービスとはこんな感じの立体視画像。サービス停止が悔やまれる。
地図閲覧サービス(試験公開)の「立体視システム」の開発

Web環境の劇的な進歩と共に進んだのが3Dプリンタの普及である。業務用として流通していた高価な3Dプリンタが低価格化によって一般市場へ降りてきたことで、アマチュアによる三次元造形手段の確立とデータ規格STLの標準化が進んだ。

電子国土による閲覧プラットフォームと標高データの整備、そして三次元造形データの需要増という環境が揃った以上、3Dプリンタ用の地形STLデータを出力するサービスが搭載されたのは至極尤もな話だろう。

まぁそんなこんなで、長い年月を経て現代技術は、好きな地形を手軽に造形できるという地形趣味人たちの理想に追いついたわけでした(導入が長い)。



 ・ ・ ・



今回は地理院地図3Dから入手したSTLデータを光学式3Dプリンタ:Form2にて出力してみたので、それについて備忘録がてらここに報告する次第。キーポイントはデータの中抜き加工と補修処理。

ところで最近は目次を付けるのが解説系コラムのスタンダードのようだけど、ここを見てる人は藁をも掴む想いの限られた境遇の人だろうから優しくしないフォーマットでそのままいきますよ。

 | 地理院地図からSTLデータを取得する

f:id:kazu_souri:20210130085643p:plain

 
お好みの地形を中心として、お好みの地形表現(地形図、陰影図など)にしたあと、

機能 > 3D > 大 (or 小 or カスタム)

と操作する。これにより下図のようなWebGLによる三次元表示が実行される。ちなみに、標高データの精密さは上図の状態のズームレベルに依存する。つまりあるズームレベルで3Dの小(1024)を実行したときと、その倍にズームレベルを拡大してから3Dの大(2048)を実行したときとでは、表示範囲は一緒でも地形の分解能は倍になる(イメージ)。

f:id:kazu_souri:20210130085656p:plain


これだけでもぐるぐるできて楽しいのだが、注目すべきは下部の「STLファイル」である。着色可能な立派な3Dプリンタをお持ちでない限りはSTLデータで十分である。「ダウンロード」からSTLデータを保存する。

(ところで「ブラウザでぐるぐる回す用のファイルです」という表記はなかなか嫌いではない)

 | 光学式3Dプリンタ用に加工する

プリンタは主に積層造形と光造形とに大別できる。積層造形は自動で内部を空洞(メッシュ状)に構成するので体積の過多はあまり気にする必要はない(もちろん限度はある)。が、しかし光造形は空洞とならずに全て充填するという欠点(利点)が存在する。しかも材料費は安いものでもリッター2万円くらいする。

従って、光学式3Dプリンタで造形する場合は、いかに表面の形状と十分な強度を満たしつつ内部を肉抜きしてコスト低減できるか、というのが課題となる場合が多い。いわゆる最適リブ配置問題である。

地理院地図からダウンロードしたSTLファイルは下図のような形状(標高約1000m地点)であるが、この状態で光造形を行うのはもちろん論外である。

そこで、ここでは中抜きと余計な部分のカットを行う。今回は試行錯誤のすえ「Meshmixer」というAutodesk社のフリーソフトを用いることでこれらを解決した。失敗事例は末部に記載したので暇なら読んでほしい。

Meshmixer - AUTODESK Research
http://www.meshmixer.com/japanese.html

f:id:kazu_souri:20210130085709p:plain

MeshmixerSTLデータをインポートした様子が上図である。表面の形状しか求めていないのに体積が大きく非常に無駄が多い。

まず最初に中抜き加工を行う。
 

f:id:kazu_souri:20210130085729p:plain


編集 > 中抜き

これにより物体内部に空洞が生まれる。なお、「オフセット距離」によって厚みを調整するのだが、2mmくらいで丁度よいように思う。もちろん造形の大きさなどによって変わってくるため、適宜考える必要がある。

また2mmにしては表示されてるの厚すぎない?という意見もご尤もで、ダウンロードしたSTLデータは実寸(150メートル四方)なんだけど、Meshmixer内では150ミリメートル四方に変換されていたりする。これは「解析>単位・寸法」から変更できたりするが、わざわざやる必要も無いような気がする。まぁ、そこはいろいろ上手くやってほしい。

内部が空洞になったら、次は余計な部分のカットを行う。

f:id:kazu_souri:20210130085744p:plain


編集 > 面でカット

これによって、ある水平面から下を全カットすることができる。切れ目はリメッシュされるので穴は空かないし、空洞が破れることで下図のように非常に造形しやすそうな形状を得ることができる。

f:id:kazu_souri:20210130085759p:plain


あとは「エクスポート」でSTLデータを出力する手筈なのだが、その前に3Dデータに乱れがないか確認を行ったほうが良さげだろう。そこで次項ではそれについて記載する。

 | データの乱れを整形する

例えば河川や険しい地形なんかだと、ノイズが反映されて不自然な地形になっていることがある。下図はその例であるが、特に構造物もない渓谷に丘ができてしまっている。

f:id:kazu_souri:20210130085816p:plain


このような場合、

選択 > (特定の部位を選択する) > 削除と充填

から修正することができる。もちろん違う方法もあるがここでは取り扱わない。上図を修正した結果が下図である。恐らくこの方がより自然と思われる。

f:id:kazu_souri:20210130085825p:plain

次に、垂直に近いような険しい崖や渓谷などではギザギザが生じやすい。これはジャギーとかエイリアスとか呼ばれるもので、離散的な均等サンプリングに基づくメッシュ構造のために十分な分解能が得られていないことが原因である。あまりにギザギザしていると造形に支障が出かねないので、少し改善した方が良さそうである。

f:id:kazu_souri:20210130085856p:plain

このような場合、

選択 > (特定の部位を選択する) > 再メッシュ

からあるていどギザギザを緩和することができる。これが正確な地形なのか?と言われると答えに窮するが、まぁ自分が納得できる程度に収めるのが良いような気がする。

f:id:kazu_souri:20210130085908p:plain

 | 光学式3Dプリンタへ送信する

ここまでの過程ほ経て、下のようなSTLデータを得ることができる。
 
ここから先は造形する3Dプリンタによって作業内容はまちまちであるが、ここではForm2での実行の様子について軽く触れる程度に留めておこうと思う。
 
Form2ではデスクトップアプリとしてPreFormというソフトウェアが用意されている。これはSTLのインポートから印刷設定、サポート編集、配置などが行えるシンプルかつ高機能なソフトウェアである。そこに先のSTLデータをインポートした様子が下図となる。
 
先に書いたように、このSTLデータは一辺が150メートルという巨大なものなので、アプリケーション上で拡大縮小を行って調整するかたちとなる。今回は一辺を50ミリメートル程度に収めているが、ここらへんは皆さんのお好みになると思う。リッチな人には是非とも大きく作っていただきたい。

f:id:kazu_souri:20210130085938p:plain

 

 | 造形する

f:id:kazu_souri:20210130085955p:plain

造形結果は上の写真の通り。左が栃木県の日光華厳渓谷と第一いろは坂、右が奈良県下北山の池原ダム。どちらも河川地形だが、性質は大きく異なっていて興味深いところがある。

f:id:kazu_souri:20210130090027p:plain

こちらが池原ダム付近。穿入蛇行を利用したダムの様子がよくわかる。

f:id:kazu_souri:20210130090014p:plain

こちらが華厳渓谷付近。左岸の僅かな緩斜面に刻まれた第一いろは坂の九十九折が確認できる。

Form2は色の出力ができないため、造形結果はもちろん単一色となる。今回は白レジンにしたため、立体的なレリーフマップというわけである。
 ・ ・ ・
 
 
以上、地理院地図の3Dデータから光学式3Dプリンタ(Form2)で出力した話でした。
 

 | おまけ:試行錯誤のよもやま話

ここから先は前述の手順に至るまでの試行錯誤の過程について軽く記載する。
 
肉抜きと無駄の削減をすることが目標であったわけだが、最初の目論見はSTLデータを3DCADへ取り込んでシェル(中抜き機能)を使えば楽勝じゃねーのというものだった。実際にSolidWorksへ取り込んだ結果が下図。真っ黒なのは全てラインである。
 

f:id:kazu_souri:20210130090058p:plain

軽く整形してからシェルを実行してみる。既に激重である。
 

f:id:kazu_souri:20210130090111p:plain

ダメでした。
 
そもそもCADというのはプリミティブな形状の組み合わせと関数によって複雑な形状を表現することに特化したアプリケーションである。それに対して標高データというのは全てがユニークな値であり、データ処理量としては非常に多量なものであるわけだ。この点を考慮すると、Sculptrisのような3Dモデリングソフトのほうがユニーク形状の処理は得意なのかもしれない。
 
3DCADを使うという誤った認識を拭えていなかったことから、次の目論見はSTLデータ量を削減してCADに取り込もうというもの。使ったのはMeshLabというフリーソフト
 

f:id:kazu_souri:20210130090126p:plain

しかし頂点数の削減を行ってもエラーのある形状となる場合が多く、断念。MeshLabは使わないほうが良さそうである。そこで出会ったのが前述のMeshMixer。こいつは非常に優秀で、頂点数の削減もかなり見事にやってのけた。

さすがAUTODESK!
 
で、頂点数を減らしてCADに取り込んだものの、やはり処理が重くてダメでした。
 
そうこうしているうちにMeshMixerの機能に慣れてくると、どうも中抜き機能が結構優秀そうだ、ということと、水平面でカットする機能があるぞ、ということでCADを使う考えを撤廃。今回のコラムの手法に至ったわけでした。
 
 
 
 ・ ・ ・
 
 
 
今回はこんな感じになりました。地形に興味があって、なおかつ光学式3Dプリンタを所有しているという類まれなる奇跡的な条件に合致する人にしか需要のない記事ではあったけれども、何かしら参考になればと思う。
 
以上。
 
 

宇都宮市街地の再開発地図を大々的に更新しました

イメージ 1
 宇都宮市街地再開発・大規模開発マップ


寒さも次第に厳しさを増し、すずめが可愛くなる季節になってまいりました。
炬燵なりスタッドレスタイヤなり、そろそろ冬支度を始めないとですね。

さて、最近は宇都宮のLRTに関するニュースを目にする機会が多くなりました。どうやら、東側のJRから芳賀工業団地へ至るルートの建設が本格始動するそう。20年往来の議論に一応のピリオドをつけたというのは、なかなか感慨深いものがありますね。

そんな折、そういえば昔作った「宇都宮再開発マップ」を殆ど更新せずにいたなと思いまして、この度はコンテンツの増加を視野に入れて大規模に更新を行うことにしました。


以前の記事 > 宇都宮市街地の再開発地図っぽいの
再開発事業についての詳細は以前の記事を参照してください。

|主な変更点

LRTルートや解体記録、道路計画などの掲載コンテンツの増加
・ 再開発情報の更新と事業画像の掲載
・ 余計な解説の追加
旧GoogleMapに準拠したカラーやアイコンをGoogleMap V3に対応したものに修正

|コンテンツの増加

宇都宮市が主導する再開発事業のみだったものに加えて、民間の大規模開発やLRT計画、大規模構造物の解体記録や道路計画を追加しました。よって、本マップにおけるすべてのコンテンツは以下のようになり、横断的な都市開発状況の把握が可能となりました。

   「再開発事業(都市計画)」 ・・・ 自治体が主導する都市再開発計画
   「中・大規模開発(単独)」 
 ・・・ 民間や行政機関が単独で主導する開発計画
   「解体記録」     
     ・・・ 過去に行われた大規模構造物の解体についての記録
   「LRT計画」           ・・・ 宇都宮市芳賀町、栃木県が主導する宇都宮LRTのルート計画
   「道路計画」                    ・・・ 宇都宮市街地における道路整備計画

再開発事業(都市計画) : 主なソースは市Webサイトと新聞。
イメージ 4

中・大規模開発(単独) : 掲載基準は街の容姿や機能への影響具合。主なソースは自分の足やニュース。
イメージ 2

解体記録 : 掲載基準は街の容姿や機能への影響具合。主なソースは地元民への聞き込み。
イメージ 3

LRT計画 : 公式の基本計画と関係各所から出た延伸案を掲載。主なソースは市Webサイトとニュース。
イメージ 5

道路計画 : 中心市街地における道路計画を掲載。主なソースは宇都宮市、栃木県、国交省のWebサイト。
イメージ 6

|解体記録について

再開発や大規模開発の際には、必ずそれまで建っていた構造物を壊す必要があります。一般に、開発事業においては新しく建つものばかりが注目を集め、解体されていくものは記録に残りにくい。例えば、戦後モダニズム建築として高名であった旧栃木県議会庁舎については、今の20代以下の若者の殆どが知らない状況にあるでしょう。このたび、「解体記録」コンテンツを追加したのは、こういった事態を緩和する目的があります。

今回追加「解体記録」コンテンツは以下の11個

日本生命宇都宮ビル
・旧太陽生命宇都宮ビル
・旧三井生命宇都宮ビル
・栃木会館
・栃木会館旧館 ・・・詳細不明
・旧栃木県議会庁舎
・109UTSUNOMIYA ・・・詳細不明
・旧宇都宮中央郵便局 ・・・詳細不明
・旧栃木県庁舎 ・・・詳細不明
・新うえのビル ・・・詳細不明
上野百貨店本店 ・・・詳細不明
・旧福田屋百貨店宇都宮店 ・・・動画の映像以外に一切情報なし
・旧宇都宮市役所 ・・・ドラマの映像以外に一切情報なし
・名称不明 ・・・一切情報なし 追記:十字屋デパートと判明
・名称不明 ・・・一切情報なし 追記:ホテルノースキングと判明

今回はインターネット上で調査したのですが、上記のように多くの解体された建物に関して情報が存在しませんでした。インターネットが普及する2000年中頃より前と後で情報量に大きな差があるようです。恐らく図書館の文献を漁れば見つかるとは思いますが、その情報へのアクセスは容易ではないでしょう。

以下2つの名称不明の建物についてご存知の方からの情報を募集しております。

イメージ 7イメージ 8

コメントより判明いたしました。ありがとうございました。
←ホテルノースキング  十字屋デパート→

|掲載基準の補足

掲載基準について補足します。

[
再開発事業]
行政が区画を定めて「再開発事業」として行っているものになります。
・事業区画内であれば民間開発であっても掲載します。
・再開発事業でない単発の官民複合施設などは省きます。

[中・大規模開発]
階数11階以上がメインとなる基準です。
・ただし、行政・教育施設・デパート類においてこの基準は緩和されます。
・マンションに関しては11階は該当が多すぎるため、地上16階以上を基準としています。
・市街地の中心に近いほど基準は緩和されることがあります。
・たとえ階数が低くとも規模が大きい場合には
掲載されることがあります。
・基本的に1990年以降を取り扱います。
・基本的に市街地に近い事例を取り扱います。

[解体記録]
階数5階以上がメインとなる基準です。
行政・教育施設・デパート類においてこの基準は緩和されます。
市街地の歴史的、印象的あるいは象徴的な構造物についてはこの限りではありません。
・たとえ階数が低くとも規模が大きい場合には掲載されることがあります。

・基本的に高度成長期以降を取り扱います。

・基本的に市街地に近い事例を取り扱います。



今回コンテンツを増やす過程で、けっこう面白かったのは道路計画のところでした。そんなところに道路通すのかよっていう計画もあれば、あぁだからここを工事してるのねっていう計画もある。点の開発である再開発事業に比べて、動線の開発である道路計画というのはまた違った面白さを見せてくれると思った次第でした。

以上、新しい宇都宮再開発・大規模開発マップを存分にお遊びくださいませ。


宇都宮市街地再開発・大規模開発マップ


以前の記事 > 宇都宮市街地の再開発地図っぽいの




Processing3.Xの起動しない問題(windows10)

Processingは電子工作の上流プログラムを作る際に便利なのでよく利用しています。んが、なんだか気づかないうちにノートPC(windows10)のDesktop階層に置いたProcessing.exeが起動しなくなってしまった。

具体的には、Processing3.2.3.exe(64bit)からの起動画面までは正常だが、起動画面が消えてから何も表示されなくなる現象が起きました。タスクマネージャを確認してもバックグラウンドにも存在していません。

↓お馴染みの起動画面

f:id:kazu_souri:20210130090238p:plain
結論から言うと、「preferences.txt」というProcessing共通の環境設定ファイルを削除したら治りました。
以下、経緯と詳細。

内部が壊れたのかと思って最新バージョン(Processing3.3.5 64bit)を入れてもダメ。Javaの問題かなと思って確認したけどJavaは最新版で、しかもArduino.exeは普通に立ち上がる。階層が悪いのかなと思ってC:直下に置いても起動せず。

んで、調べて出てきたものが以下。

Processing(プログラミングソフト)が実行できない - Yahoo知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1448442389

Processing が Mac で起動しない問題がどうにかなった話 - Glósóli はてなブログ
http://glosoli.hatenablog.com/entry/2016/06/23/021645

Processing 3 does not start correctly - GitHub
https://github.com/processing/processing/issues/4187

これらを見ると、どうも「preferences.txt」という環境設定ファイルを操作すると良かったりするらしい。しかもこのファイル、Processing.exeを最初に立ち上げたときにAppDataの「Processing」フォルダに作成されるらしく、どのバージョンのProcessing.exeからも共通にアクセスされるという。こいつは実に怪しい。

この「preferences.txt」は削除しても次回立ち上げ時に新しく作成されるようですので、削除してみました。

場所: C:\Users\<USER_NAME>\AppData\Roaming\Processing\
行動: preferences.txtとpreferences.oldを削除してProcessing.exeを立ち上げ
結果:

f:id:kazu_souri:20210130090256p:plain


やったぜ。

========================================
おまけ

結局、「preferences.txt」の具体的にどこがダメだったのでしょうか。ということで古い「preferences.txt」をいじって探ってみたところ、「instance_server.port」の項目の数字を新しい「preferences.txt」に合わせたところ、起動に成功しました。

この項目について検索すると、なにやらより詳しい情報が得られそうです… と、今回はここまで。
https://www.google.co.jp/search?q=instance_server.port