2017年08月14日

鉄道模型とプログラミング言語

「2017年プログラミング言語別平均年収ランキング、1位は「Scala」 平均626万円」 @ITを見て、いろいろ思ったので、書いてみます。

昼の仕事の私の業務では、ほぼほぼ100%、C言語です。かなりマニアックな部分なのと、C++のオーバーヘッドすら大問題、という用途に使うので、C言語から抜け出すのはあと10年でも無理そうですね。数百円の組み込みマイコンにおける中間言語技術や最適化技術が大幅に進化したら変わるかもしれませんが、ARM KEILやIARの開発環境の値段が上がるのは勘弁ですが。

さて、鉄道模型の実装によく使われるプログラミング言語とはいったい何でしょうか!

もう答えは分かってます。C言語です。次に多いのは、アセンブリ言語でしょう。Nucky社はアセンブリ言語を愛用しています。弊社は基本はC言語(C++も一部)とC#です。最後に多いのはC++だと思います。C++を使うのは、ArduinoベースのスマイルデコーダシリーズやDSシリーズになります。

Windows向けの鉄道模型用フロントエンドソフトだと、JAVAとかC#とかいろいろあります。Windowsでは比較的言語は自由なので、HSPでも、Active Basic、はたまたゲームエンジンの吉里吉里NScripterでもいいわけです(超マイナー、模型の分野の人には無縁のプログラミング言語たち)。私もゲームエンジンを20年近く前に作っていたので懐かしいところです。一歩間違えていたら、ギャルゲーの会社に入っていたかもしれません。

何が言いたいかと言うと、プログラミング言語など何も関係は無いという事です。Scalaとかいう言語(私はよく知らない)が1位とか言ってますが、何も意味はありません。

重要なことは、何かを実現するために、将来のメンテナンスも考慮したうえで何がベストかを考えて、実装方針を決めて、実装していくことです。そのために、プログラミング言語は自ずと自動的に決まるものです。このプログラミング言語を勉強すれば儲かる!」とか考えると、ドツボにはまります。「寿司の道を究める!」と将太の寿司ばりにがんばる人が、世界共通言語として確たる地位である英語しかしゃべれなかったらどうなりますでしょうか。英語はどこにでも通用しますが、例外があります。その例外に引っかかったら、究められないですよね?寿司以外にも、ドイツのお菓子マイスターとか、たくさんあるはずです。

鉄道模型については、C言語をキッチリ勉強してもらえれば、デコーダとコマンドステーションの実装で困ることは無いです。アセンブリ言語は、今はコンパイラ君が超優秀なので、あえて覚えなくても大丈夫です。自分の頭で最適化するよりもイイ機械語(アセンブリ言語)を生成してくれます。

ただ、鉄道模型も今はスマートフォンで動かすのが最近の流行なこともありますので、モバイルアプリ実装ということで、JavaScriptも一緒に勉強することを推奨します。JAVAはやめた方が良いです。Sunがオラクルに買収されたり、重たい中間言語インタプリタの制約などなどで、10年後は主流になるとは到底思えません。10年前はそんなことは無かったのですが・・・。

と言う事で、将来、プログラマーを目指す人は、とりあえずC言語はマスターしましょう。その次は、C++やC#あたりを攻めていき、そのついでにJavaScriptをやっておけば、飯は食っていけると思います。
posted by yaasan at 19:32 | Comment(3) | 鉄道模型

2017年08月12日

Aliexpressでトラブル中(部品が入っていない)

AliexpressのKELI electronicsというところから、ATMEGA328Pとヘッダーピンを頼んだのですが、ヘッダーピンだけ先に届いて、肝心のATMEGA328Pが届かないので、今日、どうなっているのか確認したところ、店が送ったと言い張る一方で、まったく話が進みません。

たまに2つに分割してくることもあるので(他の店ですが)、うっかり写真も撮り忘れており、エビデンスがない状況です。

ヘッダーピンは数百円の激安のものですが、ATMEGA328Pは今回はかなり大量に発注しており(40個)、金額が7000円近くです。

これはかなりヤバイことになってしまいました。こういう安いものだけを送って、送ったフリをするあくどいことをする店とは、思いもしませんでした。今まで2回使っていたので、信用したのが間抜けでした。

Dispute_Aliexpress.png

ちょっと7000円弱を店のミスなのに失うのは、かなりキツイですね。写真を撮らなかったのが本当にくやまれます。

なんか今月は、こちらの責任ではないのに、損を被ることが多いです。

■追記

悪徳ショップのKELI electronicsは、完全に無視を決め込みました。7000円の被害です。まあ、命取られないだけ良いですが。妙に安い理由は、こうやって、何度か買った客に安心させたと見せかけて、比較的高額なものを送らないことで、利益を上げてるのでしょうか・・・。

