Robot Setup Overview
This page is the entry point for preparing an HB2 robot for the tablet app. It covers what the robot already runs, what the camera and agent setup adds, the network plan, the order to follow the two install guides in, and the checks that decide a robot is ready.
What this setup adds
Section titled “What this setup adds”A production HB2 robot already runs the control path: ROS Noetic, rosbridge on
WebSocket port 9090, and the hb2_api_bridge package that publishes the
versioned HB2 topics and services. That side is owned by the robot’s own
provisioning and is not touched here.
This setup adds the two things the tablet needs beyond control:
- The camera streams. MediaMTX serves the USB camera as
/staticand the PTZ camera as/ptzon RTSP port8554. See Camera Streams with MediaMTX. - The identity and health services.
hausbots-robot-agentanswers on HTTP port8080with the robot’s identity and a read-only health snapshot, andhausbots-robot-healthis the ROS adapter that feeds it. See Robot Agent Services.
Neither addition touches the control path. Camera traffic stays on 8554,
identity and health stay on 8080, and commands and telemetry stay on 9090.
How the pieces fit
Section titled “How the pieces fit”graph LR
Tablet[Tablet app] -->|commands, telemetry :9090| Rosbridge[rosbridge]
Tablet -->|identity, health :8080| Agent[hausbots-robot-agent]
Tablet -->|RTSP :8554| MediaMTX[MediaMTX]
Rosbridge -->|/hb2/app/status| Adapter[hausbots-robot-health]
Adapter -->|health.json| Agent
MediaMTX -->|/static| Camera[USB camera]
MediaMTX -->|/ptz| PTZ[PTZ camera]
In normal operation the tablet is the only client of the robot; the development
laptop is on the switch only for checks. The tablet opens the rosbridge
WebSocket for commands and telemetry, asks the agent for identity and health,
and plays video straight from MediaMTX. The health adapter is the one component
that reads ROS on the agent’s behalf: it subscribes to /hb2/app/status, writes
the snapshot the agent serves, and never publishes an actuator command.
Before you start
Section titled “Before you start”Run these checks on the robot, as its Linux user — normally robot — before
installing anything. In a fresh shell, source ROS first so rospack and
rosmsg are on PATH:
source /opt/ros/noetic/setup.bash # ROS tools on PATHuname -m # expect: aarch64rospack find hb2_api_bridge # expect: a pathrosmsg show hb2_api_bridge/TabletStatus # expect: fieldsss -ltn | grep 9090 # expect: a listening socketid # expect: "video" in the group listuname -m must print aarch64, because both guides install arm64 builds.
rospack and rosmsg must locate the bridge and its message — the agent
installer refuses to run when either is missing — and ss must show rosbridge
listening on 9090. id must list video, or nothing on the robot can open
the USB camera.
If rospack or rosmsg cannot find the bridge, stop and contact HausBots
before installing anything. The robot is missing the bridge package this setup
is paired with, and the camera or agent installs will not fix that.
Network plan
Section titled “Network plan”Use an isolated switch with static addresses and no DHCP, gateway, or DNS. Each device gets its own address, and nothing is negotiated:
| Device | Address |
|---|---|
| Tablet | 10.0.0.20/24 |
| Robot | 10.0.0.23/24 |
| Development laptop | 10.0.0.10/24 |
Never reuse an address, and never run the simulator on a robot’s address. The
robot’s guides assume 10.0.0.23; substitute the real address consistently if
the deployment uses another one.
The setup opens four ports on the robot:
| Port | Protocol | Service |
|---|---|---|
8080 |
TCP | Robot agent (identity/health) |
8554 |
TCP | MediaMTX RTSP |
9090 |
TCP | rosbridge WebSocket |
8000–8001 |
UDP | RTSP media transport |
Allow these on the robot’s firewall.
Install order
Section titled “Install order”Work through the guides in this order. Each one starts with its own preflight and ends with its own acceptance checklist:
- Camera Streams with MediaMTX — install and verify both RTSP feeds.
- Robot Agent Services — install and verify identity and health.
- Downloads — bundles and templates used by both guides.
Final acceptance checklist
Section titled “Final acceptance checklist”Run these once both guides are complete — the systemctl checks on the robot,
the rest from another machine on the switch:
| Check | Expect |
|---|---|
systemctl is-active mediamtx |
active |
systemctl is-active hausbots-robot-agent |
active |
systemctl is-active hausbots-robot-health |
active |
curl http://10.0.0.23:8080/api/v1/identity |
Valid identity JSON |
curl http://10.0.0.23:8080/api/v1/health |
"status": "ready" |
curl http://10.0.0.23:8080/healthz |
ok |
ffprobe .../8554/static |
h264, 1280x720 at 30 fps |
ffprobe .../8554/ptz |
The PTZ camera’s own codec and size |
The ffprobe checks are the stream checks from the camera guide, against
rtsp://10.0.0.23:8554/static and rtsp://10.0.0.23:8554/ptz. A failing check
is covered by its guide’s troubleshooting table.
The tablet then discovers the robot on the isolated network and shows it as verified.
