What problem does it solve? Connecting a ROS2 robot to browsers and web clients requires choosing between rosbridge_suite and custom bridges, managing two event loops (rclpy and an async web server) without deadlocks, and handling streaming, authentication, and rate limiting correctly. This Skill provides tested patterns and working code for each approach. ## Core Features & Use Cases - Bridge Selection Guidance: Compares rosbridge_suite, custom FastAPI, and Flask bridges across latency, throughput, auth, and production readiness so you pick the right architecture. - Complete Integration Code: Includes a thread-safe ROS2 node with shared state, FastAPI WebSocket/REST endpoints, MJPEG and binary WebSocket video streaming, teleop with a safety watchdog, and a token-bucket rate limiter. - Use Case: You need a browser dashboard showing a live camera feed and odometry from a robot, plus a virtual joystick publishing to /cmd_vel. Use the FastAPI pattern: spin rclpy in a background thread, serve uvicorn in the main thread, stream JPEG frames over WebSocket, and enforce a 500ms command timeout watchdog. ## Quick Start Ask the assistant to set up a FastAPI web bridge that streams my robot's compressed camera topic to a browser and exposes a REST endpoint for sending cmd_vel commands.