# OmniSocketGo_streaming This repository contains the extracted streaming stack for the control host and the robot. It keeps two mutually exclusive robot camera implementations: | Area | Path | Camera source | Use when | | --- | --- | --- | --- | | Control host | `host/` | KCP hub, Django API, Vue UI | Running the operator/control side | | Robot release A | `robot/v4l2/OmniSocketGo_robot/` | Direct `/dev/video*` (V4L2) | Testing the legacy/direct device path | | Robot release B | `robot/ros2/OmniSocketGo_robot_ros/` | ROS 2 RGB topics + shared-memory bridge | Keeping `proc_manager`/Orbbec ownership and using the ROS 2 path | Do not start both robot releases at the same time on one robot. They use the same KCP peer identities and their camera ownership requirements are different. ## Repository layout ```text host/ OmniSocketGo_add_camera/ C/KCP transport, Python bindings, scripts robot-command-center/ Django backend and Vue frontend requirements.txt robot/ v4l2/OmniSocketGo_robot/ `/dev/video*` release extracted from 2026-08-08 bundle ros2/OmniSocketGo_robot_ros/ ROS 2 camera release validated on the robot release/ Original release notes and SHA256 manifests NETWORK_LINK_STARTUP_GUIDE.md Direct-LAN and single-public-hub guidance ``` The original compressed bundles were intentionally extracted rather than committed again. Machine-local `*.env.local`, build directories, caches, frontend dependencies, and generated binaries are ignored. Copy the matching `*.env` file to a local override on the target machine and edit addresses and paths there. ## Quick start ### Control host Read `host/README_PACKAGE.md`, then keep these directories as siblings when installing on Linux: ```text /OmniSocketGo_add_camera /robot-command-center ``` The normal direct-LAN order is local KCP hub, backend, then frontend. The full commands and the one-public-Hub variation are in `NETWORK_LINK_STARTUP_GUIDE.md`. ### Robot: direct V4L2 release ```bash cd robot/v4l2/OmniSocketGo_robot ./check-robot-lan.sh ./start-robot-lan.sh ``` This release opens the selected V4L2 devices directly. Stop any camera service that owns the device before starting it. ### Robot: ROS 2 release ```bash cd robot/ros2/OmniSocketGo_robot_ros make ``` Follow `robot/ros2/README.md` and `robot/ros2/OmniSocketGo_robot_ros/docs/ROS2_CAMERA_FORWARDING.md`. In the default ROS 2 mode the Orbbec/proc_manager stack owns `/dev/video*`; the ROS 2 bridge subscribes to RGB topics and exposes the latest frames to the existing KCP daemon without opening V4L2. ## Review status The original 2026-08-08 host and V4L2 archive hashes are retained under `release/`. The ROS 2 release is the separately tested source tree that was developed for ROS 2 camera ownership. The repository is source-only: C/KCP and ROS 2 builds must be performed on their target Linux/ARM64 environments. See `docs/RELEASE_REVIEW.md` for the boundary checks and known machine-local configuration values.