# Camera Publisher ROS 2 node that captures frames from a V4L2 USB camera using GStreamer and publishes them as `sensor_msgs/Image` messages. --- ## Architecture ``` USB Camera → v4l2src (GStreamer) → sensor_msgs/Image → /camera/image_raw ``` No OpenCV or cv_bridge required. Frames are captured via `v4l2src` and passed directly into the ROS 2 message. --- ## Published topics | Topic | Type | Description | |---|---|---| | `//image_raw` | `sensor_msgs/Image` | Raw camera frames | --- ## Environment variables | Variable | Default | Description | |---|---|---| | `VIDEO_DEVICE` | `/dev/video0` | V4L2 device path | | `WIDTH` | `640` | Capture width in pixels | | `HEIGHT` | `480` | Capture height in pixels | | `FPS` | `30` | Capture frame rate | | `CAMERA_FORMAT` | `raw` | Capture format (`raw` or `mjpeg`) | | `CAMERA_NAMESPACE` | `/camera` | ROS 2 namespace (topic becomes `//image_raw`) | --- ## Finding your camera device ```bash v4l2-ctl --list-devices v4l2-ctl -d /dev/video0 --list-formats-ext ```