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.
| Package | Representative types |
|---|
std_msgs | Header, String, Bool, Byte, Char, ColorRGBA, Empty, Float32/64, Int8/16/32/64, UInt8/16/32/64, and the *MultiArray family. |
geometry_msgs | Point, Point32, Pose, Pose2D, PoseArray, Quaternion, Transform, Twist, Vector3, Accel, Inertia, Polygon. |
sensor_msgs | Image, Imu, LaserScan, JointState, PointCloud2, CameraInfo, CompressedImage, NavSatFix, BatteryState, Range. |
nav_msgs | Odometry, Path, OccupancyGrid, MapMetaData, GridCells. |
builtin_interfaces | Time, Duration. |
visualization_msgs | Marker, MarkerArray. |
shape_msgs | Shape primitive types. |
trajectory_msgs | Trajectory types. |
tf2_msgs | Transform-tree message types. |
action_msgs | Action-related message types. |
diagnostic_msgs | Diagnostic message types. |
statistics_msgs | Statistics message types. |
ROS2-to-Rust type mapping
schema info displays Rust types using this mapping:
| ROS2 type | Rust type |
|---|
bool | bool |
byte / uint8 | u8 |
char / int8 | i8 |
uint16 | u16 |
int16 | i16 |
uint32 | u32 |
int32 | i32 |
uint64 | u64 |
int64 | i64 |
float32 | f32 |
float64 | f64 |
string | String |
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:
| Item | Role |
|---|
<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>Snapshot | Heap-owned companion (Default + Clone + PartialEq, plus serde where it fits) for replay round-trips. |