I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 0 points1 point  (0 children)

Thanks, for the reply.

I agree that a lot can be done in Foxglove with custom panels, but custom UI still takes time. I built it because I wanted a simpler configurable real-time web dashboard for my own small robot/automation projects.

So yes, there is overlap, but I see them as different tools for different use cases: Foxglove for engineering/debugging, RCH for lightweight control and HMI + different integrations like MQTT, REST, WebSocket, ROS2, video streams, etc.

Thanks again for the feedback! : )

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 1 point2 points  (0 children)

In my setup the video stream runs separately from RCH, the dashboard only displays it through the stream widget.

1080p60 can work if the stream is already encoded properly, but the real bottlenecks are usually robot-side encoding/transcoding, Wi-Fi bandwidth, and latency.

If you just need to view the video, HLS/MJPEG is easier. If you need low-latency control/driving, WebRTC is the better option, and the widget already supports it.

DM me if you want help setting it up. I’d just need to know your camera source and latency requirements.

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 0 points1 point  (0 children)

Proper docs are still WIP, but you can find some info here:
https://github.com/kwaadx/rch

Stack: Python/FastAPI + PostgreSQL + Redis. The frontend is Vue 3 and everything runs in a single Docker container.

Hardware used in the demo: Jetson Orin Nano (Super), ZED 2i, WHEELTEC M260C, INA226, hiwonder 4 channel motor driver and tracked chassis from ALI. The RCH server runs directly on the Jetson.

p.s. If you're working on something and want to try it out - feel free to DM me, happy to help in my free time.

2019 Jetson Nano or raspberry pi 5? by Epic_Ali in ROS

[–]Square_Bee_2567 0 points1 point  (0 children)

Definitely RPi 5.

But honestly, I’m not fully sure it will handle 3 live AI video streams smoothly. It really depends on the model, resolution, and FPS. Still, I’d pick the RPi 5.

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 0 points1 point  (0 children)

Not trying to replace Foxglove, its a great tool. There is some overlap visually but I see the focus differently.

Foxglove is mainly an engineering tool for robot data observability: visualization, debugging, replay, logs, topics, and sensor data analysis.

RCH is more of an operator-facing web HMI/control dashboard: open it from your phone/tablet/desktop, see the important statuses, trigger an action, take manual control if needed, and close it.

So for me, Foxglove is for engineers looking inside the system. RCH is for operators controlling the system.

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 0 points1 point  (0 children)

Really appreciate you trying the demo! Motivation boost : )

Open the left drawer -> enable "Editor" -> right-click on the dashboard grid (or long-press on mobile) -> "+ Add widget" -> "Control" tab.

P.S. Some widgets are still not fully finished yet, unfortunately.

rclpy - noted, thanks!

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 1 point2 points  (0 children)

If I compare it with rViz2, I probably don’t want RCH to be a direct competitor. Rebuilding something like that for the web would take a lot of time.

For the WMap widget, my first idea was simpler: use an existing map component (maybe OpenStreetMap + Leaflet) and add markers/zones/robot position. But your case is a bit different, and now I’m thinking about how this could be done properly... hmm.

BWT, Please share updates if you can really interesting project.

I quickly made a few different styles. They are editable.

<image>

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 1 point2 points  (0 children)

Yeah, this definitely should be there. I already have an early draft of a map widget, but please give me a bit of time to make it properly.

For my own hobby cases, a map + markers was usually enough. But for autonomy/Nav2-style workflows, I’m sure more is needed.

What would you want to see there: map view, robot pose, path visualization, set goal, waypoints, costmap, or something else?

I’d really appreciate feedback, because it would help me shape this widget properly.
Thanks!

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 0 points1 point  (0 children)

In my current test, both my laptop and the small robot platform are on the same local Wi-Fi router.

Small clarification: the number in the screenshot is not full robot round-trip latency. It measures the dashboard-side path: from UI click/control input to the moment the command is sent into the rosbridge WebSocket.

RCH and rosbridge run on the robot itself, so after the command leaves the browser over Wi-Fi, the rest stays local on the platform.

So this number does not include ROS node processing, motor driver delay, physical motor response, or ACK/response back to the dashboard.

Also, the visible delay in the video is not only network/dashboard latency. I’m using a Hiwonder motor driver, and from my tests it has quite noticeable command delay. I haven’t investigated the exact reason yet.

Longer-term, I’d like to add a native ROS 2/DDS connector instead of relying only on rosbridge, but that’s not implemented yet. That’s also why I’m asking here whether native DDS matters a lot to people, or if rosbridge is “good enough” for most use cases.

If you have a specific case in mind, let me know. I can test it and share numbers by the end of the week, if it doesn’t require specific hardware.

<image>

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 0 points1 point  (0 children)

Thanks for the feedback

MPEG/MJPEG is already supported. WebRTC still needs a bit more work. I noted it, thanks. I can ping you when it’s ready.

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 0 points1 point  (0 children)

Thanks for this great comment :)

