[package] name = "tines-ros2" version.workspace = true edition.workspace = true license.workspace = true description = "Self-contained ROS2 node for tines: bridges tines topics to ROS2 topics with a /tines/receipts channel for confidence events. rclrs is an optional feature (off by default) so the crate builds without a ROS2 toolchain." authors.workspace = true repository.workspace = true readme.workspace = true documentation = "https://docs.rs/tines-ros2" keywords = ["robotics", "ros2", "gossip", "delay-tolerant", "science::robotics"] categories = ["science::robotics", "network-programming"] [features] # rclrs (the ROS2 client library) is optional and off by default: the crate's # pure tines-side pieces (topic naming, the Node/Store/Transport wiring) build # and are tested without a ROS2 toolchain. Enable `--features ros2` to compile # the rclrs-backed `TinesNode`. default = [] ros2 = ["dep:rclrs", "dep:ros-env", "dep:tines"] [dependencies] tines-core = { path = "../tines-core", version = "0.3.0" } tines-store = { path = "../tines-store", version = "0.3.0" } tines-bt = { path = "../tines-bt", version = "0.3.0" } # The host's wall-clock abstraction (`HostClock`) and the trusted-time state # machine it drives. Only needed behind the `ros2` feature — `TinesNode` is the # only consumer and that is compiled only with `ros2` — so keep it optional. tines = { path = "../tines", version = "0.3.0", optional = true } rclrs = { version = "0.8", optional = true } # ros_env provides the ROS 2 message types (std_msgs, including # UInt8MultiArray) by include!()ing the generated crates from # AMENT_PREFIX_PATH; only needed behind the `ros2` feature alongside rclrs. # Pinned to 0.3 so it shares rclrs 0.8's rosidl_runtime_rs 0.7 rather than the # 0.6 that ros_env 0.1 pulls in. (The crates.io package is `ros-env`; Cargo maps # it to the `ros_env` crate id.) ros-env = { version = "0.3", optional = true } [dev-dependencies]