RMF Web use issues (#617)

Posted by @Narayan-007:

Hi, I wanted to try out the RMF Web UI with the RMF Demos before trying to use it with my own simulation world. I checked the RMF Web Github page, and it says that the Quick docker is enough to launch the RMF Web and to use it. For context, I am currently using ROS2 Humble on Ubuntu version 22.04.5. However, when I launched the rmf demos using the following command:
ros2 launch rmf_demos_gz airport_terminal.launch.xml

And launch RMF Web UI using the following commands:
fyp-user@rric:~/rmf_ws$ sudo docker run
–network host -it --rm
-e RMF_SERVER_URL=http://localhost:8000
-e TRAJECTORY_SERVER_URL=ws://localhost:8006
Package rmf-web/demo-dashboard · GitHub
[sudo] password for fyp-user:

┌──────────────────────────────────────────┐
│ │
│ Serving! │
│ │
│ - Local: http://localhost:3000
│ - Network: http://192.168.1.15:3000
│ │
└──────────────────────────────────────────┘

fyp-user@rric:~/rmf_ws$ sudo docker run
–network host -it --rm
-e ROS_DOMAIN_ID=0
-e RMW_IMPLEMENTATION=rmw_fastrtps_cpp

[sudo] password for fyp-user:

I can only view this, I can’t view anything regarding the demos, meaning it does not work as intended. Why is this the case?:




Am I missing something out? Please advise, thank you.


Edited by @Narayan-007 at 2025-01-31T02:35:34Z

Posted by @aaronchongth:

Hey @Narayan-007! It looks like you missed out the server_uri launch parameter when launching your sim, please check out the instructions here again, GitHub - open-rmf/rmf_demos: Demonstrations of Open-RMF.

As mentioned in GitHub - open-rmf/rmf-web, we are currently supporting ROS 2 Jazzy, and therefore the quick start docker images were built with ROS 2 Jazzy. I would first advise to migrate to ROS 2 Jazzy to take advantage of all the new features, and to prevent any issues with versioning.

Other things you can try with your current setup,

  • use rmw_cyclonedds_cpp instead
  • make sure that the domain ID that you are launching your sim is indeed 0
  • check if there are any errors when launching the API server docker image, and does it mention receiving ROS 2 messages, maps, etc
  • inspect the browser with the dashboard to see if there are any logs or errors

From the screenshots it looks like the dashboard and API server are working as expected, just that the sim is unable to communicate with the API server.

Also, in the future, please put together multi-line logs using code blocks

like this

Posted by @Narayan-007:

Hi, thanks for the reply. I tried doing what you said, but when I did it, it still does not work.
This is the command I used and the error message I am getting:

fyp-user@rric:~/rmf_ws$ sudo docker run   --network host -it --rm   -e ROS_DOMAIN_ID=0   -e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp  ghcr.io/open-rmf/rmf-web/api-server:latest
1738570408.974090 [0]     python: Failed to find a free participant index for domain 0
[ERROR] [1738570408.974207631] [rmw_cyclonedds_cpp]: rmw_create_node: failed to create domain, error Error
/opt/ros/jazzy/lib/python3.12/site-packages/rclpy/node.py:187: RuntimeWarning: Failed to fini rosout publisher: rcl node implementation is invalid, at ./src/rcl/node.c:390
  self.__node = _rclpy.Node(
Traceback (most recent call last):
  File "/ws/.venv/lib/python3.12/site-packages/starlette/routing.py", line 734, in lifespan
    async with self.lifespan_context(app) as maybe_state:
  File "/usr/lib/python3.12/contextlib.py", line 210, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/ws/packages/api-server/api_server/app.py", line 92, in lifespan
    await stack.enter_async_context(ros.get_ros_node)
  File "/usr/lib/python3.12/contextlib.py", line 659, in enter_async_context
    result = await _enter(cm)
             ^^^^^^^^^^^^^^^^
  File "/ws/packages/api-server/api_server/fast_io/singleton_dep.py", line 30, in __aenter__
    self.instance = self.context.__enter__()
                    ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/contextlib.py", line 137, in __enter__
    return next(self.gen)
           ^^^^^^^^^^^^^^
  File "/ws/packages/api-server/api_server/ros.py", line 28, in get_ros_node
    node = rclpy.node.Node("rmf_api_server")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/ros/jazzy/lib/python3.12/site-packages/rclpy/node.py", line 187, in __init__
    self.__node = _rclpy.Node(
                  ^^^^^^^^^^^^
rclpy._rclpy_pybind11.RCLError: error creating node: error not set, at ./src/rcl/node.c:252

Application startup failed. Exiting.

Posted by @aaronchongth:

I am assuming this is after the sim is launched using ROS 2 Humble?
With the sim in Humble, and the docker image launching in ROS 2 Jazzy, it looks like there is a conflict between the versions of CycloneDDS.

There are a few options here,

  • build and use the outdated humble version of rmf-web from source, GitHub - open-rmf/rmf-web at humble, we have not maintained it for a while now, so are unsure if there could be issues
  • attempt to build and use main from source in ROS 2 Humble, unsure if this will work too
  • migrate to ROS 2 Jazzy

Posted by @Narayan-007:

So I would have to install the packages there then launch it?

Posted by @Narayan-007:

Now when I run this command, this happens:

fyp-user@rric:~/rmf_ws$ sudo docker run \
--network host -it --rm \
-e ROS_DOMAIN_ID=1 \
-e RMW_IMPLEMENTATION=rmw_cyclonedds_cpp \
ghcr.io/open-rmf/rmf-web/api-server:latest
[sudo] password for fyp-user: 
msg="loading states from database..." level="INFO" ts="2025-02-03T08:18:11.332+0000" src="app.py:259" funcName="_load_states"
msg="loaded 0 door states" level="INFO" ts="2025-02-03T08:18:11.333+0000" src="app.py:264" funcName="_load_states"
msg="loaded 0 lift states" level="INFO" ts="2025-02-03T08:18:11.334+0000" src="app.py:269" funcName="_load_states"
msg="loaded 0 dispenser states" level="INFO" ts="2025-02-03T08:18:11.335+0000" src="app.py:276" funcName="_load_states"
msg="loaded 0 ingestor states" level="INFO" ts="2025-02-03T08:18:11.336+0000" src="app.py:283" funcName="_load_states"
msg="starting scheduler" level="INFO" ts="2025-02-03T08:18:11.337+0000" src="app.py:118" funcName="lifespan"
msg="loaded 0 tasks" level="INFO" ts="2025-02-03T08:18:11.338+0000" src="app.py:136" funcName="lifespan"
msg="successfully started scheduler" level="INFO" ts="2025-02-03T08:18:11.338+0000" src="app.py:137" funcName="lifespan"
msg="started app" level="INFO" ts="2025-02-03T08:18:11.338+0000" src="app.py:139" funcName="lifespan"
msg="127.0.0.1:50294 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAuu5E HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:14.998+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50294 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAuu6H&sid=6NEt5eH-zfMINFs2AAAA HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:15.65+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50294 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAuu6o&sid=6NEt5eH-zfMINFs2AAAA HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:15.99+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50302 - \"POST /socket.io/?EIO=4&transport=polling&t=PJAuu6M&sid=6NEt5eH-zfMINFs2AAAA HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:15.117+0000" src="httptools_impl.py:481" funcName="send"
msg="[]" level="WARNING" ts="2025-02-03T08:18:18.152+0000" src="internal.py:31" funcName="process_msg" client="127.0.0.1:50258" user="None"
msg="Ignoring message, 'type' must include in msg field" level="WARNING" ts="2025-02-03T08:18:18.152+0000" src="internal.py:32" funcName="process_msg" client="127.0.0.1:50258" user="None"
msg="[]" level="WARNING" ts="2025-02-03T08:18:18.152+0000" src="internal.py:31" funcName="process_msg" client="127.0.0.1:50258" user="None"
msg="Ignoring message, 'type' must include in msg field" level="WARNING" ts="2025-02-03T08:18:18.152+0000" src="internal.py:32" funcName="process_msg" client="127.0.0.1:50258" user="None"
msg="[]" level="WARNING" ts="2025-02-03T08:18:18.648+0000" src="internal.py:31" funcName="process_msg" client="127.0.0.1:50266" user="None"
msg="Ignoring message, 'type' must include in msg field" level="WARNING" ts="2025-02-03T08:18:18.648+0000" src="internal.py:32" funcName="process_msg" client="127.0.0.1:50266" user="None"
msg="[]" level="WARNING" ts="2025-02-03T08:18:19.227+0000" src="internal.py:31" funcName="process_msg" client="127.0.0.1:50276" user="None"
msg="Ignoring message, 'type' must include in msg field" level="WARNING" ts="2025-02-03T08:18:19.228+0000" src="internal.py:32" funcName="process_msg" client="127.0.0.1:50276" user="None"
msg="[]" level="WARNING" ts="2025-02-03T08:18:19.228+0000" src="internal.py:31" funcName="process_msg" client="127.0.0.1:50276" user="None"
msg="Ignoring message, 'type' must include in msg field" level="WARNING" ts="2025-02-03T08:18:19.228+0000" src="internal.py:32" funcName="process_msg" client="127.0.0.1:50276" user="None"
msg="[]" level="WARNING" ts="2025-02-03T08:18:19.229+0000" src="internal.py:31" funcName="process_msg" client="127.0.0.1:50276" user="None"
msg="Ignoring message, 'type' must include in msg field" level="WARNING" ts="2025-02-03T08:18:19.230+0000" src="internal.py:32" funcName="process_msg" client="127.0.0.1:50276" user="None"
msg="[]" level="WARNING" ts="2025-02-03T08:18:19.230+0000" src="internal.py:31" funcName="process_msg" client="127.0.0.1:50276" user="None"
msg="Ignoring message, 'type' must include in msg field" level="WARNING" ts="2025-02-03T08:18:19.230+0000" src="internal.py:32" funcName="process_msg" client="127.0.0.1:50276" user="None"
msg="[]" level="WARNING" ts="2025-02-03T08:18:19.288+0000" src="internal.py:31" funcName="process_msg" client="127.0.0.1:50292" user="None"
msg="Ignoring message, 'type' must include in msg field" level="WARNING" ts="2025-02-03T08:18:19.288+0000" src="internal.py:32" funcName="process_msg" client="127.0.0.1:50292" user="None"
msg="[]" level="WARNING" ts="2025-02-03T08:18:19.288+0000" src="internal.py:31" funcName="process_msg" client="127.0.0.1:50292" user="None"
msg="Ignoring message, 'type' must include in msg field" level="WARNING" ts="2025-02-03T08:18:19.288+0000" src="internal.py:32" funcName="process_msg" client="127.0.0.1:50292" user="None"
msg="[]" level="WARNING" ts="2025-02-03T08:18:19.289+0000" src="internal.py:31" funcName="process_msg" client="127.0.0.1:50292" user="None"
msg="Ignoring message, 'type' must include in msg field" level="WARNING" ts="2025-02-03T08:18:19.289+0000" src="internal.py:32" funcName="process_msg" client="127.0.0.1:50292" user="None"
msg="127.0.0.1:50198 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:21.211+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50198 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:21.230+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50198 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:22.166+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50198 - \"GET /user HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.356+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50198 - \"GET /permissions HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.388+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50198 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAuwRB HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.593+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50198 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.771+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50230 - \"GET /building_map/previous_fire_alarm_trigger HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:18:24.789+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50214 - \"GET /favorite_tasks HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.790+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50204 - \"GET /alerts/unresponded_requests HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.794+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50234 - \"POST /socket.io/?EIO=4&transport=polling&t=PJAuwU9&sid=bI-zkyYoZS8ldY8HAAAC HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.813+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50250 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAuwU8&sid=bI-zkyYoZS8ldY8HAAAC HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.816+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50250 - \"POST /socket.io/?EIO=4&transport=polling&t=PJAuwVI&sid=bI-zkyYoZS8ldY8HAAAC HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.858+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50234 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAuwVG&sid=bI-zkyYoZS8ldY8HAAAC HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.860+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50234 - \"POST /socket.io/?EIO=4&transport=polling&t=PJAuwWj&sid=bI-zkyYoZS8ldY8HAAAC HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.946+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50250 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAuwWk&sid=bI-zkyYoZS8ldY8HAAAC HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:24.956+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50234 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:18:25.374+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50250 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:25.377+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50250 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:25.962+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50250 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:18:27.227+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50250 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:28.799+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50234 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:18:28.800+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50234 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:28.822+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50234 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:33.578+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50234 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:38.583+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50234 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:38.597+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50234 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:18:39.69+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48224 - \"GET /user HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:50.393+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48224 - \"GET /permissions HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:50.419+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48224 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAv0nm HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:50.650+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48224 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:50.774+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48238 - \"GET /alerts/unresponded_requests HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:50.808+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48252 - \"GET /building_map/previous_fire_alarm_trigger HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:18:50.809+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48248 - \"GET /favorite_tasks HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:50.810+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48224 - \"POST /socket.io/?EIO=4&transport=polling&t=PJAv0qk&sid=jzWRqh7eBWCmhYbAAAAE HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:50.858+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48278 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAv0qf&sid=jzWRqh7eBWCmhYbAAAAE HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:50.879+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48278 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAv0st&sid=jzWRqh7eBWCmhYbAAAAE HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:50.944+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48278 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAv0tR&sid=jzWRqh7eBWCmhYbAAAAE HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:50.989+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48278 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:18:51.12+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48278 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:18:53.539+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48224 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:53.552+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48278 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:54.263+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48278 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:18:56.595+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48278 - \"OPTIONS /tasks?limit=10&offset=0&order_by=-unix_millis_start_time HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:56.853+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:48224 - \"GET /tasks?limit=10&offset=0&order_by=-unix_millis_start_time HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:18:56.882+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:50030 - \"GET /tasks?limit=10&offset=0&order_by=-unix_millis_start_time HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:19:11.879+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:42942 - \"GET /tasks?limit=10&offset=0&order_by=-unix_millis_start_time HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:19:26.849+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:43180 - \"GET /tasks?limit=10&offset=0&order_by=-unix_millis_start_time HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:19:41.807+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60458 - \"GET /tasks?limit=10&offset=0&order_by=-unix_millis_start_time HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:19:56.807+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60458 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:19:59.558+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:19:59.575+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:19:59.589+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:20:00.724+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /user HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:02.396+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /permissions HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:02.501+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAvINy HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:02.713+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:02.770+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60458 - \"GET /alerts/unresponded_requests HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:02.781+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37392 - \"GET /building_map/previous_fire_alarm_trigger HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:20:02.792+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37388 - \"GET /favorite_tasks HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:02.793+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37388 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAvIQZ&sid=_wYsd_I4MIUJqDpMAAAG HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:02.866+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37392 - \"POST /socket.io/?EIO=4&transport=polling&t=PJAvIQc&sid=_wYsd_I4MIUJqDpMAAAG HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:02.873+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37392 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAvIRW&sid=_wYsd_I4MIUJqDpMAAAG HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:02.922+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37388 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAvISm&sid=_wYsd_I4MIUJqDpMAAAG HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:03.0+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37392 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:20:03.3+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37392 - \"GET /user HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:03.704+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37392 - \"GET /permissions HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:03.727+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37392 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAvIgC HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:03.910+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37388 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:03.932+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60458 - \"GET /alerts/unresponded_requests HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:03.934+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37412 - \"GET /building_map/previous_fire_alarm_trigger HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:20:03.936+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /favorite_tasks HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:03.937+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"POST /socket.io/?EIO=4&transport=polling&t=PJAvIhU.0&sid=7iTgtAm3mBCKBMwpAAAI HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:03.951+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37412 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAvIhU&sid=7iTgtAm3mBCKBMwpAAAI HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:03.952+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37412 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:20:03.966+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37412 - \"POST /socket.io/?EIO=4&transport=polling&t=PJAvIiU&sid=7iTgtAm3mBCKBMwpAAAI HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:04.26+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAvIiT&sid=7iTgtAm3mBCKBMwpAAAI HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:04.29+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"POST /socket.io/?EIO=4&transport=polling&t=PJAvIjv&sid=7iTgtAm3mBCKBMwpAAAI HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:04.93+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37412 - \"GET /socket.io/?EIO=4&transport=polling&t=PJAvIjz&sid=7iTgtAm3mBCKBMwpAAAI HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:04.109+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:37412 - \"GET /building_map HTTP/1.1\" 404" level="INFO" ts="2025-02-03T08:20:07.378+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:07.381+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:07.941+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:12.828+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:17.147+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:17.821+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:22.824+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:27.144+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:27.821+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:32.820+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:37.149+0000" src="httptools_impl.py:481" funcName="send"
msg="127.0.0.1:60470 - \"GET /fleets HTTP/1.1\" 200" level="INFO" ts="2025-02-03T08:20:37.823+0000" src="httptools_impl.py:481" funcName="send"
^Cmsg="Tortoise-ORM shutdown" level="INFO" ts="2025-02-03T08:20:40.955+0000" src="__init__.py:552" funcName="close_connections"
msg="shutdown app" level="INFO" ts="2025-02-03T08:20:40.955+0000" src="app.py:67" funcName="shutdown"
msg="Client websocket disconnected" level="WARNING" ts="2025-02-03T08:20:40.960+0000" src="internal.py:141" funcName="rmf_gateway" client="127.0.0.1:50292" user="None"
msg="Client websocket disconnected" level="WARNING" ts="2025-02-03T08:20:40.960+0000" src="internal.py:141" funcName="rmf_gateway" client="127.0.0.1:50266" user="None"
msg="Client websocket disconnected" level="WARNING" ts="2025-02-03T08:20:40.960+0000" src="internal.py:141" funcName="rmf_gateway" client="127.0.0.1:50258" user="None"
msg="Client websocket disconnected" level="WARNING" ts="2025-02-03T08:20:40.961+0000" src="internal.py:141" funcName="rmf_gateway" client="127.0.0.1:50276" user="None"
msg="shutdown app" level="INFO" ts="2025-02-03T08:20:41.59+0000" src="app.py:67" funcName="shutdown"
fyp-user@rric:~/rmf_ws$ 

And now I can only see the robot data that too partially:


Edited by @Narayan-007 at 2025-02-03T07:23:17Z

Posted by @aaronchongth:

The websockets are working fine, which is a good sign, however the components that handle doors, lifts, maps and task dispatches will require ROS 2, and with the errors you listed above, those features will not work

Posted by @Narayan-007:

So in other words, unless I use Jazzy, and if the other steps you stated do not work, RMF Web cannot be utilised properly while using ROS2 Humble?

Posted by @aaronchongth:

Another thought occurred to me, just in case, ensure that you are launching your sim with rmw_cyclonedds_cpp as well

So in other words, unless I use Jazzy, and if the other steps you stated do not work, RMF Web cannot be utilised properly while using ROS2 Humble?

Yes, please try the above options mentioned, in terms of building and launching rmf-web from source either the humble branch or main branch. And if those steps do not work, you should consider using Jazzy for your sim as well

Posted by @Narayan-007:

How do I ensure that I am launching the sim with rmw_cyclonedds_cpp ? Because I only run the ros2 launch command, and the server_uri argument, nothing else.

Posted by @aaronchongth:

You set it as an environment variable, by running,

RMW_IMPLEMENTATION=rmw_cyclonedds_cpp ros2 launch .........

Posted by @Narayan-007:

Oh yeah, sorry sorry, I thought you meant something else. Will update you on the progress, thank you.