Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Smart Maps Portable 2024-08/09 #567

Closed
hfu opened this issue Aug 11, 2024 · 16 comments
Closed

Smart Maps Portable 2024-08/09 #567

hfu opened this issue Aug 11, 2024 · 16 comments

Comments

@hfu
Copy link
Contributor

hfu commented Aug 11, 2024

Building on the community-driven efforts led by @mapconcierge and @ShogoHirasawa, we are now developing Smart Maps Portable—a portable device that hosts MapLibre-based web maps, now enhanced with GNSS positioning capability! https://hackmd.io/@smartmaps/2024-08#/0/5

smart-maps-portable-2024-08

In this issue, @hfu will be keeping notes on what's on his mind, in his native language.

@hfu
Copy link
Contributor Author

hfu commented Aug 11, 2024

Reflection (to be updated)

Smart Maps Portable は、MapLibre をベースにしたポータブルなウェブ地図サーバーで、USB UPS に接続された Raspberry Pi 4B に 2TB の SSD を搭載したデバイスです。新たに GNSS 受信機と Sense HAT を追加しています。

最近の進展

  • ケースの改良: デバイスを単にラップで包むのではなく、専用のケースに入れ、ベルクロで固定するようにしました。このケースの改良により、次の作業も進めることができました。
    • GNSS 受信機の統合: GNSS 受信機をデバイスに統合しました。
    • USB UPS の統合: USB UPS をデバイスに組み込みました。
  • 位置情報の長時間ログ記録機能の試験: 非常に長時間の位置ログを取る機能を試験中です。

最近直面した課題

  • 熱処理の問題: 熱処理は依然として大きな課題です。ソーラーパネルから UPS へ給電をテストする際、ケースを閉じた状態でデバイスを稼働させたところ、GNSS 受信機のケースが溶けかけました。現在のところ、受信機の機能は損なわれていないように見えますが、熱によるデバイスの損傷リスクについては引き続き注意が必要です。

今後の課題

  • USB SSD と Sense HAT の活用: 現在、USB SSD と Sense HAT は特に機能を持たず、飾りのような状態です。
  • USB ポートの干渉問題: SSD と GNSS 受信機を同じ種類の USB ポートに接続した際、GNSS 受信機が 12 時間以上フィックスしない現象が発生しました。USB 2.0 ポートに GNSS 受信機を、USB 3.0 ポートに SSD を接続することで再びフィックスするようになりましたが、根本原因の特定には至っていません。
  • ベースマップの PMTiles の搭載: ベースマップの PMTiles を搭載し、「常に自機の位置を表示するウェブ地図サーバー」として運用することには、一定の意義があると考えています。

@yuiseki
Copy link
Member

yuiseki commented Aug 11, 2024

USB 2.0 ポートに GNSS 受信機を

USBデバイスは種類によってはUSB2.0のほうがうまく動いたりしますね
(LinuxかつUSB3.0登場以前に発売された古めのデバイスをUSB3.0ポートに挿すと謎にハマることはよくあります)

現在、USB SSD と Sense HAT は特に機能を持たず、飾りのような状態です

USB SSDをブートデバイスにすることで、microSDよりも寿命が長持ちすると言われています。

Sense HAT の活用方法はちょっと思い浮かびませんでした。

「常に自機の位置を表示するウェブ地図サーバー」

これは面白いですね!

使っているGNSS受信機の型番を教えていただけないでしょうか。

@hfu hfu mentioned this issue Aug 11, 2024
@hfu
Copy link
Contributor Author

hfu commented Aug 11, 2024

@yuiseki ありがとうございます。SSD ブートにするノウハウはすでに持っているので、SSD ブートに切り替えてみようと思います!USB 3.0 ポートは古いデバイスと相性が悪い場合があるという情報も、原因を推定するための安心情報になりました。

私が使っている GNSS 受信機は、このようなものです。
image
source: amazon.co.jp

SDR で GNSS

ところで、Software-Defined Radio で GNSS 受信機をソフトウェア実装をするという、すごく興味深いアプローチがあるそうです。( @keichan34 から教えてもらいました。)

