HN 日本語サマリー

← 一覧へ戻る
科学・技術

私が構築したソフトウェア:25MHz 486-SXでのGPS

A software thing I built: GPS on a 25MHz 486-SX (forum.vcfed.org)

53 pointsby JPLeRouzic18 コメント

要約

1990年代に組み込みシステム開発者として、25MHz 486-SX CPU、32MB RAMを搭載したハードウェアプラットフォーム上で動作するリアルタイムGPS駆動型移動マップディスプレイ(現在のGPS)を開発した経験が語られています。当時の一般的な浮動小数点演算中心のアプローチとは異なり、Voronoiセルと整数演算を多用するHipparchusライブラリを採用することで、当時のコンシューマー向けGPSデバイスよりも高速で高解像度な表示を実現しました。

全文翻訳

私が作ったソフトウェア:25MHz 486-SXでのGPS

このようなものに興味を持つ人がいるか分かりませんが、90年代に組み込みシステムソフトウェア開発者として依頼されて構築したプロジェクトについての短い話を共有したいと思います。これは、今でもアクセスできたらと思うプロジェクトです。

私が取り組んだのは、「リアルタイムGPS駆動移動マップディスプレイ」、今日私たちが単に「GPS」と呼ぶものを作るという依頼でした。それが今日では、世界のほぼ全ての携帯電話やタブレットコンピュータに組み込まれています。

私は、25MHz 486-SX CPU、32MBのRAMを搭載し、ソフトウェアはROMに格納されるハードウェアプラットフォームで動作するソフトウェアを書くよう依頼されました。記憶が正しければ、画面表示は1024x768でした。テスト用にそのように設定されたラップトップが提供されました。486-SXは、数学コプロセッサが搭載されていないモデルでした。

当時、GISアプリケーションで見つけられた数学的なものはすべて、浮動小数点数と多くの三角法の公式を多用するものでした。(私の学士号は数学/コンピュータサイエンスでした。)

偶然にも、その数ヶ月前に、Dr. Dobb's Journalに、非常に異なるアプローチを取ったライブラリについての記事が掲載されました。それはGeodesyという会社のもので、Hipparchusと呼ばれていました。Voronoiセルを使用し、ほとんどの数学を8ビットおよび16ビットの整数計算に削減し、浮動小数点計算は1つか2つの単精度計算に留めました。実際、拡張精度浮動小数点演算よりも高い解像度を持っていました!

私はその記事のコードを使ってプロトタイプを作成し、それがどれほどうまく機能したかに驚きました。クライアントにHipparchusライブラリのコピーを購入してもらい、完全に動作するモデルを構築しました。クライアントは財政的な問題を抱え、私はすべてのものを彼らに引き渡さなければなりませんでした。その後どうなったかは全く分かりません。彼らは数十億ドル規模のビジネスになっていたかもしれません。

奇妙なことに、私のやったことを風の便りに聞いた誰かが直接連絡してきて、彼らのためにそれをしてくれるか尋ねてきました。残念ながら、私は単なる請負業者であり、IPを所有していませんでした。Phoenix TechnologiesがIBM PCクローンベンダーが使用するためのBIOSを構築するために「クリーンルーム」アプローチを取ったことは言及する価値がありますが、彼らは訴えられませんでした。しかし、AppleとFranklin Computerの間の訴訟で「クリーンルーム」アプローチが支持されたのは1989年まで待たなければなりませんでした。残念ながら、1993年当時、私はこれらのことを知らなかったので、仕様に基づいて単純に最初からやり直すことができたでしょう。

とにかく、これはGarminやMagellanからコンシューマーグレードのGPSデバイスが登場する5年も前のことです。彼らが抱えていた大きな問題は…従来の三角法アルゴリズムを実行するのに十分な浮動小数点速度を持つ安価なCPUが登場するまで、それほど時間がかかったということです。そして、私が構築したものは、これらの第一世代デバイスの2倍の速さでした!それは、数学コプロセッサを必要とせず、2秒ごとに1024x768のカラーディスプレイを更新した私が1993年に構築したものと同等のパフォーマンスを持つコンシューマーグレードのGPSが誰かの手に入るまで、文字通り10年かかりました。それらの最初の小さなコンシューマーGPSデバイスには、360x240のモノクローム画面しかありませんでした。

