ONVIF Control¶
Class: ONVIFSinkBlockV1
Source: inference.core.workflows.core_steps.sinks.onvif_movement.v1.ONVIFSinkBlockV1
This ONVIF block allows a workflow to control an ONVIF capable PTZ camera to follow a detected object.
The block returns three values: * predictions - boolean; indicates whether or not the camera following a valid prediction * seeking - boolean; indicates whether or not the camera is currently seeking an object (set asynchronously)
There are two modes:
*Follow: The object it follows is the maximum confidence prediction out of all predictions passed into it. To follow a specific object, use the appropriate filters on the predictiion object to specify the object you want to follow. Additionally if a tracker is used, the camera will follow the tracked object until it disappears. Additionally, zoom can be toggled to get the camera to zoom into a position.
*Move to Preset: The camera can also move to a defined preset position. The camera must support the GotoPreset service.
Note that the tracking block uses the ONVIF continuous movement service. Tracking is adjusted on each successive workflow execution. If workflow execution stops, and the camera is currently moving, the camera will continue moving until it reaches the limits and will no longer be following an object.
PID tuning is generally necessary for this block to avoid having the camera overshoot and hunt. Having a significant lag between the camera movement and video (using a lazy buffer consumption strategy) can make tuning extremely difficult. Using an eager buffer consumption strategy is recommended. Increasing the dead zone can also help, but can affect zooming.
Type identifier¶
Use the following identifier in step "type"
field: roboflow_core/onvif_sink@v1
to add the block as
as step in your workflow.
Properties¶
Name | Type | Description | Refs |
---|---|---|---|
name |
str |
Enter a unique identifier for this step.. | ❌ |
camera_ip |
str |
Camera IP address or hostname. | ✅ |
camera_port |
int |
Camera ONVIF port. | ✅ |
camera_username |
str |
Camera username. | ✅ |
camera_password |
str |
Camera password. | ✅ |
movement_type |
str |
Follow object or go to default position preset on execution. | ❌ |
zoom_if_able |
bool |
Attempt to zoom into an object so it fills the image. | ✅ |
follow_tracker |
bool |
Lock to the tracking id of the highest confidence prediction until idle or reset. A tracker must be added to the workflow.. | ✅ |
dead_zone |
int |
Camera will stop once bounding box is within this many pixels of FoV center (or border for zoom). Increasing dead zone helps avoid pan/tilt hunting, but decreasing dead zone helps avoid hunting after zoom.. | ✅ |
default_position_preset |
str |
Preset name for default position. This must be a valid camera preset name.. | ✅ |
move_to_position_after_idle_seconds |
int |
Move to the default position after this many seconds of not seeking (0 to disable). | ✅ |
camera_update_rate_limit |
int |
Minimum number of milliseconds between ONVIF movement updates. | ✅ |
flip_x_movement |
bool |
Flip X movement if image is mirrored horizontally. | ✅ |
flip_y_movement |
bool |
Flip Y movement if image is mirrored vertically. | ✅ |
minimum_camera_speed |
float |
Minimum camera speed as percent (0-1). Some cameras won't honor speeds below a certain amount.. | ✅ |
pid_kp |
float |
PID Kp (proportional) constant. Decrease Kp to reduce hunting at the expense of speed.. | ✅ |
pid_ki |
float |
PID Ki (integral) constant. Use to reduce steady state error, but it can usually be zero.. | ✅ |
pid_kd |
float |
PID Kd (derivative) constant. Increase Kd with lag between video and movement, but excessive Kd can also cause hunting.. | ✅ |
The Refs column marks possibility to parametrise the property with dynamic values available
in workflow
runtime. See Bindings for more info.
Available Connections¶
Compatible Blocks
Check what blocks you can connect to ONVIF Control
in version v1
.
- inputs:
Keypoint Detection Model
,CogVLM
,Anthropic Claude
,OpenAI
,Google Vision OCR
,Gaze Detection
,Detections Classes Replacement
,Florence-2 Model
,Detection Offset
,Distance Measurement
,Single-Label Classification Model
,VLM as Detector
,OpenAI
,Moondream2
,YOLO-World Model
,SIFT Comparison
,Object Detection Model
,Overlap Filter
,Cosine Similarity
,VLM as Detector
,Path Deviation
,CSV Formatter
,LMM
,Segment Anything 2 Model
,Multi-Label Classification Model
,Twilio SMS Notification
,Line Counter
,Google Gemini
,Byte Tracker
,Roboflow Custom Metadata
,Image Contours
,Perspective Correction
,Slack Notification
,Pixel Color Count
,Detections Transformation
,Instance Segmentation Model
,VLM as Classifier
,Detections Merge
,Webhook Sink
,Identify Changes
,LMM For Classification
,Detections Consensus
,Detections Stitch
,SIFT Comparison
,JSON Parser
,Line Counter
,Detections Filter
,Identify Outliers
,Dynamic Zone
,Instance Segmentation Model
,Florence-2 Model
,Detections Stabilizer
,Model Monitoring Inference Aggregator
,Stitch OCR Detections
,Template Matching
,Bounding Rectangle
,Roboflow Dataset Upload
,Roboflow Dataset Upload
,Time in Zone
,Email Notification
,Camera Focus
,Path Deviation
,Object Detection Model
,Llama 3.2 Vision
,Byte Tracker
,ONVIF Control
,VLM as Classifier
,Byte Tracker
,Clip Comparison
,Time in Zone
,Dynamic Crop
,OpenAI
,Velocity
,OCR Model
,Local File Sink
- outputs:
Keypoint Detection Model
,Gaze Detection
,Detections Classes Replacement
,Florence-2 Model
,Detection Offset
,Distance Measurement
,Pixelate Visualization
,Single-Label Classification Model
,Mask Visualization
,Object Detection Model
,Overlap Filter
,Triangle Visualization
,Path Deviation
,Polygon Zone Visualization
,Model Comparison Visualization
,Crop Visualization
,Classification Label Visualization
,Segment Anything 2 Model
,Keypoint Detection Model
,Reference Path Visualization
,Multi-Label Classification Model
,Line Counter
,Twilio SMS Notification
,Bounding Box Visualization
,Roboflow Custom Metadata
,Byte Tracker
,Size Measurement
,Circle Visualization
,Perspective Correction
,Slack Notification
,Polygon Visualization
,Detections Transformation
,Instance Segmentation Model
,Detections Merge
,Trace Visualization
,Webhook Sink
,Color Visualization
,Detections Consensus
,Detections Stitch
,SIFT Comparison
,Line Counter Visualization
,Multi-Label Classification Model
,Line Counter
,Detections Filter
,Dot Visualization
,Dynamic Zone
,Instance Segmentation Model
,Background Color Visualization
,Florence-2 Model
,Model Monitoring Inference Aggregator
,Detections Stabilizer
,Stitch OCR Detections
,Template Matching
,Roboflow Dataset Upload
,Roboflow Dataset Upload
,Time in Zone
,Email Notification
,Path Deviation
,Object Detection Model
,Blur Visualization
,Label Visualization
,Byte Tracker
,Ellipse Visualization
,ONVIF Control
,Byte Tracker
,Halo Visualization
,Corner Visualization
,Time in Zone
,Dynamic Crop
,Single-Label Classification Model
,Keypoint Visualization
,Velocity
Input and Output Bindings¶
The available connections depend on its binding kinds. Check what binding kinds
ONVIF Control
in version v1
has.
Bindings
-
input
predictions
(Union[instance_segmentation_prediction
,object_detection_prediction
]): Object predictions.camera_ip
(string
): Camera IP address or hostname.camera_port
(integer
): Camera ONVIF port.camera_username
(string
): Camera username.camera_password
(secret
): Camera password.zoom_if_able
(boolean
): Attempt to zoom into an object so it fills the image.follow_tracker
(boolean
): Lock to the tracking id of the highest confidence prediction until idle or reset. A tracker must be added to the workflow..dead_zone
(integer
): Camera will stop once bounding box is within this many pixels of FoV center (or border for zoom). Increasing dead zone helps avoid pan/tilt hunting, but decreasing dead zone helps avoid hunting after zoom..default_position_preset
(string
): Preset name for default position. This must be a valid camera preset name..move_to_position_after_idle_seconds
(integer
): Move to the default position after this many seconds of not seeking (0 to disable).camera_update_rate_limit
(integer
): Minimum number of milliseconds between ONVIF movement updates.flip_x_movement
(boolean
): Flip X movement if image is mirrored horizontally.flip_y_movement
(boolean
): Flip Y movement if image is mirrored vertically.minimum_camera_speed
(float_zero_to_one
): Minimum camera speed as percent (0-1). Some cameras won't honor speeds below a certain amount..pid_kp
(float
): PID Kp (proportional) constant. Decrease Kp to reduce hunting at the expense of speed..pid_ki
(float
): PID Ki (integral) constant. Use to reduce steady state error, but it can usually be zero..pid_kd
(float
): PID Kd (derivative) constant. Increase Kd with lag between video and movement, but excessive Kd can also cause hunting..
-
output
predictions
(object_detection_prediction
): Prediction with detected bounding boxes in form of sv.Detections(...) object.seeking
(boolean
): Boolean flag.
Example JSON definition of step ONVIF Control
in version v1
{
"name": "<your_step_name_here>",
"type": "roboflow_core/onvif_sink@v1",
"predictions": "$steps.object_detection_model.predictions",
"camera_ip": "<block_does_not_provide_example>",
"camera_port": "<block_does_not_provide_example>",
"camera_username": "<block_does_not_provide_example>",
"camera_password": "<block_does_not_provide_example>",
"movement_type": "Follow",
"zoom_if_able": true,
"follow_tracker": true,
"dead_zone": 50,
"default_position_preset": "",
"move_to_position_after_idle_seconds": "<block_does_not_provide_example>",
"camera_update_rate_limit": "<block_does_not_provide_example>",
"flip_x_movement": true,
"flip_y_movement": true,
"minimum_camera_speed": "<block_does_not_provide_example>",
"pid_kp": "<block_does_not_provide_example>",
"pid_ki": "<block_does_not_provide_example>",
"pid_kd": "<block_does_not_provide_example>"
}