読者です 読者をやめる 読者になる 読者になる

EAGLEにInkscapeの図形を入れる

電子工作

Inkscapeで描いた図形(ベクターデータ)を、できるだけ劣化が無いようにEAGLEへ入れる方法です。

InkscapeはPOLYLINEやLWPOLYLINE,SPLINE、EAGLEはPOLYGON。 Inkscapeで曲線をどうやってPOLYLINEにするのか?EAGLEでどうやって(WIREではなく)POLYGONに取り込むのか、がポイント。

環境

概要

  • Inkscape
    • SVGファイルに保存
    • パスに変換、グループを解除
    • 図形を拡大
    • 曲線を直線に変換
    • 中抜け部分を分割
    • 図形を縮小
    • DXFファイルに保存
  • EAGLE
    • DXFファイルを読み込み

題材

Inkscapeのテキストツールで「まつじるし」を作成。 フォントはHGMaruGothicMPRO。文字間隔を-10に。大きさは適当。

f:id:matsujirushix:20170319120932p:plain

ベクターデータを確認するために、フィルをグレー、ストロークを青にすると、こんな感じ。

f:id:matsujirushix:20170319121042p:plain

Inkscapeの操作

SVGファイルに保存

以降の操作でやり直しするかもしれません(する場合のが多いかも?)ので、最初にSVGファイルで保存しておきます。

f:id:matsujirushix:20170319130354p:plain

パスに変換、グループを解除

オブジェクトは、全てパスに変換して、グループを解除します。 選択ツール(F1)にして、編集 > すべて選択(Ctrl+A)で全オブジェクトを選択した後に、パス > オブジェクトをパスへオブジェクト > グループ解除を実行します。

ノードツール(F2)の編集 > すべて選択(Ctrl+A)で、このように全てのノードが表示できればOKです。

f:id:matsujirushix:20170319131044p:plain

図形を拡大

次項で変換する際に、できるだけ多くの直線に変換されるよう、図形を大きくしておきます。

選択ツール(F1)にして、編集 > すべて選択(Ctrl+A)で全オブジェクトを選択した後に、マウスで角をドラッグしてサイズを大きくします。ドラッグするときにCtrlを押すと、縦横比が維持されるので便利です。

f:id:matsujirushix:20170319132114p:plain

曲線を直線に変換

EAGLEのポリゴンに曲線を含めることができないので、曲線を複数の短い直線に変換しておく必要があります。

選択ツール(F1)にして、編集 > すべて選択(Ctrl+A)で全オブジェクトを選択した後に、エクステンション > パスの変形 > ベジエ曲線の平坦化…を実行します。

表示されたダイアログで、平坦度0.1を入力して、適用をクリックします。

f:id:matsujirushix:20170319132525p:plain

ノードツール(F2)の編集 > すべて選択(Ctrl+A)で、このように曲線部分にノードが増えていればOKです。

f:id:matsujirushix:20170319132924p:plain

中抜け部分を分割

EAGLEのポリゴンのネストは中抜けになりません。

「ま」「る」が中抜けしているので、分割します。

矩形ツール(F4)で、中抜け部分が割れるように矩形を追加します。(下図は、見やすいようにフィル無し、ストローク赤にしています。)

f:id:matsujirushix:20170319133924p:plain

「ま」と矩形の順に、Shiftを押しながら複数選択して、パス > 分割を実行します。すると、左側と右側に分割されます。

f:id:matsujirushix:20170319134115p:plain

f:id:matsujirushix:20170319134125p:plain

「ま」「る」を分割した結果はこちら。

f:id:matsujirushix:20170319134212p:plain

図形を縮小

上記「図形を拡大」を参考に、図形を実際のサイズに縮小します。

f:id:matsujirushix:20170319134517p:plain

DXFファイルに保存

DXFファイルで保存します。

f:id:matsujirushix:20170319134805p:plain

表示されたダイアログで、線出力のLWPOLYLINEタイプを使用するをチェックして、OKをクリックします。

f:id:matsujirushix:20170319135025p:plain

EAGLEの操作

DXFファイルを読み込み

EAGLEのBoard Editorで、File > Run ULP…を選択し、import-dxf.ulpを開きます。

import-dxf.ulpは、下記からダウンロードしてください。

github.com

f:id:matsujirushix:20170319135504p:plain

表示されたダイアログで、File nameを指定、Scaleを3.779527559055118、Prefer polygon outputをチェックして、OKをクリックします。

Scale = 96 / 25.4

f:id:matsujirushix:20170319183531p:plain

で、Run

f:id:matsujirushix:20170319140228p:plain

結果

でたぁ~。

