Skip to content

Zenoh Bridge#

Bridge an edge Autoware domain to a separate visualization and control domain inside one Compose project. The edge runs Autoware and simulation; the cloud side runs browser-based RViz2. Zenoh carries selected ROS 2 topics between the isolated domains without publishing its transport port to the host.

Architecture#

flowchart LR
    subgraph Edge[Edge ROS_DOMAIN_ID 0]
        A[Autoware] --> EB[Zenoh Client]
        S[Scenario Simulator] --> EB
    end
    subgraph Cloud[Cloud ROS_DOMAIN_ID 1]
        CB[Zenoh Router] --> V[RViz2 / noVNC]
    end
    EB -->|Internal TCP 7448| CB

The separate ROS domain IDs prevent native DDS cross-traffic. Configure topic filters and namespaces in config/zenoh-bridge-ros2dds.json5.

Setup#

./openadkit setup --verify
./openadkit fetch scenario-simulation
cd deployments/zenoh-bridge

Activate the Docker group membership added by the installer before running Docker without sudo. Either log out and back in, or run:

newgrp docker

This standalone deployment requires a source checkout and is not included in the unified release bundle or manifest-driven CLI. Override these in the environment or config.env before invoking the helpers:

Variable Purpose Default
MAP_PATH Kashiwanoha map directory $HOME/autoware_map/kashiwanoha_map
REMOTE_PASSWORD Required noVNC password openadkit

The deployment uses wall time and does not bridge /clock.

Internal Zenoh transport

TCP 7448 has no authentication or encryption, so it remains inside the dedicated Compose network and is not published to the host.

Run#

Full Project#

./cloud.sh up -d
./edge.sh up -d

Selected Groups#

./cloud.sh up -d
./edge.sh up -d --no-sim

The edge helper starts Autoware, the edge bridge, and Scenario Simulator unless --no-sim is selected. The cloud helper starts the cloud bridge and visualizer.

Open the visualizer at https://localhost:6081/vnc.html and use REMOTE_PASSWORD.

Teleoperation#

./cloud.sh up -d --with-teleop
./edge.sh up -d
./run_teleop.sh

Use ./edge.sh up -d --no-sim to run Autoware without the scenario simulator.

Key Action
W / S Throttle / brake
A / D Steer
Z Toggle auto/local control
X / C / V Drive / reverse / park
M Cycle drive mode
R Reset to the configured initial pose
Space Emergency stop or resume
Q Quit

For a fresh --no-sim session, press R to initialize the pose, Z to enter local control, choose a gear with X or C, select the drive mode with M, then use the movement keys.

Stop and Troubleshoot#

./cloud.sh ps
./edge.sh ps
./cloud.sh logs
./edge.sh logs
./edge.sh down
./cloud.sh down

If a bridge is not ready, inspect the helper logs. Host port 6081 must be free; Zenoh ports 7447 and 7448 stay inside the Compose networks. Re-fetch the map from the repository root with ./openadkit fetch scenario-simulation --force.

The autoware service uses the digest-pinned upstream image declared directly in docker-compose.yaml.