Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cerulion.com/llms.txt

Use this file to discover all available pages before exploring further.

Cerulion ships ROS2-compatible message types in the native_ros2_messages crate, generated from ROS2 Jazzy .msg files at build time. There are 14 packages. Import a type from its package:
use native_ros2_messages::sensor_msgs::Image;

Packages and representative types

The following table lists the packages with representative types from each. Type names are the PascalCase form of the source .msg file.
PackageRepresentative types
std_msgsHeader, String, Bool, Byte, Char, ColorRGBA, Empty, Float32/64, Int8/16/32/64, UInt8/16/32/64, and the *MultiArray family.
geometry_msgsPoint, Point32, Pose, Pose2D, PoseArray, Quaternion, Transform, Twist, Vector3, Accel, Inertia, Polygon.
sensor_msgsImage, Imu, LaserScan, JointState, PointCloud2, CameraInfo, CompressedImage, NavSatFix, BatteryState, Range.
nav_msgsOdometry, Path, OccupancyGrid, MapMetaData, GridCells.
builtin_interfacesTime, Duration.
visualization_msgsMarker, MarkerArray.
shape_msgsShape primitive types.
trajectory_msgsTrajectory types.
tf2_msgsTransform-tree message types.
action_msgsAction-related message types.
diagnostic_msgsDiagnostic message types.
statistics_msgsStatistics message types.

ROS2-to-Rust type mapping

schema info displays Rust types using this mapping:
ROS2 typeRust type
boolbool
byte / uint8u8
char / int8i8
uint16u16
int16i16
uint32u32
int32i32
uint64u64
int64i64
float32f32
float64f64
stringString
T[]Vec<T>

Fixed vs variable fields

Fixed-size primitive fields are written directly through Deref to the schema’s shared-memory section, for example self.image.height = 480. Variable-length fields (string, T[]) must be listed in the #[output(...)] attribute. The macro rewrites a write such as self.image.encoding = "rgb8" into the generated setter set_encoding(...)?. See the Node macro reference for the #[output(...)] keys.
use native_ros2_messages::sensor_msgs::Image;
// in tick (with #[output(data, encoding)] image: Image):
self.image.height = 480;            // fixed field, direct SHM write
self.image.width  = 640;
self.image.encoding = "rgb8";       // variable field β†’ rewritten to set_encoding(...)?

Generated type triple

For each schema, the build emits three items into the package module:
ItemRole
<Name>Unit marker struct (impl ShmMessage) β€” the T in loan_proxy::<T>() / try_view::<T, _>().
<Name>Shm (or <Name>Shm<'a> for variable schemas)Zero-copy reader/writer in the iceoryx2 payload.
<Name>SnapshotHeap-owned companion (Default + Clone + PartialEq, plus serde where it fits) for replay round-trips.