| Crates.io | edgefirst-schemas |
| lib.rs | edgefirst-schemas |
| version | 1.4.1 |
| created_at | 2024-04-13 16:59:30.491275+00 |
| updated_at | 2025-11-19 00:08:27.772142+00 |
| description | Message schemas for EdgeFirst Perception - ROS2 Common Interfaces, Foxglove, and custom types |
| homepage | https://doc.edgefirst.ai |
| repository | https://github.com/EdgeFirstAI/schemas |
| max_upload_size | |
| id | 1207702 |
| size | 340,264 |
Core message schemas and language bindings for the EdgeFirst Perception middleware
EdgeFirst Perception Schemas provides the foundational message types used throughout the EdgeFirst Perception middleware stack. It delivers high-performance Rust and Python bindings for consuming and producing messages in EdgeFirst Perception applications. The library implements ROS2 Common Interfaces, Foxglove schemas, and custom EdgeFirst message types with CDR (Common Data Representation) serialization over Zenoh.
No ROS2 Required: EdgeFirst Perception applications work directly on Linux, Windows, and macOS without any ROS2 installation. For systems that do use ROS2, EdgeFirst Perception interoperates seamlessly through the Zenoh ROS2 DDS Bridge.
geometry_msgs, sensor_msgs, std_msgs, nav_msgs)Rust (via crates.io):
cargo add edgefirst-schemas
Python (via pip, when published):
pip install edgefirst-schemas
For detailed installation instructions and troubleshooting, see the Developer Guide.
Most applications consume messages from EdgeFirst Perception services. Here's how to decode sensor data:
Python Example - Consuming PointCloud2:
from edgefirst.schemas import PointCloud2, decode_pcd
# Receive a point cloud message from EdgeFirst Perception
# (via Zenoh subscriber - see samples for complete examples)
points = decode_pcd(point_cloud_msg)
# Access point data
for point in points:
x, y, z = point.x, point.y, point.z
# Process point data...
Rust Example - Consuming Detection Results:
use edgefirst_schemas::edgefirst_msgs::Detect;
use edgefirst_schemas::sensor_msgs::Image;
fn process_detections(detect_msg: Detect) {
for bbox in detect_msg.boxes {
println!("Class: {}, Confidence: {:.2}",
bbox.class_id, bbox.confidence);
// Process detection...
}
}
Complete working examples: See the EdgeFirst Samples repository for full subscriber implementations, Zenoh configuration, and integration patterns.
Applications can also produce messages for custom perception pipelines:
Python Example - Creating Custom Messages:
from edgefirst.schemas.geometry_msgs import Pose, Point, Quaternion
from edgefirst.schemas.std_msgs import Header
# Create a pose message
pose = Pose(
position=Point(x=1.0, y=2.0, z=0.5),
orientation=Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
)
Rust Example - Building Detection Messages:
use edgefirst_schemas::edgefirst_msgs::{Detect, Box as BBox, Track};
use edgefirst_schemas::std_msgs::Header;
fn create_detection() -> Detect {
Detect {
header: Header::default(),
boxes: vec![
BBox {
class_id: 1,
confidence: 0.95,
x: 100, y: 100, w: 50, h: 50,
..Default::default()
}
],
tracks: vec![],
model_info: Default::default(),
}
}
Learn more: The Developer Guide covers serialization, Zenoh publishing, and message lifecycle management.
Rust:
cargo build --release
cargo test
Python:
python -m pip install -e .
ROS2 Debian Package (for ROS2 integration only):
cd edgefirst_msgs
source /opt/ros/humble/setup.bash
fakeroot debian/rules build
dpkg -i ../ros-humble-edgefirst-msgs_*.deb
For complete build instructions, see CONTRIBUTING.md.
EdgeFirst Perception Schemas combines three sources of message definitions:
Standard ROS2 message types for broad interoperability:
std_msgs - Basic primitive types (Header, String, etc.)geometry_msgs - Spatial messages (Pose, Transform, Twist, etc.)sensor_msgs - Sensor data (PointCloud2, Image, CameraInfo, Imu, NavSatFix, etc.)nav_msgs - Navigation (Odometry, Path)builtin_interfaces - Time and Durationrosgraph_msgs - ClockBased on ROS2 Humble Hawksbill LTS release.
Visualization-focused message types from Foxglove Schemas:
Specialized types for edge AI perception workflows:
Detect - Object detection results with bounding boxes and tracksBox - 2D bounding box with confidence and classTrack - Object tracking information with unique IDsDmaBuffer - Zero-copy DMA buffer sharing for hardware acceleratorsRadarCube - Raw radar data cube for processingRadarInfo - Radar sensor calibration and metadataModel - Neural network model metadataModelInfo - Inference performance instrumentationFull message definitions and field descriptions are in the API Reference.
EdgeFirst Perception Schemas works on:
No ROS2 Required: Applications can consume and produce EdgeFirst Perception messages on any supported platform without installing ROS2. ROS2 is only needed if you want to bridge EdgeFirst Perception data into an existing ROS2 ecosystem.
See the EdgeFirst Samples repository for platform-specific examples and setup guides.
EdgeFirst Perception is optimized for Au-Zone edge AI platforms:
These platforms provide hardware-accelerated inference and sensor integration. For custom hardware projects, contact Au-Zone for engineering services.
EdgeFirst Perception Schemas enables:
Example applications: Explore the EdgeFirst Samples for complete implementations including camera subscribers, detection visualizers, sensor fusion examples, and custom service templates.
EdgeFirst Studio - Complete MLOps platform for edge AI:
EdgeFirst Hardware Platforms:
Au-Zone Technologies offers commercial support for production deployments:
Contact: support@au-zone.com | Learn more: au-zone.com
For detailed information about message serialization, CDR encoding, Zenoh communication patterns, and system architecture, see the ARCHITECTURE.md document.
Quick overview:
We welcome contributions! Please see our Contributing Guidelines for details on:
All contributors must follow our Code of Conduct.
For reporting security vulnerabilities, please see our Security Policy. Do not report security issues through public GitHub issues.
Licensed under the Apache License, Version 2.0. See LICENSE for details.
Copyright © 2025 Au-Zone Technologies. All Rights Reserved.
This project incorporates schemas and code from:
See NOTICE file for complete third-party license information.
EdgeFirst Perception is a trademark of Au-Zone Technologies Inc.