f:id:matsujirushix:20170319183549p:plain

中京テレビハッカソン「HACK-CHU!」に参加しました(前編)

イベント

わたし目線で感じたことをそのまま書いています。事実が違っていたり気分を害する部分があるかもしれませんが、わたしの認識間違いや表現力不足によるものなので、うまくスルーしてください。

中京テレビが主催するハッカソンイベント「HACK-CHU!」に参加しました。

参加に至った経緯

中の人が知り合いなので、わりと早くからイベントが開催されることを知っていました。 ですが、「ハッカソン参加するぞーっ!」という気持ちにはなれず。というのも、短期決戦のハッカソンより、時間かけてジックリと作り上げるほうが好きなので。

イベント自体は支援したいのですが、ひとりで参加するほど根性無いし、かといってチーム作って牽引するほどモチベーションも無いし、モヤモヤとしていました。

そこに、突然のWさんからの直メッセージ。

f:id:matsujirushix:20170317193530p:plain

勢いで乗っかってしまった。

イベント中のチーム編成は不安しかないので、5~6名になるようメンバーを探すことに。

わたし->Wさん->Jさん、わたし->Ktさん、わたし->Kwさん、という流れで、5名のチームが出来ました。

  1. Wさん(どっぷりエンジニア。Arduino互換機作ってる。)
  2. わたし(エンジニア。mbedとか.NETとか。)
  3. Ktさん(アイデアマン&メンター。実はスゴいエンジニアらしい。)
  4. Kwさん(ちょっとエンジニア。普通な子。)
  5. Jさん(エンジニア。Web系。)

