Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro lyrical showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 0.6.0
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/shimz-robotics/mapoi.git
VCS Type git
VCS Version main
Last Updated 2026-07-15
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Web UI for mapoi - POI editing, navigation, and robot monitoring

Additional Links

Maintainers

  • Shunsuke Kimura

Authors

  • Shunsuke Kimura

mapoi_webui

English version (primary): README.md 本ファイルは日本語スナップショットです。最新の内容は英語版を参照してください。

mapoi の Web UI パッケージです。 ブラウザから地図の表示、POI の編集、ルートの確認、ナビゲーション操作、ロボット位置の監視ができます。 スマートフォンやタブレットからも利用可能です。

機能

  • 地図表示: 占有格子地図をブラウザ上に表示、地図の切り替え、ズームはホイール操作・ドラッグ・ピンチのみ対応(+/− ボタンは無し)
  • POI 編集: POI の追加・編集・削除・保存(mapoi_server に自動リロード通知)。地図上の POI はシングルクリックで選択、ダブルクリックで編集パネルを開く、位置ロック解除トグル(既定はロック)を切り替えると選択中の POI をドラッグで移動、扇形(yaw 制約)の先端ハンドルをドラッグで向き(yaw)を回転(いずれも Save で確定)。編集操作は Undo/Redo(Ctrl+Z / Ctrl+Shift+Z)に対応、モバイルではパネルを開かなくても地図上のフローティング Undo ボタンで直前の操作を取り消せる
  • ルート表示: ルートのポリライン表示、矢印マーカー、表示/非表示の切り替え
  • ナビゲーション操作: POI へのゴール走行、ルート走行、一時停止・再開、停止
  • スマホ表示: Navigation を優先して開き、地図は画面の半分程度を確保
  • ナビゲーション backend 検出: mapoi/nav/backend_status readiness topic (#198) 駆動で Navigation connected / unavailable バッジを UI に表示。command topic の subscriber 数による検出は、readiness topic 未受信時の capabilities payload (/api/mode および /api/nav/statusnavigation フィールド) の best-effort フォールバックとしてのみ残る
  • 自己位置推定 backend 検出: mapoi/localization/backend_status readiness topic (#209) 駆動で Localization connected バッジを表示し、Set Initial Pose UI を gate する
  • 自己位置推定リセット: POI 選択による Initial Pose の設定
  • ロボット位置表示: TF (mapbase_link) によるリアルタイムのロボット位置マーカー表示
  • タグシステム: システムタグ・ユーザータグの表示、タグによる POI 色分け
  • UI 表示設定: UI 全体(ヘッダー・POI パネル)の表示/非表示トグル、POI パネルを地図上に重ねる半透明オーバーレイ表示(不透明度調整可、設定は保持)

ノード

mapoi_webui_node

Flask ベースの HTTP サーバーを内蔵した ROS2 ノードです。

パラメータ

パラメータ名 デフォルト 説明
maps_path string "" 地図ディレクトリのパス
map_name string turtlebot3_world 起動時に読み込む地図名
config_file string mapoi_config.yaml 設定ファイル名
web_port int 8765 HTTP サーバーのポート
web_host string 0.0.0.0 HTTP サーバーのバインドアドレス
map_frame string map TF の親フレーム
base_frame string base_link TF の子フレーム
robot_radius double 0.15 ロボットの実寸 (m)。frontend の robot marker サイズ・active route connector の到達閾値に使う。Nav2 の robot_radius と意味は同じだが本 node は Nav2 非依存運用も想定するため独立 param とした。Nav2 を併用する場合は両者の値を一致させる (#117)

パブリッシャー

トピック名 説明
mapoi/nav/goal_pose_poi std_msgs/String ゴール POI 名の配信
mapoi/nav/route std_msgs/String ルート走行の開始
mapoi/nav/pause std_msgs/String ナビゲーションの一時停止
mapoi/nav/resume std_msgs/String ナビゲーションの再開
mapoi/nav/cancel std_msgs/String ナビゲーションのキャンセル
mapoi/nav/switch_map std_msgs/String Navigation map switch 指示。mapoi_nav2_bridge 等の navigation backend が受信して地図切り替えを実行

サービスクライアント

サービス名 説明
mapoi/request_initial_pose RequestInitialPose POST /api/nav/initial-pose 受信時に mapoi_server へ publish を依頼 (#211)。WebUI は直接 mapoi/initialpose_poi を publish しない

サブスクライバー

トピック名 説明
mapoi/nav/status std_msgs/String ナビゲーション状態の受信("status" / "status:target" 形式、transient_local QoS)。: split で target を抽出し REST /api/nav/statustarget field として公開
mapoi/nav/command_rejected std_msgs/String reject コマンドのイベント通知の受信(volatile QoS、payload = target 文字列、#354)。mapoi/nav/status の latched snapshot を汚さず、SSE command_rejected event として frontend に転送するだけの薄い変換
mapoi/nav/backend_status mapoi_interfaces/NavigationBackendStatus mapoi_nav2_bridge が 1Hz で publish する navigation backend readiness summary の受信(#198)。Navigation connected バッジの表示と navigation 操作 UI の gate に使う。QoS は transient_local + liveliness(lease 5s、#208)で、publisher 死亡時は UI を disable する
mapoi/localization/backend_status mapoi_interfaces/LocalizationBackendStatus mapoi_amcl_localization_bridge(または custom localization bridge)が 1Hz で publish する localization backend readiness summary の受信(#209)。Localization connected バッジの表示と Set Initial Pose UI の gate に使う。QoS は mapoi/nav/backend_status と同一
mapoi/config_path std_msgs/String 外部からの地図切り替え検知

TF

変換 説明
mapbase_link ロボット位置の取得(5Hz)

REST API

v1.0.0 に向けて URL 階層を editor 系 (/api/editor/*)・nav 系 (/api/nav/*) に分離しています (#340)。「作用対象」列は各 endpoint が触れる範囲を示します:

  • 編集 context のみ: mapoi_server 内部の編集対象 (map context / YAML) を変更するだけで、稼働中の実ロボット・Nav2 には一切作用しません
  • 実ロボットに作用: Nav2 / navigation backend (mapoi_nav2_bridge 等) に指示を送り、稼働中のロボットの挙動 (走行・地図切替・自己位置) を変えます
  • 読み取りのみ: 状態取得のみで副作用はありません
メソッド エンドポイント 作用対象 説明
GET /api/maps 読み取りのみ 地図一覧と現在の地図名
GET /api/maps/<name>/image 読み取りのみ 地図画像(PNG)
GET /api/maps/<name>/metadata 読み取りのみ 地図メタデータ(解像度・原点・サイズ)
POST /api/editor/select-map 編集 context のみ (実ロボット非接触) mapoi_server の編集対象地図を切替 (select_map service)。Nav2 / 実ロボットの走行地図には作用しない。単独で叩くと server の編集 context と Nav2 の実 map が乖離しうる (乖離を解消するのは /api/nav/switch-map)
GET /api/pois 読み取りのみ POI 一覧
POST /api/pois 編集 context のみ POI の保存
GET /api/routes 読み取りのみ ルート一覧
POST /api/routes 編集 context のみ ルートの保存
GET /api/tag-definitions 読み取りのみ タグ定義一覧
POST /api/custom-tags 編集 context のみ カスタムタグの保存
GET /api/nav/status 読み取りのみ ナビゲーション状態・ロボット位置・robot_radius (m)
POST /api/nav/goal 実ロボットに作用 POI へのゴール走行
POST /api/nav/route 実ロボットに作用 ルート走行の開始
POST /api/nav/pause 実ロボットに作用 ナビゲーションの一時停止
POST /api/nav/resume 実ロボットに作用 ナビゲーションの再開

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mapoi_webui

This per-package file lists only the changes affecting mapoi_webui (the mapoi_webui_node REST/SSE backend and the WebUI frontend), in the flat format expected by bloom / buildfarm. Full project-level narrative: root CHANGELOG.rst / the GitHub Releases page.

Forthcoming

0.6.0 (2026-07-15)

  • Flip the UI toggle (☰) aria-pressed semantics so the button lights up (blue) while the UI panel is shown, matching the lock button's "on by default" look (#449).
  • Vendor Leaflet under web/vendor/leaflet/ and serve it from a new /vendor/<path> static route instead of loading it from the unpkg.com CDN, so the WebUI works fully offline (#394).
  • Add a Help overlay (? button / modal, also opened with the ? key) listing shortcuts and map/edit/save/POI-list/Navigation usage; Escape closes it with top priority over other shortcuts, and while it is open all other owned shortcuts are disabled to prevent accidental actions behind the modal (#391).
  • Add L / U single-key shortcuts to toggle POI position-drag lock and UI panel visibility, driving the existing toggle buttons through a single code path; modifier combinations (e.g. Ctrl+L) and key repeat are ignored (#390).
  • Add a name search box to the POI list: case-insensitive substring match on poi.name, filtering the list only (map markers and the current selection are unaffected) (#383).
  • Pan the map to the selected POI when it is picked from the POI list (or Navigation dropdown) and falls outside the current viewport; selections originating from a map click are never panned since the clicked POI is already visible (#382).
  • Warn on tab close / reload / navigation via beforeunload when a POI/route/tag editor is dirty or has an open edit form, reusing the same blocker definition as the SSE reload guard (#380).
  • Show a world-coordinate readout (x: ..., y: ..., formatted to the POI YAML's decimal precision) that follows the mouse over the map and hides on mouseout or non-finite coordinates (#381).
  • Skip the SSE-triggered full reload when a tab's own Save round-trips back to it: config_changed payloads now carry a config_version (sha256), and the frontend treats a matching version as self-originated, avoiding the undo-history and map-viewport reset that a spurious reload used to cause; a "Saved" toast (shown on a successful Ctrl+S save) now gives the save-confirmation feedback that the reload flicker previously provided (#384).
  • Add Ctrl+S / Cmd+S to save all dirty editors, committing an open edit form first (via its OK-equivalent validation) before saving; shows a "No unsaved changes" toast when there is nothing to save, and ignores key repeat and re-entry while a save is in flight (#375).
  • Add a Delete key shortcut to remove the selected POI, with no confirmation dialog — the deletion only touches the working copy and is undoable with Ctrl+Z, so an undo-hint toast is shown instead; ignored while an input is focused or a route/POI form is open (#374).
  • Guard the SSE config_changed full reload against silently discarding a dirty tab's unsaved edits and undo history: reload is now held and offered as an OK/Cancel choice (load latest vs. keep editing) whenever a POI/route/tag editor is dirty or has an open edit form (#373).

0.5.0 (2026-07-10)

  • Add a machine-readable code field to every JSON error response, and extend the optimistic-concurrency expected_version check to POST /api/routes and POST /api/custom_tags (409 + version_mismatch) (#343, #363).
  • Forward mapoi/nav/command_rejected as an SSE command_rejected event and show an auto-dismissing toast in the frontend (#354).
  • Allow the selected POI's marker to be dragged on the map to update pose.x / pose.y in the working copy (saved on Save) (#239, #274).
  • Add a rotation handle on the tolerance sector tip to adjust pose.yaw by dragging (#275, #276).
  • Separate select from edit: a single click selects a POI, a double-click opens the edit form (#240, #272).
  • Render a yaw-agnostic POI tolerance (tolerance.yaw >= pi) as a filled disc and clean up the degree display (#267, #268, #271).
  • Highlight a POI/route on the map when picked from the Navigation dropdowns (#262, #278).
  • Add Undo/Redo to the POI editor (per-mutation snapshot stack capped at 50), with dirty-state derived from saved content (#300, #301).
  • GET /api/pois returns a config_version (sha256) and POST /api/pois rejects a stale write with 409; frontend surfaces a reload-confirmation dialog (#241, #245).
  • Add a floating button to toggle the header/panel UI and a Display section with a floating-overlay mode plus a UI-opacity slider (persisted in localStorage) (#323, #324, #325).
  • Add a floating Undo icon on narrow screens and centralize the route-editor reload guard at the loadRoutes() call sites (#332, #334).
  • Reorganize the REST URL hierarchy under /api/editor/ (editor) vs /api/nav/ (running robot) and unify separators on kebab-case; old paths return 404 (#340, #343).
  • Split map-viewer.js into map-icons.js + MapViewerSector and extract the custom-tag UI into a TagEditor class; internal refactor, no behavior change (#346).
  • Remove the map zoom +/- buttons and lock POI position-drag editing

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged mapoi_webui at Robotics Stack Exchange