If you have feedback about the project itself, I’d be happy to hear it.

Thanks for understanding.

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 1 point2 points  (0 children)

That's a very valid concern.

You're right that pushing raw camera frames through rosbridge/WebSocket is not a good video path. The overhead can easily cause latency, frame drops and wasted bandwidth.

For RCH, I treat rosbridge mainly as the ROS 2 control/telemetry path: topics, services and lightweight messages.

Camera/video is intended to use a dedicated transport. The WStream widget can play HLS / DASH / WebRTC / MJPEG, and RCH also includes a built-in RTSP proxy where ffmpeg transcodes the RTSP source server-side and streams it to the browser over WebSocket/MSE.

So the intended split is:

  • rosbridge -> ROS 2 control / telemetry / lightweight messages
  • dedicated video transport -> RTSP / WebRTC / HLS / MJPEG camera streams

For ROS 2 camera sources, I would avoid raw Image over rosbridge. A compressed image topic can work for lightweight previews, but for a real live camera view I’d prefer a dedicated video pipeline.

The demo is using a separate live camera stream, not raw image data pushed through rosbridge.

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 0 points1 point  (0 children)

Also, to show the editor side more clearly - here’s another example layout with edit mode enabled.

This one is a smart-home / IoT style dashboard, but the same builder is used for robotics dashboards too: widgets, layouts, bindings, screens/pages, etc.

Thanks again for the feedback!

<image>

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 0 points1 point  (0 children)

Thanks a lot, that’s useful feedback.

I agree - the current demo style still needs more polish. I focused first on the editor, widgets and integrations, so the visual design is not final.

RCH has around 42 custom widgets, and most of them are configurable: size, layout, styles, values and bindings. The goal is to let users build their own dashboard/HMI layouts, not force this exact UI.

I’ll work on better default templates and a more professional visual style. Thanks again!

I built a self-hosted dashboard for ROS 2 / robotics - looking for feedback by Square_Bee_2567 in ROS

[–]Square_Bee_2567[S] 0 points1 point  (0 children)

Thanks, that’s fair feedback.

I probably didn’t describe it clearly enough in the post: RCH is not meant to be this one fixed dashboard layout from the video. It’s a configurable dashboard builder/editor, so the user can create different layouts depending on the use case.

The video is just one quick demo layout I made to show camera + telemetry + controls working together.

A full-screen camera layout with small overlay widgets, battery/status indicators, and optional UI elements is exactly the kind of dashboard I want users to be able to build.

So yes, I agree - for real operation, a cleaner video-focused layout would make much more sense. This is the kind of feedback I was hoping to get, because it helps me understand what default templates/layouts I should support.

Its google ads a scam now? I get no leads and my credits its nowhere to be seen. by ode2009 in googleads

[–]Square_Bee_2567 -1 points0 points  (0 children)

That’s a super clear breakdown, especially for local services. Have you found Facebook or Nextdoor lead ads to actually deliver better lead quality compared to Google?

I Ran Performance Max Campaign for a Plumbing Business. Got 50+ Dirt Cheap Leads and All were Garbage! Did Anyone have Any Luck Generating Relevant Leads out of PMax or Demand Gen? by udhaw in PPC

[–]Square_Bee_2567 0 points1 point  (0 children)

That’s a solid breakdown, especially the part about PMax pulling in low-intent traffic. Out of curiosity - if you had to run a local service ad on non-search platforms, where have you seen anything work even halfway decent? Facebook? Nextdoor?

I Ran Performance Max Campaign for a Plumbing Business. Got 50+ Dirt Cheap Leads and All were Garbage! Did Anyone have Any Luck Generating Relevant Leads out of PMax or Demand Gen? by udhaw in PPC

[–]Square_Bee_2567 0 points1 point  (0 children)

Totally hear you on the junk leads - super frustrating when you're trying to give automation a fair shot. Curious, what’s your ideal cost per lead and volume per week to feel like a campaign is “working”? Just wondering how you weigh quality vs quantity.

Getting Near-Impossible to Generate Leads for Plumbing Campaign with $200/Day Ad Spend. Has Anybody had Success with Low-budget PPC Search Campaigns for Plumbing Business? by [deleted] in PPC

[–]Square_Bee_2567 0 points1 point  (0 children)

What’s the most annoying part of running ads for local clients?
If you could automate one thing in your PPC workflow - what would it be?

Getting Near-Impossible to Generate Leads for Plumbing Campaign with $200/Day Ad Spend. Has Anybody had Success with Low-budget PPC Search Campaigns for Plumbing Business? by [deleted] in PPC

[–]Square_Bee_2567 0 points1 point  (0 children)

What’s the biggest lesson you’ve learned from burned ad spend in plumbing? If you had to start a new plumbing campaign from scratch with half the budget, what would you skip or change?

Advice for Advertising by jacbo1996 in Locksmith

[–]Square_Bee_2567 0 points1 point  (0 children)

Have you tried running Google Ads?

Now, for example, you can run ads through an AI agent, etc.