SDS3 CameraService is a camera capture service for the Satellite Brain platform. It reads task configuration files, controls USB and GigE network cameras, and writes captured images, videos, logs, and inference-ready files to predefined runtime directories.
The service is designed for deployments where camera tasks are generated as JSON files and consumed by a long-running camera control process.
The imaging program executable is built from source during installation or Debian package generation. Prebuilt project binaries are not stored in this repository.
Third-party SDK Notice
Hikrobot MVS SDK is third-party software. This repository does not redistribute Hikrobot MVS .deb packages.
Before running the installer, download the tested ARM Linux MVS client package from the official Hikrobot download page.
When installing the Debian release package, install the tested Hikrobot MVS SDK first. The package checks for /opt/MVS/lib/aarch64/libMvCameraControl.so during installation and stops with an error if the SDK is missing.
Dependency Model
APT-managed dependencies are kept aligned with install.sh. The project builds the camera executable from source, so the dependency set includes build-essential, pkg-config, libjson-c-dev, libtiff-dev, libgstreamer1.0-dev, libgstreamer-plugins-base1.0-dev, moreutils, and systemd.
JetPack, DeepStream, CUDA, GStreamer, and the NVIDIA multimedia plugins are treated as part of the target SDS3 system environment, consistent with install.sh. They are documented in the reference environment instead of being installed by this project.
Hikrobot MVS SDK is not declared as an APT dependency because it is distributed separately by Hikrobot and is not redistributed by this project. This project is validated against MVS V3.0.1 ARM (MVS-3.0.1_aarch64_20241128.deb).
No requirements.txt is provided at this time. The included Python helper script only uses Python standard-library modules.
Installation
chmod +x ./install.sh
./install.sh
The installer checks whether Hikrobot MVS SDK is already installed. If the SDK is missing, it looks for MVS-3.0.1_aarch64_20241128.deb under src/EnvironmentFile/. If the package is not found, the installer prints the official download URL and stops.
imaging_defines.json defines the uplink camera command format used by the spacecraft TTC service. It maps binary command fields to CameraService task parameters, including command output path, pre-execution command, camera activation mask, timing fields, image quality settings, and per-camera capture parameters.
Camera application developers may update this file when the task format changes. During installation, install.sh deploys it to the TTC configuration directory:
/opt/SatService/ttc/config/imaging_defines.json
Task Generation
src/TestFile/send_json.py provides a quick way to generate a camera task file. Edit the capture parameters in the script, then run:
python3 src/TestFile/send_json.py
By default, task files are written to:
/var/opt/SatService/CameraService/image/json
CameraService monitors this directory. Once a task file is generated, the service reads the task parameters and starts the capture workflow.
Network Camera Configuration
network_cameras.json is stored next to the camera executable and maps network camera IDs to IP addresses. After installation, the file is located at:
Only network cameras required by the deployment need to be listed in this file. USB cameras are not configured here. A deployment may list one, two, four, or more network cameras as required.
CAMERA0: network camera
CAMERA1: USB camera
CAMERA2: USB camera
CAMERA3: network camera
CAMERA4: network camera
CAMERA5: network camera
Camera Activation Mask
ACTIVE_CAMERA_ID is a bitmask. Camera IDs are mapped from the least significant bit. Read the binary value from right to left: the rightmost bit is bit0, which controls CAMERA0.
SDS3 CameraService
Copyright (c) 2026 maiarstar
Author: phylis
SPDX-License-Identifier: MIT
中文说明
Overview
SDS3 CameraService is a camera capture service for the Satellite Brain platform. It reads task configuration files, controls USB and GigE network cameras, and writes captured images, videos, logs, and inference-ready files to predefined runtime directories.
The service is designed for deployments where camera tasks are generated as JSON files and consumed by a long-running camera control process.
Repository Layout
The imaging program executable is built from source during installation or Debian package generation. Prebuilt project binaries are not stored in this repository.
Third-party SDK Notice
Hikrobot MVS SDK is third-party software. This repository does not redistribute Hikrobot MVS
.debpackages.Before running the installer, download the tested ARM Linux MVS client package from the official Hikrobot download page.
Required/tested package:
https://www.hikrobotics.com/cn/machinevision/service/download/?module=0
Place the downloaded package in:
Example package name:
When installing the Debian release package, install the tested Hikrobot MVS SDK first. The package checks for
/opt/MVS/lib/aarch64/libMvCameraControl.soduring installation and stops with an error if the SDK is missing.Dependency Model
APT-managed dependencies are kept aligned with
install.sh. The project builds the camera executable from source, so the dependency set includesbuild-essential,pkg-config,libjson-c-dev,libtiff-dev,libgstreamer1.0-dev,libgstreamer-plugins-base1.0-dev,moreutils, andsystemd.JetPack, DeepStream, CUDA, GStreamer, and the NVIDIA multimedia plugins are treated as part of the target SDS3 system environment, consistent with
install.sh. They are documented in the reference environment instead of being installed by this project.Hikrobot MVS SDK is not declared as an APT dependency because it is distributed separately by Hikrobot and is not redistributed by this project. This project is validated against MVS V3.0.1 ARM (
MVS-3.0.1_aarch64_20241128.deb).No
requirements.txtis provided at this time. The included Python helper script only uses Python standard-library modules.Installation
The installer checks whether Hikrobot MVS SDK is already installed. If the SDK is missing, it looks for
MVS-3.0.1_aarch64_20241128.debundersrc/EnvironmentFile/. If the package is not found, the installer prints the official download URL and stops.Runtime Paths
Program installation directory:
Runtime data directory:
TTC Command Format
imaging_defines.jsondefines the uplink camera command format used by the spacecraft TTC service. It maps binary command fields to CameraService task parameters, including command output path, pre-execution command, camera activation mask, timing fields, image quality settings, and per-camera capture parameters.Camera application developers may update this file when the task format changes. During installation,
install.shdeploys it to the TTC configuration directory:Task Generation
src/TestFile/send_json.pyprovides a quick way to generate a camera task file. Edit the capture parameters in the script, then run:By default, task files are written to:
CameraService monitors this directory. Once a task file is generated, the service reads the task parameters and starts the capture workflow.
Network Camera Configuration
network_cameras.jsonis stored next to the camera executable and maps network camera IDs to IP addresses. After installation, the file is located at:Only network cameras required by the deployment need to be listed in this file. USB cameras are not configured here. A deployment may list one, two, four, or more network cameras as required.
Example:
Current camera ID convention:
Camera Activation Mask
ACTIVE_CAMERA_IDis a bitmask. Camera IDs are mapped from the least significant bit. Read the binary value from right to left: the rightmost bit isbit0, which controlsCAMERA0.For example,
0b111111enables all six cameras fromCAMERA0toCAMERA5. Its decimal value is63.A bit value of
0means the corresponding camera is not activated for the current capture task:In this example,
0b011111enablesCAMERA0toCAMERA4, and does not activateCAMERA5.send_json.pyuses a Python dictionary template so parameter comments can be kept close to the values being edited:Reference Environment
License
This project is licensed under the MIT License. See
LICENSEfor details.