興味深いですね!HipparchusはMicrosoftに落ち着いたようですね:https://geodyssey.github.io/

他の投稿でも言及しましたが、MSが彼らを買収し、ライブラリをC#に変換してSQL Serverに組み込み、GISサポートとして提供しました。MSは彼らに競業禁止契約を結ばせたため、彼らはそれを再現できませんでした。もしアインシュタインが今日生きていたら、MSは彼の研究を買収し、それ以上の研究をしないように競業禁止契約を結ばせるでしょう。

これは、ほとんどのGISライブラリや地図作成ソフトウェアの背後にある数学にキャリアを捧げた2人の専門家によって作成された非常にユニークな数学ライブラリでした。Microsoftは彼らの人生の成果の結果を買い取り、データベースサーバーの中に埋もれてしまいました。

マニュアルのコピーを入手して、それを再作成することを検討したいです。実際、AIならユーザーマニュアルからでも可能かもしれません。

私が1992年12月のDDJで見つけた記事はこちらです。数学に興味があるなら、これは非常に面白いかもしれません。

彼らの記事には2つのファイルが欠けています。私のDropboxにあるzipファイルへのリンクはこちらです。サインインを要求されずに動作することを願っています。

最終編集: 2026年9月16日

これは本当に興味深い内容で、それらの問題に対する素晴らしい最適化ですね。1999年頃から長年にわたり、私は小規模なソフトウェア会社(主にトロントに開発拠点を置いていました)で、マッピング、ジオコーディング、ルーティングのためのソフトウェアをゼロから自社開発していました。北米の長距離トラック市場向けのナビゲーションと追跡に焦点を移しました。市販のソリューションは常に遅すぎたため、文字通りすべてのソフトウェアとライブラリを社内で作成し、常にサービスの最適化方法を探していました。

これは本当に興味深い内容で、それらの問題に対する素晴らしい最適化ですね。1999年頃から長年にわたり、私は小規模なソフトウェア会社(主にトロントに開発拠点を置いていました)で、マッピング、ジオコーディング、ルーティングのためのソフトウェアをゼロから自社開発していました。北米の長距離トラック市場向けのナビゲーションと追跡に焦点を移しました。市販のソリューションは常に遅すぎたため、文字通りすべてのソフトウェアとライブラリを社内で作成し、常にサービスの最適化方法を探していました。

他のスレッドで、誰かからこの件で依頼されたことを言及しましたが、それは大規模な運送会社のためでした。

このアプローチに遭遇したことはありますか?

他のスレッドで、誰かからこの件で依頼されたことを言及しましたが、それは大規模な運送会社のためでした。

このアプローチに遭遇したことはありますか?

ああ、それは非常に興味深いです。北米の最大の運送会社のほとんどが、一度は私たちの顧客でしたし、テクノロジーを採用することに前向きな企業も確かにありました。

私たちの競合他社がこのアプローチを使用していたかどうかは覚えていません。私たちは確かに使用していませんでしたが、ルーティングアルゴリズムとデータ構造を記述し最適化するために非常に、非常に優秀な人材がいました。

あなたがこれに言及するのは興味深いことです。なぜなら、数年間、386/486システムでNMEAセンテンスを読み込み、DOSで動作する中解像度のマップにそれをマークできるソフトウェアソリューションが開発されたかどうか疑問に思っていたからです。私がこれまで見つけたもののほとんどは、緯度/経度表示とユーザー提供のPCXマップ画像、そしてWindows 3で動作する非常に古いバージョンのStreet Navigator以上のものはありませんでした。

ああ、それは非常に興味深いです。北米の最大の運送会社のほとんどが、一度は私たちの顧客でしたし、テクノロジーを採用することに前向きな企業も確かにありました。

私たちの競合他社がこのアプローチを使用していたかどうかは覚えていません。私たちは確かに使用していませんでしたが、ルーティングアルゴリズムとデータ構造を記述し最適化するために非常に、非常に優秀な人材がいました。

ええ、どういうわけか、この人たちは全く関係のないトポロジカルフレームワークをGISの世界に組み込む方法を見つけました。あまり注目されなかったため、おそらく彼らがMSに売却して引退したのでしょう。

@spd 文脈によっては、「売却した」という言葉には、原則を妥協したという明確に否定的な意味合いが含まれます。

しかし、多くの現実的な状況では、過去の仕事に対する適切な金銭的報酬を得たいという願望から生じた単純なビジネス上の決定でした。