私も写真を撮らなかった非はありますが、こうやって安いものだけを送って、ミスを誘うのがいかにも詐欺師って感じですね。Aliexpressのシステムも、全部書留で追跡できるようにして安心感を出してますが、中身がきちんと入っているかの証明には何もならないですしね。

皆様も気を付けましょう!中身が2分割されるとか思わずに、写真はしっかり撮りましょう!

まあ、日本の模型屋さんでも悪いことしているところがありますけどね・・・。詳しいことは書けませんが、7000円どころじゃなかったですが。
posted by yaasan at 23:46 | Comment(4) | 工作

デコーダ開発ボードの後継を勝手に指名

以前に、デコーダ開発ボードなるものを作ってましたが、ぶっちゃけ、今はAtmelStudio用のAVRの書き込み機としてか使っていない状況になりつつあります。ちょうど2年前に作っていたんですね・・・懐かしいですね。

DCC館のあやのすけさんが、このたび、デコーダテスターをリリースされてます。しかも数千円と爆安です。MP3デコーダやワンコインデコーダなど様々なデコーダを考慮した設計になっているのが最大の特徴です。X in 1になっていて、私も全部把握しきれていませんが、たくさん入ってます。

なごでんさんのページでレビューがありますが、MP3デコーダ用のマイ独自スケッチを作るのに便利だと思います。

腕に自信のある方は、ぜひとも入手して、MP3デコーダのディーゼル、SLスケッチをガシガシいじって楽しい機能を実現してはいかがでしょうか。LEDギミックのスマイルファンクション用にも抜群の相性ですね(当たり前ですが)。マニアック過ぎますが、こういうことができるのが、DCCのメリットでしょう。

DCC連合のデコーダ類は、自分でソフトがいじれますので、どんどんカスタマイズして、いろいろな機能を追加して楽しんでいってもらえればと思います。

私の作ったデコーダ開発ボードも、役目を譲れて本当に良かったです。
posted by yaasan at 20:07 | Comment(0) | 鉄道模型

2017年08月11日

CameraS88の強化を検討中

カメラS88という在線検出器をカメラで模擬するソフトがあるのですが(みなさんもうお忘れだと思いますが)、強化を考えてます。将来的には、ハードウェア化して、模型以外にもいろいろ使えるようなセンサー器具にしようと思ってます。IFは、wifi経由のブラウザで設定するような感じです。



いまは単純な辞書画像との単純比較ですが、前々からやるやるといってやっていなかった以下のアルゴリズムを適用しようと思います。

■辞書比較以外の手法の検討

実はあんまり辞書比較は良くないと思ってます。簡単で処理も軽いのですが、少しでもカメラがずれたりすると途端にダメダメになるためです。辞書の自動生成が最終的なゴールです。

辞書なしは、処理が膨大になるので、たぶん採用は難しいです。ADASなんかは、歩行者認識とかクルマの認識はかなりの演算をして判定処理をしています。認識部分はソフトじゃなくてASICやFPGAでハード化してそうですね。

■照明にロバストな正規化

ヒストグラムを用いて補正をかける、ZNCCなどのテンプレートマッチングの正規化などの手法があります。演算量が増えますが、安定性が上がります。辞書画像を定期的に取得して辞書データの変化量をあらかじめ持つのも良いかもしれません。

■エッジ変化検出

RGBの色ではなくて、エッジ(色の傾き、ベクトル)の変化で検出する方法は、ロバストだとよく言われます。
なんでかというと、色はノイズや明るさにもろに影響しますが、エッジにするとその影響が減るからです。ただし、データとして複雑になるので、演算量は増えます。
どれくらいベクトルデータを得るかにも寄りますが、0°、180°、45°、315°の4データでだいたい網羅できるはずです。

cS88_edge0deg.png

■位置の移動軌跡のベクトル化(キャットフィルター)

検出した位置の軌跡をベクトルとして表現し(中心または重心の差分からベクトルに変換できます)、模型か人かを判断して分離する。ベクトルの向きを利用して一種のフィルタとしても扱う。いわゆる「猫が来た!」問題の解決用です。まあ、スタンドバイミーばりに線路伝いで来たらダメですが・・・。

cS88_catfilter.png

-----------------------------------

なんか、画像処理の研究室のテーマみたいな様相ですが、なかなか楽しいものなので遊びながらやっていこうと思います。模型の在線検出器としては、一番最強の解決方法になると思います。
posted by yaasan at 08:49 | Comment(2) | ソフトウェア

ポイントデコーダ販売開始

先日お伝えしたポイントデコーダの発売を開始しました。

商品ページはこちら

1点3500円(完成品のみ)ですが、多数購入の場合や、DSmainR5.1やDSblueboxと同時購入でいろいろサービスさせていただきます。

お盆サービス(8/11-8/13): 配線キットを無料で付属! 他
posted by yaasan at 06:50 | Comment(0) | 鉄道模型