おそらく、いろいろな人がそれぞれの方法で試しておられるようです。

この場合、GNSS 信号の周波数でのアンテナの利得とか大事な気がするので、それなりのアンテナを繋いであげるといいのかな、とワクワクしています。

常に自機の位置を表示するウェブ地図サーバー

これを使いやすくするために、以前 @yuiseki さんに見せていただいたような形で、USB ポートにWiFiドングルを追加して、周辺の機器から WiFi 接続してもらうと良いのかなと思ったりしています。電波の干渉とかも起こりそうな気がしますが、コンパクトなWiFiドングルを探してみようかと思ったりしています。

周囲3mくらいから接続できれば十分なネットワークを作ることができればいいかなと思っています。

@hfu
Copy link
Contributor Author

hfu commented Aug 12, 2024

ロギング機能

ロギング機能については、以下のリポジトリで地道に進めています。

https://github.com/hfu/movelog

Unix

個人的に気に入っているのは、

gpspipe -w | ruby togeojsons.rb | uniq >> move.geojsons

というコマンドです。機材が動いていない時には、uniq のおかげでログが溜まりません。(togeojsons.rb で、タイムスタンプを 30 分単位の identifier にしていることで、行が同一になる可能性をあげているのも工夫の一つです。)

また、Unix pipe はバッファしてくれるようなので、move.geojsons への書き込みはある程度溜まってからしか起こらず、結果として電力など節約してくれそうです。

@hfu hfu changed the title Smart Maps Portable 2024-08: reflection Smart Maps Portable 2024-08: design Aug 18, 2024
@hfu
Copy link
Contributor Author

hfu commented Aug 18, 2024

システム要件を私が理解する必要があると思っていて、2023年の @smellman の講義の内容の理解をあらためて深めようと思っています。まずは、下記のスライドを見ていきます。

https://www.docswell.com/s/smellman/5Q8Q9Y-2023-12-09-osc2023-fukuoka-lt#p8

なお、上記の測位情報の記録については、H3 で丸めて記録すると一箇所に停滞していたところのログがたまらず良いような気がしているのでそうしています。そちらの話は、展開するようであれば別のイシューで展開させようと思っています。

@hfu
Copy link
Contributor Author

hfu commented Aug 18, 2024

論点

Smart Maps Portable の設計方針を考えます。論点は、次のようなものになるでしょう。

  • インターネット接続を前提とするか
  • ソフトウェア導入済みで提供するか
  • 12名程度の参加者に対し、1人1台を提供できるか

私個人のテーマとしては、the intersection of international development and innovative geospatial technologies ということがあります。台数を少数にして極力ポータブルにし、インターネットにも商用電源にも依存しない方向にしていくことが理想です。その理想の方向に従うのならば、

  • 能力構築セッション中にはインターネット接続を前提としない
  • 能力構築セッションの開始時点で、ソフトウェアの導入は完了している
    • 能力構築において、ソフトウェアの導入は「次のステージのこと」とする
  • 使用する Raspberry Pi の台数はできるだけ1にする

ということになると思います。https://github.com/yuiseki/unvt-pi-gen に学びながら、この方向をどのようにしたら進められるか考えてみましょう。

一方で、リモートアクセスによって対応していくという方法も有効かもしれません。

  • tmate でコンソールへのリモートアクセスを実現する。
  • serveo でサービスをインターネットに出す。

といった方法を併用していくことにより、より円滑に作業ができることになるかもしれません。

@hfu
Copy link
Contributor Author

hfu commented Aug 18, 2024

pi-gen / unvt-pi-gen の方法を私も手元で動かしてみたところ、ビルドの負荷はそれなりに大きいことを体感しました。
今回の用途の場合、書き換えなども頻繁に行われる可能性があるので、当座のところ、unvt/equinox や smellman/jica_scripts の方法、つまり、シェルスクリプトや Makefile で対応する方法を優先しようと思います。
ただし、そのインストール用のシェルスクリプトや Makefile は必ずしも能力構築セッションでは実行せず、能力構築セッションの開始時点で、ソフトウェアの導入は完了しているようにすることがセッションの成功率を高めるように思っています。