エンジニアだけのチームかよ。(笑

ほぼ全員に面識がある、わたしがリーダーということに。そんな力量ないんですけど。トホホ。

このときは、背伸びせず、メンバーそれぞれに何らかの経験が得られれば良いな~ぐらいの気持ちでした。

やるからには優勝狙う!?

とりあえず、顔合わせでメシ行きました。

細かいところは覚えていませんが、こんな感じだったと思う。

  1. Wさん…ハッカソン初めてだから良く分からん。
  2. わたし…楽しくやりましょう♪
  3. Ktさん…優勝狙うのか!?どうなんだ!
  4. Kwさん…みんなに合わせます♪
  5. Jさん…(圧倒される…)

意見がまとまらない。(滝汗

結局、予選当日まで集まることは無かった。

予選(アイデアソン)

8:30に、コメダ エスカ店に集合してモーニングセットを食べてから出陣。みんなでモーニング行くの楽しい。(みんな眠そう。)

10:00に中京テレビへ。

Mashup Awards 伴野さんと中京テレビアナウンサー磯貝さんの進行で、アイスブレイク~アイデア出し~チーム編成へ。

イデア出しのやり方が面白かった。「こども」「わたし」「親」のキーワードを出して、「便利」を言い換えたキーワードを出して、それらをランダムに組み合わせるというもの。ちょっとした大喜利みたい。

チーム編成で、アイデア投票2位のBさんが我がチームに加わった。

6.Sさん(なんでもやる。いきおいが半端ない。)

イデアは?というと、当初「こども向け。教科書をランドセルに入れるのを手伝うアプリとかロボットとか。」でしたが、Ktさんによる「解決したいものの本質は何だ!」的なツッコミや、Sさんの経験に裏付けされた意見を加えて、ママの時間を増やすことを狙いとした「ままにほめてもらうのだ!」にしました。

Sさん、アッという間にプレゼン資料を書き上げる。

f:id:matsujirushix:20170317214224j:plain

KtさんとSさんの力量で予選通過したって感じです。

わたしは何か貢献できたのかというと、言われるままプレゼントークしたぐらい。ストーリーや資料がしっかりしていたので、想像以上に気分良くプレゼンできた。

なお、チームメンバーが撮影したビデオを後日確認したところ、審査員の質問にトンチンカンな回答をしていた。orz

ビデオ撮られて見せられるあたり、いかにもエンジニアチームって感じです。

Blenderでモデルを作ってHoloLensで表示した

HoloLens

Blenderでモデルを作成、Unity 3Dに取り込んでHoloLensで表示できるか確認しました。

モデルを作成

Unity 3Dに取り込みできるファイル形式はここに書かれています。

.FBXファイルが良さそうなので、Blenderでモデルを作成し、.FBXファイルにエクスポートすることにしましょう。

Blenderは、最新の2.78bを使いました。

f:id:matsujirushix:20170226165154p:plain

3DモデリングにハマッたときにBlenderは少し使ってみたのですが、操作感が好きになれず挫折していたので、、、今回は、書籍に沿って、適当なモデルを作りました。

ロケット。

f:id:matsujirushix:20170226165905p:plain

書籍のサンプルそのまんまですけど(汗

途中、テンキーが無いことから視点切替ができなかったのですが、こちらを参考に代替キーで操作できるようにしました。

そして、.FBXファイルにエクスポートしました。

f:id:matsujirushix:20170226170300p:plain

Unityに取り込み

.FBXファイルをAssetsにドラッグ&ドロップするだけで、取り込みできました。

f:id:matsujirushix:20170226170458p:plain

それを、さらにSceneにドラッグ&ドロップ

f:id:matsujirushix:20170226170709p:plain

なんだか、ロケットの噴射部分がおかしなことになっていますが、スルーで。

HoloLensで表示

表示できました。

youtu.be

やっぱり噴射部分がおかしい。

HoloLensでぐるっとして確認すると、ロケット本体部分が裏向きになっているようだ。法線が間違っている模様。

法線を訂正(2/26追記)

Blenderで法線を表示してみました。

f:id:matsujirushix:20170226204736p:plain

ロケット本体部分が裏向きorz

訂正しました。

f:id:matsujirushix:20170226204825p:plain

youtu.be

まとめ

  • Blender -> Unity 3D -> HoloLens、できた。
  • Blenderの操作が難しい。(ショートカット多用)

Mini Center CLR 勉強会 - HoloLensやりました

HoloLens イベント

Center CLRでHoloLensの勉強会が出来ればと思い、ボスへメッセージ。

f:id:matsujirushix:20170225213737p:plain

プレゼン形式ではなくワイワイガヤガヤとなることを期待して、「Mini Center CLR」という名称で開催しました。

www.meetup.com

直前&大して告知しなかったにもかかわらず10名が参加しました。

事前にアンケート調査したところ、 f:id:matsujirushix:20170225214713p:plain

むむむ。ただ集まるだけでは会話が盛り上がらない不安が沸々と湧いてきた、、、

そこで、細かな説明はバッサリと無しにして、開発するために必要なスキルとか、だいたいどんな作業になるかを知ることができるように、資料を用意しました。

Mini Center CLR 勉強会HoloLens

f:id:matsujirushix:20170225215548j:plain

最初にスライド説明して、デモンストレーション、その後、ライブコーディングという流れでやりました。ライブコーディングは、Unityに必要な設定をした後、Robot Kyleを貼り付けて表示する(だけ)でした。

結局、(場の雰囲気をうまく作れず)ワイワイガヤガヤとはなりませんでした。ちょっと凹んでいます。

めげずにまたやりたい。

堀江織物のプライベート見学会しました

イベント

経緯

東京出張したときに、いつも夕食に付き合ってもらっている堀江さんf:id:matsujirushix:20170219110922j:plain

本社の工場が2015年9月に移転したのですが、「そういえば新工場に一度も行っていないですね(汗」ということで、2月18日に見に行くことに。

せっかくなので、お友達とかも誘って見学できないかと打診したところ、

f:id:matsujirushix:20170219111619p:plain

おぉ!スバラシイ回答が!

そういうわけで、プライベート見学会しました。

f:id:matsujirushix:20170219112313p:plain

(先方に迷惑かけるとアレなので、今回はFB友達に限定して告知しました。)

見学会

案内してくれたのは、弟さんの堀江航司さん。 f:id:matsujirushix:20170219110228j:plain

堀江織物は「旗・幕など布への印刷」している会社で、印刷物は、のぼりや横断幕といった屋外広告やテーブルクロスやチェアカバーといった店内装飾物などで使われています。また、クッションカバーや抱き枕カバーなども。

堀江織物の業務内容 布への印刷加工全般。紅白幕、のぼりポールやスタンドなどの取り付け器具の販売

印刷方法は4種類あって、生地や用途によって使い分けています。

  • シルクスクリーン印刷
  • 昇華転写印刷(オンデマンド印刷)
  • ダイレクト印刷(オンデマンド印刷)
  • 大判インクジェット印刷(オンデマンド印刷)

シルクスクリーン印刷は本社、オンデマンド印刷はオンデマンド事業部工場(クルマで5分程度移動したところ)なので、シルクスクリーン→(移動)→オンデマンド、という順に見学しました。

見学内容をどこまで記載していいのか不安なので写真だけです。 もう少し知りたい人はこちらをご参照ください。

シルクスクリーン印刷

f:id:matsujirushix:20170219110238j:plain f:id:matsujirushix:20170219110248j:plain

オンデマンド印刷

f:id:matsujirushix:20170219110318j:plain f:id:matsujirushix:20170219115243j:plain

最後に

  • 現在、次の見学会予定はありません。(反響あれば企画するとかしてもらうとか)
  • ただ見て周るだけでなく、少し体験させてもらえたり、プロの技を見せつけられてスゲーっていう感じのができたら良いなと思いました。
  • 個人でも印刷してもらうことができます。オリジナル作品作っている方は必見。

日本語環境で流暢に英語を喋る

UWP

SpeechSynthesizerクラスで「Thank you for the mail.」を喋らせてみると、 片言の発音になってしまいます。 「Thank you for the mail.」

MainPage.xaml

<MediaElement x:Name="Media"/>
<Button Content="Speech!" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Click="Button_Click"/>

MainPage.xaml.cs

private async void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    SpeechSynthesisStream stream;
    using (var ss = new SpeechSynthesizer())
    {
        stream = await ss.SynthesizeTextToStreamAsync("Thank you for the mail.");
    }
    Media.SetSource(stream, stream.ContentType);
    Media.Play();
}

話し手を英語にすると良いみたいですが、日本語Windows10にはデフォルトでインストールされていない模様。

foreach (var voice in SpeechSynthesizer.AllVoices)
{
    Debug.WriteLine($"{voice.Description},{voice.Gender},{voice.Language}");
}
Microsoft Ayumi Mobile - Japanese (Japan),Female,ja-JP
Microsoft Haruka Mobile - Japanese (Japan),Female,ja-JP
Microsoft Ichiro Mobile - Japanese (Japan),Male,ja-JP

ココに追加方法が書いてありました。

stackoverflow.com

すべての設定 > 時刻と言語 にある、地域と言語 を選んだ画面で、English(United States)を追加します。

f:id:matsujirushix:20170210235822p:plain

f:id:matsujirushix:20170210235848p:plain

さらに、オプションで言語パックと音声認識をダウンロードします。

f:id:matsujirushix:20170210235953p:plain

f:id:matsujirushix:20170211000001p:plain

すると、英語の話し手が追加されます。

Microsoft Ayumi Mobile - Japanese (Japan)
Microsoft Haruka Mobile - Japanese (Japan)
Microsoft Ichiro Mobile - Japanese (Japan)
Microsoft David Mobile - English (United States)
Microsoft Zira Mobile - English (United States)
Microsoft Mark Mobile - English (United States)

コードに、話し手の指定を追記します。

SpeechSynthesisStream stream;
using (var ss = new SpeechSynthesizer())
{
    ss.Voice = (SpeechSynthesizer.AllVoices.First(x => x.Gender == VoiceGender.Female && x.Language == "en-US"));
    stream = await ss.SynthesizeTextToStreamAsync("Thank you for the mail.");
}
Media.SetSource(stream, stream.ContentType);
Media.Play();

「Thank you for the mail.」

コード

github.com

環境

chibi:bitワークショップやりました

イベント chibi:bit

東京のメイカーから夕食のお誘いがあったので行ってきました。

食事だけではアレなので、クローズドでワークショップでもしましょうという話になり、初めてchibi:bitのワークショップをやってきました。参加者は3名。

場所はレインボー倉庫 下北沢

1Fにカフェ、1Fと2Fには細かく区切られたレンタルスペース、3Fと4Fはイベント/ワークスペースのようです。

4Fは、ものづくり作業ができるように壁や机に工具/工作機械が並んでいました。見た感じ、木工メイン。

f:id:matsujirushix:20170206222528j:plain

chibi:bitワークショップ

最初に、chibi:bitの開発環境はいろいろあるよ的な説明。 次に、chibi:bit IDEのブロックプログラミングで”LEDにテキスト表示”を作って、chibi:bitへ書き込み。 その後は、後ろから見ているので好きにやってちょうだいという放置プレーでした。

Aさん

プログラミング未経験のAさん。 LED表示とウェイトを大量に並べて、ドット絵でアニメーションを黙々と作っていた。とにかく黙々と。楽しいのかこっちが不安になった。(後から聞いたら楽しかったようです。)

Bさん

Processing経験者のBさん。 変数の使い方とか、並列実行(というかイベント駆動)あたりが気になっていた模様。ブロックは早々にやめて、JavaScriptで書いていた。

chibi:bitはブロック<->JavaScriptが相互変換できます

Cさん

.NET開発とかmbedを少し触ったことがあるCさん。 chibi:bitに実装されているセンサーをアレコレと試していた。温度とか照度とか。

おまけ

f:id:matsujirushix:20170206222959j:plain

時間があったので、Arduino+TextileSensorKit触ったり、HoloLens触ったりした。