{
  "id": "rai-src-rai-semap-rai-semap-ros2-node-py",
  "name": "RAI: ROS 2 semantic map collection node",
  "summary": "Store spatial object annotations from configured mapping and detection inputs for robot semantic memory.",
  "framework": "rai",
  "kind": "official_example",
  "source_registry": "official-robot-workflows-v1",
  "capabilities": [
    "robot-workflow",
    "semantic-mapping"
  ],
  "robot_types": [
    "source-defined"
  ],
  "robot_scope": "Exact upstream ROS 2 interfaces, configuration, embodiment data and environment determine compatibility. No supported-robot list or runtime success is inferred.",
  "source": {
    "repository": "https://github.com/RobotecAI/rai",
    "commit": "b018729833742c6f71e1e9f332ee2b435676fb4f",
    "tag": "main",
    "path": "src/rai_semap/rai_semap/ros2/node.py",
    "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_semap/rai_semap/ros2/node.py",
    "raw_url": "https://raw.githubusercontent.com/RobotecAI/rai/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_semap/rai_semap/ros2/node.py",
    "sha256": "dcf96f9346e1fc26f81c5f773aae0587cb4528799681c2e1df2bdd67af7c4cc5",
    "bytes": 35686,
    "authors": [
      "Julia Jia (per-file notice/package metadata)"
    ]
  },
  "license": {
    "spdx": "Apache-2.0",
    "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/LICENSE",
    "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
    "scope": "Selected first-party source and per-file notices; excludes models, dependencies, datasets, simulator assets and external service terms.",
    "bytes": 11357
  },
  "access": {
    "mode": "source_reference",
    "hub_prepare": false,
    "instructions": "Fetch the pinned repository, verify this source checksum, and use upstream installation and invocation. This record does not install or execute code.",
    "setup_url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/docs/setup/install.md",
    "setup_evidence": [
      {
        "path": "LICENSE",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/LICENSE",
        "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4",
        "bytes": 11357,
        "purpose": "evidence"
      },
      {
        "path": ".licenserc.json",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/.licenserc.json",
        "sha256": "582d8b1c7355a121692073d57a147481c9f36675eb43fcc2dc7a3c08dc0396e6",
        "bytes": 261,
        "purpose": "evidence"
      },
      {
        "path": "README.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/README.md",
        "sha256": "11d112a35a74030658deebbbc9b198f88c8ebacc8119e46892196feb41a4d7f2",
        "bytes": 6173,
        "purpose": "evidence"
      },
      {
        "path": "pyproject.toml",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/pyproject.toml",
        "sha256": "75d06b23be54413170513f9f67b406a4783ea13fd999725fb40707d443a941a4",
        "bytes": 2059,
        "purpose": "evidence"
      },
      {
        "path": "config.toml",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/config.toml",
        "sha256": "2e143ea4ac089ca7ffa47d1b96d6668a1c09135fcad70bced4be43d2e928bd1c",
        "bytes": 1226,
        "purpose": "evidence"
      },
      {
        "path": "docs/setup/install.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/docs/setup/install.md",
        "sha256": "2e7fee7047c1360317e2e994a442b6405db9047ecfafef521dca0487cb0c0e1a",
        "bytes": 6473,
        "purpose": "evidence"
      },
      {
        "path": "docs/setup/vendors.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/docs/setup/vendors.md",
        "sha256": "efb9dea2ddb6ea0b85bdf8147cbc91aa262020ef3e7b24990090cef256aac94e",
        "bytes": 5039,
        "purpose": "evidence"
      },
      {
        "path": "docs/demos/agriculture.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/docs/demos/agriculture.md",
        "sha256": "0ebd3e0ad617b621fb84fd09b440e7fa80d18b16523639899b8f948123ba6f66",
        "bytes": 2432,
        "purpose": "evidence"
      },
      {
        "path": "docs/demos/debugging_assistant.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/docs/demos/debugging_assistant.md",
        "sha256": "93042957be43ad52266446945dbf07bc4118321593d4e2805b0290dfc9036bcf",
        "bytes": 1995,
        "purpose": "evidence"
      },
      {
        "path": "docs/demos/manipulation.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/docs/demos/manipulation.md",
        "sha256": "97c95690772056dcc92211d70808e0d8a0f5e5d5464e509cbdc4fef116e3558a",
        "bytes": 5933,
        "purpose": "evidence"
      },
      {
        "path": "docs/demos/rosbot_xl.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/docs/demos/rosbot_xl.md",
        "sha256": "c6ca69e681cca3e3a4ce75ca83b439a70fcafbba2e6643c8671eb512a690221d",
        "bytes": 3853,
        "purpose": "evidence"
      },
      {
        "path": "docs/tutorials/benchmarking.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/docs/tutorials/benchmarking.md",
        "sha256": "43019ba5b3d0ec168a5497dcfbfe1a523bdd5378094ebb879ba7fc36b4fdf617",
        "bytes": 13188,
        "purpose": "evidence"
      },
      {
        "path": "docs/tutorials/create_robots_whoami.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/docs/tutorials/create_robots_whoami.md",
        "sha256": "a9432c5b61a885ba123826e87d523d5e1c97e7593e3c476d753a5d6864ce6c19",
        "bytes": 3035,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_core/pyproject.toml",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_core/pyproject.toml",
        "sha256": "50c321b2466485c2161bf1ad771e9883ab35875bbca864ae9d82c6af103a93f5",
        "bytes": 1504,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_bench/pyproject.toml",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_bench/pyproject.toml",
        "sha256": "82778946361368e819fd87c4e10174d04a327a0e0b25bc33a8aef6fce6e7cf16",
        "bytes": 597,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_bench/rai_bench/docs/tool_calling_agent_benchmark.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_bench/rai_bench/docs/tool_calling_agent_benchmark.md",
        "sha256": "c188e77568217637866acb471ba0a9ec0cc93bfbb2228c4e114adda5d6b73fa9",
        "bytes": 989,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_extensions/rai_nomad/LICENSE",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_extensions/rai_nomad/LICENSE",
        "sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
        "bytes": 11358,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_extensions/rai_nomad/README.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_extensions/rai_nomad/README.md",
        "sha256": "fdfd696b553eaac8a66e310a4e3dee41aa239b75d1e84257051317507be83e91",
        "bytes": 1543,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_extensions/rai_nomad/setup.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_extensions/rai_nomad/setup.py",
        "sha256": "d238f2d66cd9cdb9da1f5910bed75a6040d38a180db46092105f72d73f3e5f95",
        "bytes": 1337,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_extensions/rai_nomad/package.xml",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_extensions/rai_nomad/package.xml",
        "sha256": "d576a7b3f86969bd1b0a853d0d29bd82ea293ea2b039dc284e872d4253146ecc",
        "bytes": 736,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_extensions/rai_perception/README.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_extensions/rai_perception/README.md",
        "sha256": "972fecfcdd9f4e9fb8d40037559b649df1ca49ec839af3069a1184968dd45bbe",
        "bytes": 15978,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_extensions/rai_perception/pyproject.toml",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_extensions/rai_perception/pyproject.toml",
        "sha256": "43f584cd830d75df87a38a562a489b330c5123b1781ba5a9a026409f96718e21",
        "bytes": 939,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_extensions/rai_perception/rai_perception/NOTICE",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_extensions/rai_perception/rai_perception/NOTICE",
        "sha256": "cdd1b1f53733909991a963a43f855907f3c213e692f6e683de3bee2d6d73a1ab",
        "bytes": 334,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_finetune/README.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_finetune/README.md",
        "sha256": "eac71b0ed0b51be29f9a4b0d3b4c36762a66a7e398b7c91fb0c34f18a4d8b9d5",
        "bytes": 8358,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_finetune/pyproject.toml",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_finetune/pyproject.toml",
        "sha256": "c27c7d2434451030640ab4ec6b0dbfd51ef9106c42090714240a17d66f8b2678",
        "bytes": 1973,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_s2s/README.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_s2s/README.md",
        "sha256": "a9f5a9ac0c369b57174f46278bccc2b6ec3a9d175d061688e0893cdd6a604e3a",
        "bytes": 6555,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_s2s/pyproject.toml",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_s2s/pyproject.toml",
        "sha256": "060b33c80d4664fd4d5227388cc4435da93c867187c70c013178dba024d9c1d1",
        "bytes": 1971,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_semap/README.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_semap/README.md",
        "sha256": "fecd1426b7a4e072be874f7d9cd6cd9c034a80b6c440a8c2a88d0dfab02202fd",
        "bytes": 5007,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_semap/pyproject.toml",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_semap/pyproject.toml",
        "sha256": "dd45c5984e6e6cf80f0241701d02ead6299c51c7d4324becf0565eca7dab0ca7",
        "bytes": 763,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_whoami/README.md",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_whoami/README.md",
        "sha256": "1c4a9263e4eadf8321d890eefaee483bb7b590460e18e231259caac296a7b505",
        "bytes": 5322,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_whoami/pyproject.toml",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_whoami/pyproject.toml",
        "sha256": "aab825b051b81e8641a49e1e51fee514eeed9c6611ec388880f13ecf8443585b",
        "bytes": 855,
        "purpose": "evidence"
      },
      {
        "path": "src/rai_bench/rai_bench/examples/benchmarking_models.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_bench/rai_bench/examples/benchmarking_models.py",
        "sha256": "b9f7b389ec45ec6854d7d585c7658e4d0da463f9e034433ae1e54a3ae61d9c36",
        "bytes": 1891,
        "purpose": "entrypoint static inspection"
      },
      {
        "path": "src/rai_extensions/rai_perception/rai_perception/scripts/run_perception_agents.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_extensions/rai_perception/rai_perception/scripts/run_perception_agents.py",
        "sha256": "944ee8f6ff89160d55a30db540e8a7715f091d5ff92d4ff47b8742f108262cdd",
        "bytes": 1212,
        "purpose": "entrypoint static inspection"
      },
      {
        "path": "src/rai_semap/rai_semap/scripts/validate_semap.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_semap/rai_semap/scripts/validate_semap.py",
        "sha256": "662a9b4b33b949e1e1b3750f46e56c4eb162734bb6a1165e6ac0cb0c5b3e6237",
        "bytes": 5233,
        "purpose": "entrypoint static inspection"
      },
      {
        "path": "src/rai_whoami/rai_whoami/initialize_docs_directory.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_whoami/rai_whoami/initialize_docs_directory.py",
        "sha256": "0859f9494c096613b703e34dfbe86a20424276209220bad78414eab3e86d2afd",
        "bytes": 1422,
        "purpose": "entrypoint static inspection"
      },
      {
        "path": "examples/manipulation_common.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/examples/manipulation_common.py",
        "sha256": "22ff015b846cec16dacce61188ab9d2dc9bedfad49d2ccaa4ebcd13723c85c4b",
        "bytes": 6654,
        "purpose": "supporting static dependency/license inspection; not a candidate"
      },
      {
        "path": "src/rai_extensions/rai_perception/rai_perception/services/weights.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_extensions/rai_perception/rai_perception/services/weights.py",
        "sha256": "7d1854e53bf9853a7951bf1e1dd0ab34add5a2fb6648c256569e170b4be79567",
        "bytes": 5282,
        "purpose": "supporting static dependency/license inspection; not a candidate"
      },
      {
        "path": "src/rai_extensions/rai_perception/rai_perception/services/base_vision_service.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_extensions/rai_perception/rai_perception/services/base_vision_service.py",
        "sha256": "a49b3fcaf01b76a023c560752b43c2663e7e90428b9b2f34a8b9e7b7cbd95f9a",
        "bytes": 5833,
        "purpose": "supporting static dependency/license inspection; not a candidate"
      },
      {
        "path": "src/rai_finetune/rai_finetune/data/extractors/langfuse_data.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_finetune/rai_finetune/data/extractors/langfuse_data.py",
        "sha256": "18fc8a5fff9e965d1019fc36061be0e175331f230c7b18e6ec36002bdaa3b2d9",
        "bytes": 9366,
        "purpose": "supporting static dependency/license inspection; not a candidate"
      },
      {
        "path": "src/rai_finetune/rai_finetune/data/formatters/tool_calling.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_finetune/rai_finetune/data/formatters/tool_calling.py",
        "sha256": "9bd2486eef5e0123fc90845919bf6100d7bc5b3171f861f78436142c4b621b64",
        "bytes": 6305,
        "purpose": "supporting static dependency/license inspection; not a candidate"
      },
      {
        "path": "src/rai_s2s/rai_s2s/asr/models/local_whisper.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_s2s/rai_s2s/asr/models/local_whisper.py",
        "sha256": "5642c6499d3d3b7454d01c402448dad61b14c85021bd61b26bc7d57cbd12d3b1",
        "bytes": 5416,
        "purpose": "supporting static dependency/license inspection; not a candidate"
      },
      {
        "path": "src/rai_s2s/rai_s2s/tts/models/kokoro_tts.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_s2s/rai_s2s/tts/models/kokoro_tts.py",
        "sha256": "fb75cc97c07a32f0fb9a927e5dc9a90ad3c9bb0ba28bd78dea3e5952c3da721f",
        "bytes": 10141,
        "purpose": "supporting static dependency/license inspection; not a candidate"
      },
      {
        "path": "src/rai_whoami/rai_whoami/agents/ros2/vector_store_retrieval_agent.py",
        "url": "https://github.com/RobotecAI/rai/blob/b018729833742c6f71e1e9f332ee2b435676fb4f/src/rai_whoami/rai_whoami/agents/ros2/vector_store_retrieval_agent.py",
        "sha256": "c3b084ec8029de31fd7bc2b3e6c9722e25978295922e2c2521415f93f755000b",
        "bytes": 2765,
        "purpose": "supporting static dependency/license inspection; not a candidate"
      }
    ]
  },
  "requirements": {
    "python": "Root/core/whoami/perception/semap/s2s use >=3.10,<3.13; standalone finetune uses >=3.10,<3.12. Match sourced ROS distribution Python.",
    "packages": [
      "Pinned RAI checkout",
      "Matching ROS 2 and rai_interfaces",
      "Per-workflow packages, local model or hosted-provider dependencies from pinned setup"
    ],
    "display": "Official setup documents ROS 2 Humble/Jazzy, rai_interfaces and feature-specific environment. Nothing installed or runtime verified.",
    "execution_domain": "computation-or-hardware",
    "source_imports": [
      "cv_bridge",
      "geometry_msgs.msg",
      "logging",
      "nav_msgs.msg",
      "pathlib",
      "rai.communication.ros2",
      "rai_interfaces.msg",
      "rai_perception.components.perception_utils",
      "rai_semap.core.backend.sqlite_backend",
      "rai_semap.core.semantic_map_memory",
      "rai_semap.utils.ros2_log",
      "rcl_interfaces.msg",
      "rclpy",
      "rclpy.qos",
      "sensor_msgs.msg",
      "tf2_geometry_msgs",
      "typing",
      "vision_msgs.msg",
      "yaml"
    ],
    "notes": "Upstream per-workflow profile declarations only; provider availability, dependency resolution and runtime/robot compatibility are unverified.",
    "declared_requirements": {
      "semap": {
        "gpu": "No direct GPU declaration for selected mapping/collection wrappers. Separate perception producer hardware/model requirements apply.",
        "external_models": "External map, camera/depth, detection and TF inputs; persistent semantic database; Nav2 server for navigation collector.",
        "api": "No hosted LLM API directly required by these selected wrappers.",
        "environment": "Experimental ROS 2 module. Exact topics/configuration and coordinate frames must match the selected robot/simulator. Collector sends navigation goals.",
        "evidence_paths": [
          "src/rai_semap/README.md",
          "src/rai_semap/pyproject.toml"
        ]
      }
    }
  },
  "invocation": {
    "entrypoint": "python -m rai_semap.ros2.node",
    "notes": "Source/setup invocation shape only; not executed or runtime verified. Source references only; no Hub adapter, compatibility promise, provider access grant or runtime result."
  },
  "popularity": {
    "metric": "github_stars",
    "repository_stars": 602,
    "checked_at": "2026-10-18",
    "meaning": "Dated repository interest, not robot-skill usage, compatibility or runtime success."
  },
  "evidence": {
    "level": "source_reviewed",
    "runtime_verification": "not_run",
    "checked_at": "2026-10-18",
    "inspection": "Verified exact source, applicable license and author/setup document bytes at a full Git commit; parsed the Python AST and reviewed this guarded operational entrypoint and its explicit license notices. No upstream code, installation, robot command, dataset, mesh or checkpoint was executed or loaded.",
    "entrypoint_kind": "python_main",
    "inspection_method": "automated_static"
  },
  "artifact": {
    "kind": "workflow",
    "format": "python",
    "workflow_role": "semantic-mapping"
  }
}