@hfu
Copy link
Contributor Author

hfu commented Aug 18, 2024

研修準備は #575 に fork することにします。

@hfu
Copy link
Contributor Author

hfu commented Aug 20, 2024

SSD が動作不安定の原因だったかもしれない

  • GNSS 受信機と SSD の両方を USB 3.0 ポートに繋いだ際に不安定であった。
  • 最近、MicroSD からではなく SSD からブートするように再設定し、GNSS 受信機を USB 2.0 に、SSD を USB 3.0 に接続したところ、ソフトウェアを導入する作業を行っていた時に SSD が外れてしまって Raspberry Pi OS がディスクにアクセスできず、機能できない状態に陥ることが複数回生じた。
  • GNSS 受信機を USB 3.0 に、SSD を USB 2.0 に接続する形にすると、動作が安定しているように見える。
  • SSD を USB 3.0 に接続してしまうと、大量のデータ転送が起こってしまった際に Raspberry Pi 側で電力不足が生じてしまってディスクが外れてしまうのではないかと仮説を持っている。
  • しばらくの間、GNSS 受信機を 3.0、SSD を 2.0に接続するという形で運用を続けてみる。

@hfu hfu changed the title Smart Maps Portable 2024-08: design Smart Maps Portable 2024-08 Aug 28, 2024
@hfu
Copy link
Contributor Author

hfu commented Aug 28, 2024

Ethernet 直結接続が安定するように設定を追加

具体的には、eth0 において、リンクローカルアドレスの範囲内の IP アドレスを静的に追加した。
アドレスは具体的には 169.254.169.169 とした。

設定方法

/etc/dhcpcd.conf に次の内容を追記

interface eth0
static ip_address=169.254.169.169/16

sudo systemctl restart dhcpcd で設定を反映。

@hfu hfu changed the title Smart Maps Portable 2024-08 Smart Maps Portable 2024-08/09 Aug 31, 2024
@hfu
Copy link
Contributor Author

hfu commented Aug 31, 2024

Smart Maps Portable: The Spirit of Sustainable Freedom and Exploration

I have been developing a portable device called Smart Maps Portable, which is based on a Raspberry Pi. This device features a GNSS antenna, an SSD, and a USB UPS to ensure stable power even while on the move. All components are securely attached using Velcro within an affordable plastic case, making it easy to carry around and use in various situations.

One of the key functions of Smart Maps Portable is recording GNSS positioning data. The device logs position information every second, but to efficiently manage data, it converts the location into H3 grid cells. It also records the last access time for each cell using a pomo code (the UNIX time divided by 1800), minimizing storage usage. This approach allows for long-term data logging without overwhelming the storage capacity.

Another significant feature of the device is its role as a web map server. Smart Maps Portable is designed to operate independently of the internet, utilizing map data stored on the SSD. This makes it valuable in disaster situations or areas with limited connectivity, where map services are still crucial. The software is open-source and available on GitHub at github.com/unopengis/h3log, enabling anyone interested to contribute or make use of it.

Portability is a core design principle, allowing Smart Maps Portable to be used anywhere. The device is set up for easy SSH login via a cross-cable connection, and it also comes with dual WiFi antennas to support various network configurations in the field. These features ensure flexibility and connectivity in diverse environments.

Energy efficiency is another notable aspect. Even if the device runs continuously for a year, the electricity cost is estimated to be only a few hundred yen. Typically, it consumes 5V1A, or around 5W of power. This low-power design aligns with the broader goal of sustainability, ensuring long-lasting operation with minimal environmental impact.

In the world of open-source software, we often hear the phrases "free as in freedom" and "free as in beer." However, Smart Maps Portable embodies the spirit of "free as in exploration." While it may require maintenance and care, the process of developing and refining the device brings valuable learning and new discoveries. This platform represents the freedom to explore, innovate, and expand our understanding of what’s possible with sustainable technology.