引退は、特定の分野での仕事の金銭的リターンとは全く関係がない可能性があります。

あなたがこれに言及するのは興味深いことです。なぜなら、数年間、386/486システムでNMEAセンテンスを読み込み、DOSで動作する中解像度のマップにそれをマークできるソフトウェアソリューションが開発されたかどうか疑問に思っていたからです。私がこれまで見つけたもののほとんどは、緯度/経度表示とユーザー提供のPCXマップ画像、そしてWindows 3で動作する非常に古いバージョンのStreet Navigator以上のものはありませんでした。

私はコードをDelphiに移植し、ある時点でNEMAデータを読み込んで遊んだことを覚えています。私の背景マップはHipparchusでレンダリングされ、あなたの現在地は画面の中央に固定され、下のマップがアイコンの下を移動するという、今日の多くのマップの動作に似ていました。画面バッファを10%ほど大きく設定し、オフスクリーン部分を更新してから位置を調整しました。これは画面全体を再生成するよりもずっと速かったです。

ちなみに、私は数年間、Four-Phase Systems(後にMotoに買収された)でTempe AZに勤務していました。私は、Unix Sys V Rel 3を68020に移植したチームにいました。RS6000に取り組んでいた担当者も数名いました。

あなたがこれに言及するのは興味深いことです。なぜなら、数年間、386/486システムでNMEAセンテンスを読み込み、DOSで動作する中解像度のマップにそれをマークできるソフトウェアソリューションが開発されたかどうか疑問に思っていたからです。私がこれまで見つけたもののほとんどは、緯度/経度表示とユーザー提供のPCXマップ画像、そしてWindows 3で動作する非常に古いバージョンのStreet Navigator以上のものはありませんでした。

2000年にGPS選択的可用性(SA)がオフになる前は、軍用以外のGPS受信機は、その地点が100m(328フィート)以内に精度があるということにしか頼れませんでした。密集した都市部や郊外環境では、その誤差は車両が道路ネットワーク上の正しい地点にデータを関連付けることを困難にし、商業用途での有用性を制限しました。おそらく、その時代にそれほど多くのものが存在しなかった理由でしょう。

私は、数年間、GPS以前の衛星システムからトラックの位置データを扱わなければならなかったため、それを知っています。それらのシステムは300m(984フィート)以内の精度で位置を三角測量していましたが、ほとんどの場合、私たちはその位置を中心とした円内にある最も高クラスの道路(高速道路)上にあると仮定していました。

最終編集: 2026年9月16日

@spd 文脈によっては、「売却した」という言葉には、原則を妥協したという明確に否定的な意味合いが含まれます。

しかし、多くの現実的な状況では、過去の仕事に対する適切な金銭的報酬を得たいという願望から生じた単純なビジネス上の決定でした。

引退は、特定の分野での仕事の金銭的リターンとは全く関係がない可能性があります。

それは彼らが長年取り組んできた、斬新で未知の技術でした。コードは元々FORTRANで書かれており、Cに移行しました。C++バージョンについて尋ね、彼らのためにそれを行うとさえ申し出ましたが、彼らは「自分たちの監視下では決して起こらない」と言いました。あなたは自由に推測できます。どこにいても、頭上の屋根が崩れてあなたを押しつぶす可能性があることを覚えておいてください。私は彼らと定期的に話していたので、推測する必要はありません。

当初から、私たちのGPSネットワークは、消費者のニーズのために国防総省によって導入されたディザリング(信号の揺らぎ)によって妨げられており、ルートが酔っ払い運転のように見えがちだったため、運転にはあまり役立ちませんでした。クリントン大統領がそのポリシーを変更して、消費者がより正確なデータを得られるようにしたのだと思いますが、それはロシア人が独自の衛星ネットワークを構築し、企業がそれ(ディザリングなしで、より正確だった)と連携する機器を作り始めていたため、そして国防総省の立場が米国ベースのコンシューマーテクノロジーを stifling(抑制)していたからです。

推測したいなら、これはVHS対Betamaxのようなもの、あるいは68000対8086のようなものです。「より優れた」技術がレースに勝たなかった、そしてこの技術の背後にある会社の従業員はわずか3名で、そのうち2名は祖父母でした。ということを考えてみてください。

最終編集: 2026年9月16日