Through the development of Smart Maps Portable, I am not just creating a convenient tool but embracing the freedom to continuously explore sustainable solutions. This device stands as a symbol of that ongoing journey toward innovation and discovery.

Smart Maps Portable: 持続可能な自由と探求の精神

私は、Smart Maps Portable というRaspberry Piベースのポータブルデバイスを開発しています。このデバイスは、GNSSアンテナ、SSD、USB UPSを備えており、持ち運んでも安定した電力供給を確保することができます。すべての部品は、ベルクロで固定された安価なプラスチックケースにしっかりと収められており、様々な状況で簡単に持ち運び、使用できるように設計されています。

Smart Maps Portableの主な機能のひとつは、GNSS位置情報の記録です。このデバイスは毎秒位置情報をログに記録しますが、効率的なデータ管理のために、位置情報をH3グリッドセルに変換します。また、各セルの最終アクセス時間をpomoコード(UNIXタイムを1800で割った商)として記録し、ストレージの使用量を最小限に抑えています。この方法により、長期にわたるデータ記録が可能となり、ストレージ容量の限界を心配する必要がありません。

もうひとつの重要な機能は、ウェブ地図サーバとしての役割です。Smart Maps Portableは、インターネットに依存せず、SSDに保存された地図データを利用して完全に動作するように設計されています。これにより、災害時や通信インフラが整っていない地域でも地図サービスを提供することができるため、非常に価値があります。ソフトウェアはオープンソースであり、GitHubに公開されています(github.com/unopengis/h3log)。興味のある人なら誰でも、貢献したり、活用したりすることが可能です。

ポータビリティは、Smart Maps Portableの設計上の重要な原則のひとつです。このデバイスは、クロスケーブル接続によるSSHログインが簡単に行えるように設定されており、フィールドでの多様なネットワーク環境にも柔軟に対応できるよう、2系統のWiFiアンテナを搭載しています。これにより、様々な環境での柔軟性と接続性が確保されています。

エネルギー効率も、このデバイスの特筆すべき点のひとつです。1年間稼働し続けても、電気代はわずか数百円程度に抑えられると見積もられています。通常は5V1A、つまり約5Wの電力を消費します。この低消費電力の設計は、持続可能性を重視した設計方針に沿っており、長期間にわたり、環境への影響を最小限に抑えた運用を可能にしています。

オープンソースソフトウェアの世界では、「free as in freedom(自由としての自由)」や「free as in beer(無料としての自由)」というフレーズがよく使われます。しかし、Smart Maps Portableは「free as in exploration(探求としての自由)」の精神を体現しています。メンテナンスやケアが必要な部分もありますが、その過程で得られる学びや新しい発見が、このプロジェクトの価値を高めています。このプラットフォームは、持続可能な技術で探求し、革新し、可能性を広げる自由を象徴しています。

Smart Maps Portableの開発を通じて、私は単に便利なツールを作っているわけではありません。持続可能なソリューションを探求し続ける自由を享受しているのです。このデバイスは、革新と発見への絶え間ない探求の象徴です。

@hfu
Copy link
Contributor Author

hfu commented Sep 4, 2024

  • unopengis/librefranklin を clone し、docs を h3log/docs/librefranklin としてシンボリックリンクすることにより、font データをインターネットから独立にしました。
  • planet.pmtiles と gel.pmtiles のダウンロードを進めています。

@hfu
Copy link
Contributor Author

hfu commented Sep 4, 2024

  • docs/gel.pmtiles 183GB のポータブル化に成功しました。
  • Range Request をサポートしているウェブサーバが必要だったので、busybox httpd に切り替えました。

@hfu
Copy link
Contributor Author

hfu commented Sep 4, 2024

See also: https://github.com/UNopenGIS/h3log

@hfu
Copy link
Contributor Author

hfu commented Sep 5, 2024

  • ライブラリ類のポータブル化をしました。

@hfu
Copy link
Contributor Author

hfu commented Oct 13, 2024

一旦開発が止まったのでクローズします。
豪州出張その他で運用してみて、教訓が積めたらまた開発を再開すると思います。

@hfu hfu closed this as completed Oct 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants