diff --git a/.github/workflows/noetic.yml b/.github/workflows/noetic.yml index f1017a7c..4541fedc 100644 --- a/.github/workflows/noetic.yml +++ b/.github/workflows/noetic.yml @@ -39,4 +39,4 @@ jobs: - name: Start rosbridge run: source /opt/ros/noetic/setup.bash; roslaunch rosbridge_server rosbridge_websocket.launch & disown; rosrun rosapi rosapi_node & sleep 1 - name: Integration Tests - run: source /opt/ros/noetic/setup.bash; source /root/.cargo/env; RUST_LOG=debug cargo test --features ros1_test,ros1,running_bridge,rosapi,rosbridge,zenoh -- --test-threads 1 \ No newline at end of file + run: source /opt/ros/noetic/setup.bash; source /root/.cargo/env; RUST_LOG=debug cargo test --features ros1_test,all -- --test-threads 1 \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index c0be7886..263a01d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -841,17 +841,16 @@ name = "example_package" version = "0.1.0" dependencies = [ "cargo-emit", - "roslibrust_codegen", - "roslibrust_common", + "roslibrust", + "tokio", ] [[package]] name = "example_package_macro" version = "0.1.0" dependencies = [ - "roslibrust_codegen", - "roslibrust_codegen_macro", - "roslibrust_common", + "roslibrust", + "tokio", ] [[package]] @@ -2560,12 +2559,13 @@ dependencies = [ "roslibrust_common", "roslibrust_mock", "roslibrust_ros1", - "roslibrust_rosapi", "roslibrust_rosbridge", + "roslibrust_test", "roslibrust_zenoh", "serde", "test-log", "tokio", + "zenoh", ] [[package]] @@ -2638,9 +2638,8 @@ version = "0.1.0" dependencies = [ "bincode", "log", - "roslibrust_codegen", - "roslibrust_codegen_macro", "roslibrust_common", + "roslibrust_test", "tokio", ] @@ -2657,10 +2656,9 @@ dependencies = [ "log", "regex", "reqwest", - "roslibrust_codegen", - "roslibrust_codegen_macro", "roslibrust_common", "roslibrust_serde_rosmsg", + "roslibrust_test", "serde", "serde_xmlrpc", "test-log", @@ -2672,10 +2670,7 @@ dependencies = [ name = "roslibrust_rosapi" version = "0.1.0" dependencies = [ - "roslibrust_codegen", - "roslibrust_codegen_macro", - "roslibrust_common", - "roslibrust_rosbridge", + "roslibrust", "test-log", "tokio", ] @@ -2693,6 +2688,7 @@ dependencies = [ "roslibrust_codegen", "roslibrust_codegen_macro", "roslibrust_common", + "roslibrust_test", "serde_json", "test-log", "tokio", @@ -2722,8 +2718,6 @@ dependencies = [ "log", "pprof", "roslibrust", - "roslibrust_codegen", - "roslibrust_common", "tokio", ] diff --git a/README.md b/README.md index d4eeca52..ec834a1b 100644 --- a/README.md +++ b/README.md @@ -1,74 +1,107 @@ # RosLibRust -[![Noetic](https://github.com/Carter12s/roslibrust/actions/workflows/noetic.yml/badge.svg)](https://github.com/Carter12s/roslibrust/actions/workflows/noetic.yml) -[![Galactic](https://github.com/Carter12s/roslibrust/actions/workflows/galactic.yml/badge.svg)](https://github.com/Carter12s/roslibrust/actions/workflows/galactic.yml) -[![Humble](https://github.com/Carter12s/roslibrust/actions/workflows/humble.yml/badge.svg)](https://github.com/Carter12s/roslibrust/actions/workflows/humble.yml) -[![Iron](https://github.com/Carter12s/roslibrust/actions/workflows/iron.yml/badge.svg)](https://github.com/Carter12s/roslibrust/actions/workflows/iron.yml) -[![License:MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) - -This package aims to provide a convenient "async first" library for interacting with ROS. - -Currently this packaged provides support for both ROS1 native communication (TCPROS) and rosbridge's protocol which provides support for both ROS1 and ROS2 albeit with some overhead. - -Information about the rosbridge protocol can be found [here](https://github.com/RobotWebTools/rosbridge_suite). - -Note on documentation: -All information about the crate itself (examples, documentation, tutorials, etc.) lives in the source code and can be viewed on [docs.rs](https://docs.rs/roslibrust). -This readme is for "Meta" information about developing for the crate. - -Fully Supported via rosbridge: Noetic, Galactic, Humble, Iron. -Fully Supported via ROS1 native: Noetic +[![Noetic](https://github.com/roslibrust/roslibrust/actions/workflows/noetic.yml/badge.svg)](https://github.com/roslibrust/roslibrust/actions/workflows/noetic.yml) +[![Galactic](https://github.com/roslibrust/roslibrust/actions/workflows/galactic.yml/badge.svg)](https://github.com/roslibrust/roslibrust/actions/workflows/galactic.yml) +[![Humble](https://github.com/roslibrust/roslibrust/actions/workflows/humble.yml/badge.svg)](https://github.com/roslibrust/roslibrust/actions/workflows/humble.yml) +[![Iron](https://github.com/roslibrust/roslibrust/actions/workflows/iron.yml/badge.svg)](https://github.com/roslibrust/roslibrust/actions/workflows/iron.yml) +[![License:MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -## Code Generation of ROS Messages +This crate provides a convenient "async first" library for interacting with ROS. +This crate defines generic traits for interacting with ROS-like systems, and implementations of those traits for various backends. + +This crate is **pure rust and requires no ROS1 or ROS2 dependencies or installation**. + +This allows writing generic behaviors like: + +```no_run +# use roslibrust_test::ros1::*; +use roslibrust::{TopicProvider, Publish, Subscribe}; + +async fn relay(ros: T) -> roslibrust::Result<()> { + let mut subscriber = ros.subscribe::("in").await?; + let mut publisher = ros.advertise::("out").await?; + while let Ok(msg) = subscriber.next().await { + println!("Got message: {}", msg.data); + publisher.publish(&msg).await?; + } + Ok(()) +} + +#[tokio::main] +async fn main() -> roslibrust::Result<()> { + // Relay messages over a rosbridge connection with either ROS1 or ROS2! + #[cfg(feature = "rosbridge")] + { + let ros = roslibrust::rosbridge::ClientHandle::new("ws://localhost:9090").await?; + relay(ros).await?; + } + + // Relay messages over a native ROS1 connection + #[cfg(feature = "ros1")] + { + let ros = roslibrust::ros1::NodeHandle::new("http://localhost:11311", "relay").await?; + relay(ros).await?; + } + + // Relay messages over a mock ROS connection for testing + #[cfg(feature = "mock")] + { + let ros = roslibrust::mock::MockRos::new(); + relay(ros).await?; + } + + #[cfg(feature = "zenoh")] + { + // Relay messages over a zenoh connection compatible with zenoh-ros1-plugin / zenoh-ros1-bridge + let ros = roslibrust::zenoh::ZenohClient::new(zenoh::open(zenoh::Config::default()).await.unwrap()); + relay(ros).await?; + } + + // TODO - not supported yet! + // Relay messages over a native ROS2 connection + // let ros = roslibrust::ros2::NodeHandle::new("http://localhost:11311", "relay").await?; + // relay(ros).await?; + Ok(()) +} +``` -The crates `roslibrust_codegen` and `roslibrust_codegen_macro` support code generation in Rust for ROS1 and ROS2 message, service, and action files. Many of the examples use the macro for convenience. `find_and_generate_ros_messages` is a macro which accepts an optional list of paths relative to the project workspace directory and will additionally check the `ROS_PACKAGE_PATH` environment variable for paths to ROS packages. +All of this is backed by common traits for ROS messages, topics, and services. `roslibrust_codegen` provides generation of Rust types from both ROS1 and ROS2 .msg/.srv files and +`roslibrust_codegen_macro` provides a convenient macro for generating these types: -It's used like this: -```rust -roslibrust_codegen_macro::find_and_generate_ros_messages!("assets/ros1_common_interfaces/std_msgs"); +```no_compile +// Will generate types from all packages in ROS_PACKAGE_PATH +roslibrust_codegen_macro::find_and_generate_ros_messages!(); ``` -Code generation can also be done with a build.rs script using the same code generation backend called by the macro. See the contents of `example_package` for a detailed example of how this can be done. While the proc_macros are extremely convenient for getting started -there is currently no (good) way for a proc_macro to inform the compiler that it needs to be re-generated when an external file -changes. Using a build script requires more setup, but can correctly handling re-building when message files are edited. +If you want to see what the generated code looks like check [here](https://github.com/RosLibRust/roslibrust/blob/master/roslibrust_test/src/ros1.rs). +While the macro is useful for getting started, we recommend using `roslibrust_codegen` with a `build.rs` as shown in [example_package](https://github.com/RosLibRust/roslibrust/tree/master/example_package). +This allows cargo to know when message files are edited and automatically re-generate the code. -Generated message types are compatible with both the ROS1 native and RosBridge backends. +## Getting Started / Examples -## Roadmap +Examples can be found in [examples](https://github.com/RosLibRust/roslibrust/tree/master/roslibrust/examples). +We recommend looking at the examples prefixed with `generic_` first, these examples show the recommended style of using `roslibrust` through the generic traits. +Code written this way can be used with any backend, and critically can be tested with the mock backend. -| Feature | rosbridge | ROS1 | ROS2 | -|------------------------------|-------------------------------------------------------------|------|------| -| examples | ✅ | ✅ | x | -| message_gen | ✅ | ✅ | ✅ | -| advertise / publish | ✅ | ✅ | x | -| unadvertise | ✅ | ✅ | x | -| subscribe | ✅ | ✅ | x | -| unsubscribe | ✅ | ✅ | x | -| services | ✅ | ✅ | x | -| actions | (codgen of message types only) | -| rosapi | ✅ | x | x | -| TLS / wss:// | Should be working, untested | N/A | N/A | +Examples prefixed with `ros1_`, `rosbridge_`, and `zenoh_` show direct use of specific backends if you are only interested in a single backend. +Some backends may provide additional functionality not available through the generic traits. -Upcoming features in rough order: +To get started with writing a node with `roslibrust` we recommend looking at [example_package](https://github.com/RosLibRust/roslibrust/tree/master/example_package) and setting up your +`Cargo.toml` and `build.rs` in a similar way. +Some important tips to keep in mind with using the crate: -- Ability to write generic clients via ROS trait -- In memory backend that can be used for testing -- Support for parameter server +* This crate is built around the [tokio runtime](https://docs.rs/tokio/latest/tokio/) and requires tokio to work. All backends expect to be created inside a tokio runtime. +* The generic traits `TopicProvider` and `ServiceProvider` are not [object safe](https://doc.rust-lang.org/reference/items/traits.html#object-safety) due to their generic parameters. This means you cannot use them as trait objects with `Box` or `Box`. Instead, they should be used as compile time generics like `fn foo(ros: impl TopicProvider)` or `struct MyNode { ros: T }`. +* By default the roslibrust crate does not include any backends. You must enable the specific backends you want to use with features in `Cargo.toml` like `roslibrust = { version = "0.12", features = ["ros1"] }`. ## Contributing Contribution through reporting of issues encountered and implementation in PRs is welcome! Before landing a large PR with lots of code implemented, please open an issue if there isn't a relevant one already available and chat with a maintainer to make sure the design fits well with all supported platforms and any in-progress implementation efforts. -### Minimum Supported Rust Version / MSRV - -We don't have an official MSRV yet. - -Due to cargo 1.72 enabling "doctest-in-workspace" by default it is recommended to use Rust 1.72+ for development. -Previous rust versions are support but will require some incantations when executing doctests. +We uphold the rust lang [Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct). -The experimental topic_provider feature currently relies on `async fn` in traits from Rust 1.75. -When that feature standardizes that will likely become our MSRV. +### Minimum Supported Rust Version / MSRV -### Running Tests +MSRV is currently set to 1.75 to enable `async fn` in traits. -There are various unit tests and integration tests behind feature flags. For tests with ROS1, both through rosbridge and native clients, you'll need a locally running `rosbridge_websocket` node and `rosmaster`. Then run with `cargo test --features "ros1_test ros1"`. For tests with ROS2, you'll need a running rosbridge server, then run with `cargo test --features "ros2_test"`. You can find relevant `Dockerfile`s and docker compose configurations udner the `docker` directory. +We are likely to increase the MSRV to 1.83 when support for `async closures` lands. diff --git a/example_package/Cargo.toml b/example_package/Cargo.toml index 64cddbff..a65b12c6 100644 --- a/example_package/Cargo.toml +++ b/example_package/Cargo.toml @@ -4,14 +4,19 @@ version = "0.1.0" edition = "2021" [dependencies] -# The code generated by roslibrust_codegen has dependendencies -# We need to depend on the crate at build time so that the generate code has access to these dependencies -roslibrust_common = { path = "../roslibrust_common" } -# THIS SHOULDN'T BE NEEDED, BUT IS FOR NOW GOTTA FIX LEAKING DEPENDENCIES -roslibrust_codegen = { path = "../roslibrust_codegen" } +# Example uses rosbridge backend, but any could be substituted in +# We do need the codegen feature as the types that are generated in build.rs require types from codegen +roslibrust = { path = "../roslibrust", features = ["rosbridge", "codegen"] } +tokio = { version = "1.42", features = ["sync", "macros"] } + +[dev-dependencies] +# Tests use the mock backend from roslibrust +roslibrust = { path = "../roslibrust", features = ["mock"] } +# Tests also use test-util to pause time +tokio = { version = "1.42", features = ["test-util"] } [build-dependencies] # We depend on codegen as a build dependency as we invoke it in build.rs -roslibrust_codegen = { path = "../roslibrust_codegen" } +roslibrust = { path = "../roslibrust", features = ["codegen"] } # This crate is very helpful for build.rs files but not required cargo-emit = "0.2" \ No newline at end of file diff --git a/example_package/build.rs b/example_package/build.rs index 92939b03..81052f1f 100644 --- a/example_package/build.rs +++ b/example_package/build.rs @@ -18,7 +18,7 @@ fn main() -> Result<(), Box> { // What we get back is a TokenStream the type normally returned by a proc_macro in rust. // For a build.rs we typically want to serialize this data to a file for later import let (source, dependent_paths) = - roslibrust_codegen::find_and_generate_ros_messages_without_ros_package_path(p)?; + roslibrust::codegen::find_and_generate_ros_messages_without_ros_package_path(p)?; // It is important for build scripts to only output files to OUT_DIR. // This guidance can be ignored for end applications. However, crates published and downloaded with cargo diff --git a/example_package/src/main.rs b/example_package/src/main.rs index 3e2db88f..438b43bb 100644 --- a/example_package/src/main.rs +++ b/example_package/src/main.rs @@ -5,18 +5,81 @@ // messages via `use` include!(concat!(env!("OUT_DIR"), "/messages.rs")); -// Example of 'use' pointing to code created by the include! macro -mod submodule { - #[allow(unused_imports)] - use crate::std_msgs::Header; +// Important to bring traits we need into scope from roslibrust +// In this case we need to the Publish trait in scope so we can access the .publish() function on our Publisher +use roslibrust::Publish; + +// Writing a simple behavior that uses the generic traits from roslibrust +// and the generated types from the macro above. +async fn pub_counter(ros: impl roslibrust::TopicProvider) { + let publisher = ros + .advertise::("example_counter") + .await + .unwrap(); + let mut counter = 0; + loop { + publisher + .publish(&std_msgs::Int16 { data: counter }) + .await + .unwrap(); + println!("Published {counter}"); + counter += 1; + tokio::time::sleep(std::time::Duration::from_secs(1)).await; + } } // Our actual "main" here doesn't do much, just shows the generate types // are here and real. -fn main() { - // Note: within our assets there is a folder named ros1_test_msgs which contains a ros package - // The ros package in its package.xml refers to the name of that package as test_msgs - // The module that is generated will use the name in package.xml and not the directory - let data = test_msgs::Constants::TEST_STR; - println!("Hello World! {data}"); +#[tokio::main] +async fn main() { + // Create a rosbridge client we can use + let ros = roslibrust::rosbridge::ClientHandle::new("ws://localhost:9090") + .await + .unwrap(); + // Start our behavior while waiting for ctrl_c + tokio::select! { + _ = pub_counter(ros) => {} + _ = tokio::signal::ctrl_c() => {} + } +} + +// Setup a test of our pub_counter behavior +#[cfg(test)] +mod test { + use super::*; + use roslibrust::{Subscribe, TopicProvider}; + + #[tokio::test] + async fn test_pub_counter() { + // See: https://tokio.rs/tokio/topics/testing + // This test doesn't take 1 second to run even thou it looks like it should! + // Tokio simulates time in tests if you call pause() + // This test takes 0.00s to run on a reasonable machine + tokio::time::pause(); + let ros = roslibrust::mock::MockRos::new(); + + // Subscribe to the topic we're publishing to + let mut subscriber = ros + .subscribe::("example_counter") + .await + .unwrap(); + + // Start publishing in the background + tokio::spawn(async move { pub_counter(ros).await }); + + // Confirm we get the first message + let msg = subscriber.next().await.unwrap(); + assert_eq!(msg.data, 0); + + // Confirm second message quickly times out + let msg = + tokio::time::timeout(tokio::time::Duration::from_millis(10), subscriber.next()).await; + assert!(msg.is_err()); + + // Wait a bit + tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; + // Now get second message + let msg = subscriber.next().await.unwrap(); + assert_eq!(msg.data, 1); + } } diff --git a/example_package_macro/Cargo.toml b/example_package_macro/Cargo.toml index 1b0e89ae..e583e705 100644 --- a/example_package_macro/Cargo.toml +++ b/example_package_macro/Cargo.toml @@ -4,11 +4,13 @@ version = "0.1.0" edition = "2021" [dependencies] -# The code generated by roslibrust_codegen has dependendencies -# We need to depend on the crate at build time so that the generate code has access to these dependencies -# TODO figure out how to rexport these types through the macro -roslibrust_common = { path = "../roslibrust_common" } -# This crate contains the actual macro we will invoke -roslibrust_codegen_macro = { path = "../roslibrust_codegen_macro" } -# THIS SHOULDN'T BE NEEDED, BUT IS FOR NOW GOTTA FIX LEAKING DEPENDENCIES -roslibrust_codegen = { path = "../roslibrust_codegen" } \ No newline at end of file +# We're depending on the macro feature (which will also provide codegen transitively) +# and the mock backend so we can test our node +roslibrust = { path = "../roslibrust", features = ["macro", "rosbridge"] } +tokio = { version = "1.42", features = ["sync", "macros"] } + +[dev-dependencies] +# For tests we need to macro still, and the mock backend +roslibrust = { path = "../roslibrust", features = ["macro", "mock"] } +# We use test-util to pause time in our test +tokio = { version = "1.42", features = ["test-util"] } diff --git a/example_package_macro/README.md b/example_package_macro/README.md index 63122d24..9b2351d9 100644 --- a/example_package_macro/README.md +++ b/example_package_macro/README.md @@ -1,5 +1,12 @@ # Example RosLibRust Package -The point of this package is provide a good example of how to integrate roslibrust into a package using the proc macro. +The point of this package is provide a good example of how to integrate roslibrust into a package using the proc macro, +and shows good style on how to use roslibrust's generic traits. -This package also serves as a testbed for maintainers of roslibrust to refine proc macro integration. +Use `cargo run` to run the example and see it publish messages to a topic. + +The example will fail if an instance of rosbridge is not running on port 9090. + +Use `cargo test` to run the example's tests. + +Note: the test runs in 0.00s on a reasonable machine due to the use of tokio's time mocking feature. diff --git a/example_package_macro/src/main.rs b/example_package_macro/src/main.rs index 1fe8dc23..4c8440bb 100644 --- a/example_package_macro/src/main.rs +++ b/example_package_macro/src/main.rs @@ -1,20 +1,86 @@ -roslibrust_codegen_macro::find_and_generate_ros_messages!( +// Important to bring the traits we're using into scope +// In this case we need access to the .publish() function on our returned Publisher type from the advertise call +use roslibrust::Publish; + +// We're using the macro to generate our types +// We provide the macro with additional search paths beyond the ROS_PACKAGE_PATH +// The paths are assumed to be relative to the crate (or workspace) root +roslibrust::find_and_generate_ros_messages!( "assets/ros1_test_msgs", "assets/ros1_common_interfaces" ); -// Example of 'use' pointing to code created by the include! macro -mod submodule { - #[allow(unused_imports)] - use crate::std_msgs::Header; +// Writing a simple behavior that uses the generic traits from roslibrust +// and the generated types from the macro above. +async fn pub_counter(ros: impl roslibrust::TopicProvider) { + let publisher = ros + .advertise::("example_counter") + .await + .unwrap(); + let mut counter = 0; + loop { + publisher + .publish(&std_msgs::Int16 { data: counter }) + .await + .unwrap(); + println!("Published {counter}"); + counter += 1; + tokio::time::sleep(std::time::Duration::from_secs(1)).await; + } } // Our actual "main" here doesn't do much, just shows the generate types // are here and real. -fn main() { - // Note: within our assets there is a folder named ros1_test_msgs which contains a ros package - // The ros package in its package.xml refers to the name of that package as test_msgs - // The module that is generated will use the name in package.xml and not the directory - let data = test_msgs::Constants::TEST_STR; - println!("Hello World! {data}"); +#[tokio::main] +async fn main() { + // Create a rosbridge client we can use + let ros = roslibrust::rosbridge::ClientHandle::new("ws://localhost:9090") + .await + .unwrap(); + // Start our behavior while waiting for ctrl_c + tokio::select! { + _ = pub_counter(ros) => {} + _ = tokio::signal::ctrl_c() => {} + } +} + +// Setup a test of our pub_counter behavior +#[cfg(test)] +mod test { + use super::*; + use roslibrust::{Subscribe, TopicProvider}; + + #[tokio::test] + async fn test_pub_counter() { + // See: https://tokio.rs/tokio/topics/testing + // This test doesn't take 1 second to run even thou it looks like it should! + // Tokio simulates time in tests if you call pause() + // This test takes 0.00s to run on a reasonable machine + tokio::time::pause(); + let ros = roslibrust::mock::MockRos::new(); + + // Subscribe to the topic we're publishing to + let mut subscriber = ros + .subscribe::("example_counter") + .await + .unwrap(); + + // Start publishing in the background + tokio::spawn(async move { pub_counter(ros).await }); + + // Confirm we get the first message + let msg = subscriber.next().await.unwrap(); + assert_eq!(msg.data, 0); + + // Confirm second message quickly times out + let msg = + tokio::time::timeout(tokio::time::Duration::from_millis(10), subscriber.next()).await; + assert!(msg.is_err()); + + // Wait a bit + tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; + // Now get second message + let msg = subscriber.next().await.unwrap(); + assert_eq!(msg.data, 1); + } } diff --git a/roslibrust/Cargo.toml b/roslibrust/Cargo.toml index 3415942c..9fd85ac3 100644 --- a/roslibrust/Cargo.toml +++ b/roslibrust/Cargo.toml @@ -11,13 +11,13 @@ keywords = ["ROS", "robotics", "websocket", "json", "async"] categories = ["science::robotics"] [dependencies] -# TODO versions here roslibrust_common = { path = "../roslibrust_common" } roslibrust_ros1 = { path = "../roslibrust_ros1", optional = true } roslibrust_rosbridge = { path = "../roslibrust_rosbridge", optional = true } roslibrust_zenoh = { path = "../roslibrust_zenoh", optional = true } roslibrust_mock = { path = "../roslibrust_mock", optional = true } -roslibrust_rosapi = { path = "../roslibrust_rosapi", optional = true } +roslibrust_codegen = { path = "../roslibrust_codegen", optional = true } +roslibrust_codegen_macro = { path = "../roslibrust_codegen_macro", optional = true } [dev-dependencies] env_logger = "0.11" @@ -29,19 +29,16 @@ serde = { workspace = true } # Used to generate messages for the examples roslibrust_codegen = { path = "../roslibrust_codegen" } roslibrust_codegen_macro = { path = "../roslibrust_codegen_macro" } +# Slightly weird, but used in documentation examples +roslibrust_test = { path = "../roslibrust_test" } +# Slightly weird, but used in documentation examples +zenoh = "1.0" [features] +# default feature is pure traits only with no implementations default = [] -# Note: all does not include running_bridge as that is only intended for CI -all = [] -# Provides a rosapi rust interface -rosapi = ["roslibrust_rosapi"] -# Intended for use with tests, includes tests that rely on a locally running rosbridge -running_bridge = [] -# For use with integration tests, indicating we are testing integration with a ros1 bridge -ros1_test = ["running_bridge", "ros1"] -# For use with integration tests, indicates we are testing integration with a ros2 bridge -ros2_test = ["running_bridge"] +# `all` enables all "useful" features to end users, other features are for testing purposes +all = ["codegen", "macro", "ros1", "rosbridge", "zenoh", "mock"] # Provides a ros1 xmlrpc / TCPROS client ros1 = ["roslibrust_ros1"] # Provides a backend using the rosbridge websocket protocol @@ -50,6 +47,17 @@ rosbridge = ["roslibrust_rosbridge"] zenoh = ["roslibrust_zenoh"] # Provides a mock backend useful for writing tests around nodes mock = ["roslibrust_mock"] +# Provides a macro for generating types from ROS messages +codegen = ["roslibrust_codegen"] +# Provides macros for generating types from ROS messages +macro = ["roslibrust_codegen_macro", "codegen"] +## Features below here are for testing purposes +# Intended for use with tests, includes tests that rely on a locally running rosbridge +running_bridge = [] +# For use with integration tests, indicating we are testing integration with a ros1 bridge +ros1_test = ["running_bridge", "ros1"] +# For use with integration tests, indicates we are testing integration with a ros2 bridge +ros2_test = ["running_bridge"] [package.metadata.docs.rs] -features = ["ros1"] +features = ["all"] diff --git a/roslibrust/examples/generic_client_services.rs b/roslibrust/examples/generic_client_services.rs index f755e863..c459c9f4 100644 --- a/roslibrust/examples/generic_client_services.rs +++ b/roslibrust/examples/generic_client_services.rs @@ -25,6 +25,7 @@ async fn main() { } // Basic example of a node that publishes and subscribes to itself + // This node will work with any backend impl MyNode { fn handle_service( _request: std_srvs::SetBoolRequest, @@ -63,6 +64,7 @@ async fn main() { } } + // Use our generic node with the rosbridge backend // create a rosbridge handle and start node let ros = roslibrust::rosbridge::ClientHandle::new("ws://localhost:9090") .await @@ -70,6 +72,7 @@ async fn main() { let node = MyNode { ros }; tokio::spawn(async move { node.run().await }); + // Use our generic node with the ros1 backend // create a ros1 handle and start node let ros = roslibrust::ros1::NodeHandle::new("http://localhost:11311", "/my_node") .await diff --git a/roslibrust/examples/basic_publisher.rs b/roslibrust/examples/rosbridge_basic_publisher.rs similarity index 100% rename from roslibrust/examples/basic_publisher.rs rename to roslibrust/examples/rosbridge_basic_publisher.rs diff --git a/roslibrust/examples/calling_service.rs b/roslibrust/examples/rosbridge_calling_service.rs similarity index 100% rename from roslibrust/examples/calling_service.rs rename to roslibrust/examples/rosbridge_calling_service.rs diff --git a/roslibrust/examples/ros1_ros2_bridge_example.rs b/roslibrust/examples/rosbridge_ros1_ros2_bridge_example.rs similarity index 100% rename from roslibrust/examples/ros1_ros2_bridge_example.rs rename to roslibrust/examples/rosbridge_ros1_ros2_bridge_example.rs diff --git a/roslibrust/examples/service_server.rs b/roslibrust/examples/rosbridge_service_server.rs similarity index 100% rename from roslibrust/examples/service_server.rs rename to roslibrust/examples/rosbridge_service_server.rs diff --git a/roslibrust/examples/subscribe_and_log.rs b/roslibrust/examples/rosbridge_subscribe_and_log.rs similarity index 100% rename from roslibrust/examples/subscribe_and_log.rs rename to roslibrust/examples/rosbridge_subscribe_and_log.rs diff --git a/roslibrust/src/lib.rs b/roslibrust/src/lib.rs index 5c572ee1..91f12543 100644 --- a/roslibrust/src/lib.rs +++ b/roslibrust/src/lib.rs @@ -1,110 +1,8 @@ -//! A crate for interfacing to ROS (the Robot Operating System) via the [rosbridge_suite](http://wiki.ros.org/rosbridge_suite) -//! -//! # Introduction -//! This crate is designed to provide a convenient API for interfacing between Rust and ROS. -//! This crate prioritizes ergonomics and ease-of-use over performance, while leveraging Rust's -//! exceptional type system and memory guarantees to ensure correctness. -//! -//! See the README.md to learn about the future of this crate. -//! -//! ## Why Use This Crate? -//! Do you have a fleet of systems distributed around a factory, city, nation, or solar system? Do you want to write a system -//! for managing that fleet? Problems this crate solves for you: -//! - Rust is better than C++, Easier to test than Python, and well suited for cloud services -//! - Native ROS communication is PITA for firewalls / VPNs, rosbridge is much easier to deal with when remote -//! - Don't write your own REST API or leave your comfortable ROS style abstractions. Listen to the same messages, and call the same -//! services you would if you were local -//! - Deal with multiple versions of a message definition by utilizing Rust enums, optional fields, and other serde directives -//! - Run a single process on a single server that can slurp data from 100's of your systems efficiently and without bottlenecks -//! -//! ### Why not use rosrust? -//! rosrust is a completely valid alternative to this crate! The reasons to use this crate are the same reasons why people use rosbridge -//! in general: -//! - rosbridge is served on a single port meaning it can more easily be exposed through docker or firewalls -//! - rosbirdge's JSON encoding makes it possible to work with multiple versions of a ROS message at the same time. A custom written -//! message type that utilizes enums / optional fields allows a rust client to deal with version differences amongst a fleet of -//! systems -//! - async. rosrust was written before async/.await was standardized in rust an is fundamentally a synchronous paradigm. This makes -//! it much more difficult to leverage Rust's "fearless concurrency" than with `roslibrust` -//! -//! ### Is rosbridge slower? -//! Yes! Your mileage may vary. This crate is much more designed for low bandwidth communication with a large fleet of systems than -//! writing high performance nodes designed to run locally. -//! -//! ## Message Generation -//! Message generation is provided in two APIs. The first, which is visible in `roslibrust/examples`, is a proc-macro which can be invoked to generate ROS message structs in place: -//! ```ignore -//! use roslibrust_codegen_macro::find_and_generate_ros_messages; -//! find_and_generate_ros_messages!(); -//! ``` -//! If you have ROS installed, this macro will search for message files under paths in the `ROS_PACKAGE_PATH`. If you do not have ROS installed in your environment, you can specify search paths explicitly: -//! ```ignore -//! use roslibrust_codegen_macro::find_and_generate_ros_messages; -//! find_and_generate_ros_messages!("/path/to/noetic/packages", "/path/to/my/packages"); -//! ``` -//! It's important to note that these macros have no way to know when the messages in the search paths change and changes to your msg and srv files won't trigger a re-compile. These macros are most useful if they're embedded directly in code that needs to use it (i.e. examples, one-off nodes that need to talk to an external ROS system). -//! If you want to commit the generated code or create a crate that contains the generated messages, you should use the second mechanism; a library under the optional `codegen` feature of `roslibrust`. The proc-macro is a thin wrapper around this function so the results will be the same. -//! An example of invoking it can be found in `roslibrust_test/src/main.rs`, but it's very similar to the macro example: -//! ``` -//! use roslibrust_codegen::find_and_generate_ros_messages; -//! let output = find_and_generate_ros_messages(vec![]); -//! // OR -//! let output = find_and_generate_ros_messages(vec!["/path/to/noetic/packages".into()]); -//! ``` -//! An example of the output based on message and service files in this repo can be found under `roslibrust_test/src/lib.rs`. -//! -//! A full example of incorporating code generation into a project with a build.rs file can be found in example_project. -//! This is the recommended method of incorporating code generation, as this allows automatic detection and re-building -//! when message files are edited which is not possible with the proc_macro approach. -//! -//! ## How Does It Work? -//! When you create a new client via ClientHandle::new() or ClientHandle::new_with_options() a new connection to rosbridge is created. -//! This new connection is literally opening a new Websocket. A specific "stubborn spin" tokio task is created which handles reading -//! from the websocket, and automatically connecting / reconnecting if communication is interrupted. -//! -//! This central stubborn_spin task has the only access to the -read- half of the websocket and is constantly .await'ing any new messages -//! on the websocket connection. When a new message is received from rosbridge it does its best to dispatch it to the relevant entities -//! that are registered with the Client. -//! -//! It is completely valid and recommended to clone() ClientHandle to pass access around your application, in fact many of the types -//! returned by roslibrust include clones of the client handle within them to enable functionality like automatically de-registering -//! when dropped. It is not recommended, although completely valid, to create multiple new clients to the same rosbridge server as -//! the additional websockets created add overhead to both roslibrust and rosbridge. -//! -//! ### How Subscribers Work -//! Each time subscribe is called, a new queue for that subscriber is created. When a `publish` message is received from rosbridge, -//! the message is duplicated and inserted into the queue for *each* subscriber. This means if you call subscribe multiple times -//! on the same topic, each of the returned subscribers will receive a copy of every message. Currently, the size of the queue for -//! every publisher is hardcoded to 1_000 messages control of this will be provided in a future version. -//! -//! If the queue for a subscriber is full and a new message arrives the central spin task will not block but simply drop that message -//! for that subscriber (warnings will be logged). -//! -//! Internally roslibrust type-erases the type that `subscribe` is called with an stores a callback where the deserialization -//! is embedded within the callback. Roslibrust does not check that the type that subscribe is called with matches the type of the topic. -//! If an incorrect type is used, each time a message is received on the topic it will fail to de-serialize and an error will be emitted -//! by the subscriber. This can be useful when building client designed to work with multiple different versions of a message definition. -//! -//! When the subscriber returned from the subscribe call is dropped it removes is queue from the client. When the last subscriber -//! on a given topic dropped the client will automatically unsubscribe from the topic with rosbridge. -//! -//! ### How Publishers Work -//! When advertise is called a publisher an advertise message is sent to rosbridge_server and a publisher returned. -//! Dropping the publisher will automatically unadvertise the topic. -//! roslibrust currently does not support multiple publishers / multiple advertises for a single topic. -//! -//! ### How Service Servers Work -//! When advertise service is called you must pass into it a callback conforming to the libraries requirements. -//! Specifically, roslibrust attempts to follow "good" ros error handling convention and be as compatible as possible -//! with various error types; however, due to the async nature of the crate `Box` is needed. +#![doc = include_str!("../../README.md")] // Re-export common types and traits under the roslibrust namespace pub use roslibrust_common::*; -// If the rosapi feature is enabled, export the roslibrust_rosapi crate under rosapi -#[cfg(feature = "rosapi")] -pub use roslibrust_rosapi as rosapi; - // If the ros1 feature is enabled, export the roslibrust_ros1 crate under ros1 #[cfg(feature = "ros1")] pub use roslibrust_ros1 as ros1; @@ -115,8 +13,19 @@ pub use roslibrust_rosbridge as rosbridge; // If the zenoh feature is enabled, export the roslibrust_zenoh crate under zenoh #[cfg(feature = "zenoh")] +/// Test doc? pub use roslibrust_zenoh as zenoh; // If the mock feature is enabled, export the roslibrust_mock crate under mock #[cfg(feature = "mock")] pub use roslibrust_mock as mock; + +// If the codegen feature is enabled, export the roslibrust_codegen crate under codegen +#[cfg(feature = "codegen")] +pub use roslibrust_codegen as codegen; + +// If the macro feature is enabled, export the roslibrust_codegen_macros directly +#[cfg(feature = "macro")] +pub use roslibrust_codegen_macro::find_and_generate_ros_messages; +#[cfg(feature = "macro")] +pub use roslibrust_codegen_macro::find_and_generate_ros_messages_without_ros_package_path; diff --git a/roslibrust_codegen/src/gen.rs b/roslibrust_codegen/src/gen.rs index c5b9ae03..1d11df29 100644 --- a/roslibrust_codegen/src/gen.rs +++ b/roslibrust_codegen/src/gen.rs @@ -11,13 +11,13 @@ use crate::{ConstantInfo, FieldInfo, MessageFile, RosLiteral, ServiceFile}; fn derive_attrs() -> Vec { vec![ - parse_quote! { #[derive(::roslibrust_codegen::Deserialize)] }, - parse_quote! { #[derive(::roslibrust_codegen::Serialize)] }, - parse_quote! { #[derive(::roslibrust_codegen::SmartDefault)] }, + parse_quote! { #[derive(::roslibrust::codegen::Deserialize)] }, + parse_quote! { #[derive(::roslibrust::codegen::Serialize)] }, + parse_quote! { #[derive(::roslibrust::codegen::SmartDefault)] }, parse_quote! { #[derive(Debug)] }, parse_quote! { #[derive(Clone)] }, parse_quote! { #[derive(PartialEq)] }, - parse_quote! { #[serde(crate = "::roslibrust_codegen::serde")] }, + parse_quote! { #[serde(crate = "::roslibrust::codegen::serde")] }, ] } @@ -42,7 +42,7 @@ pub fn generate_service(service: ServiceFile) -> Result { pub struct #struct_name { } - impl ::roslibrust_common::RosServiceType for #struct_name { + impl ::roslibrust::RosServiceType for #struct_name { const ROS_SERVICE_NAME: &'static str = #service_type_name; const MD5SUM: &'static str = #service_md5sum; type Request = #request_name; @@ -99,7 +99,7 @@ pub fn generate_struct(msg: MessageFile) -> Result { #(#fields )* } - impl ::roslibrust_common::RosMessageType for #struct_name { + impl ::roslibrust::RosMessageType for #struct_name { const ROS_TYPE_NAME: &'static str = #ros_type_name; const MD5SUM: &'static str = #md5sum; const DEFINITION: &'static str = #raw_message_definition; @@ -193,13 +193,13 @@ fn generate_field_definition( // Special case for Vec, which massively benefit from optimizations in serde_bytes // This makes deserializing an Image ~97% faster if field.field_type.field_type == "uint8" { - quote! { #[serde(with = "::roslibrust_codegen::serde_bytes")] } + quote! { #[serde(with = "::roslibrust::codegen::serde_bytes")] } } else { quote! {} } } Some(Some(fixed_array_len)) if fixed_array_len > MAX_FIXED_ARRAY_LEN => { - quote! { #[serde(with = "::roslibrust_codegen::BigArray")] } + quote! { #[serde(with = "::roslibrust::codegen::BigArray")] } } _ => quote! {}, }; diff --git a/roslibrust_codegen/src/parse/mod.rs b/roslibrust_codegen/src/parse/mod.rs index ee716014..4186aaf9 100644 --- a/roslibrust_codegen/src/parse/mod.rs +++ b/roslibrust_codegen/src/parse/mod.rs @@ -26,8 +26,9 @@ lazy_static::lazy_static! { ("float32", "f32"), ("float64", "f64"), ("string", "::std::string::String"), - ("time", "::roslibrust_codegen::integral_types::Time"), - ("duration", "::roslibrust_codegen::integral_types::Duration"), + // TODO we should really get these namespaces out of here + ("time", "::roslibrust::codegen::integral_types::Time"), + ("duration", "::roslibrust::codegen::integral_types::Duration"), ].into_iter().collect(); pub static ref ROS_2_TYPE_TO_RUST_TYPE_MAP: HashMap<&'static str, &'static str> = vec![ @@ -45,8 +46,9 @@ lazy_static::lazy_static! { ("float32", "f32"), ("float64", "f64"), ("string", "::std::string::String"), - ("builtin_interfaces/Time", "::roslibrust_codegen::integral_types::Time"), - ("builtin_interfaces/Duration", "::roslibrust_codegen::integral_types::Duration"), + // TODO we should really get these namespaces out of here + ("builtin_interfaces/Time", "::roslibrust::codegen::integral_types::Time"), + ("builtin_interfaces/Duration", "::roslibrust::codegen::integral_types::Duration"), // ("wstring", TODO), ].into_iter().collect(); } diff --git a/roslibrust_common/src/lib.rs b/roslibrust_common/src/lib.rs index 085190df..c7aefd29 100644 --- a/roslibrust_common/src/lib.rs +++ b/roslibrust_common/src/lib.rs @@ -59,8 +59,10 @@ impl RosMessageType for () { const DEFINITION: &'static str = ""; } -/// Fundamental traits for service types this crate works with -/// This trait will be satisfied for any services definitions generated with this crate's message_gen functionality +/// Represents a ROS service type definition corresponding to a `.srv` file. +/// +/// Typically this trait will not be implemented by hand but instead be generated by using [roslibrust's codegen functionality][]. +/// This trait is used by the [ServiceProvider] trait to define types that can be used with [ServiceProvider::call_service] and [ServiceProvider::advertise_service] pub trait RosServiceType: 'static + Send + Sync { /// Name of the ros service e.g. `rospy_tutorials/AddTwoInts` const ROS_SERVICE_NAME: &'static str; diff --git a/roslibrust_common/src/md5sum.rs b/roslibrust_common/src/md5sum.rs index a7fdd4dd..ba90152f 100644 --- a/roslibrust_common/src/md5sum.rs +++ b/roslibrust_common/src/md5sum.rs @@ -6,7 +6,7 @@ use std::collections::{HashMap, HashSet}; /// The expanded message definition is the output of `gendeps --cat` see: /// This definition is typically sent in the connection header of a ros1 topic and is also stored in bag files. /// This can be used to calculate the md5sum when message definitions aren't available at compile time. -pub fn message_definition_to_md5sum(msg_name: &str, full_def: &str) -> Result { +pub fn from_message_definition(msg_name: &str, full_def: &str) -> Result { if full_def.is_empty() { bail!("empty input definition"); } @@ -186,20 +186,20 @@ mod tests { { let msg_type = "bad_msgs/Empty"; let def = ""; - let _md5sum = message_definition_to_md5sum(msg_type.into(), def.into()).unwrap_err(); + let _md5sum = from_message_definition(msg_type.into(), def.into()).unwrap_err(); } { let msg_type = "bad_msgs/CommentSpacesOnly"; let def = "# message with only comments and whitespace\n# another line comment\n\n \n"; - let _md5sum = message_definition_to_md5sum(msg_type.into(), def.into()).unwrap_err(); + let _md5sum = from_message_definition(msg_type.into(), def.into()).unwrap_err(); } { let msg_type = "fake_msgs/MissingSectionMsg"; let def = "string name\nstring msg\n================================================================================\n# message with only comments and whitespace\n# another line comment\n\n \n"; - let _md5sum = message_definition_to_md5sum(msg_type.into(), def.into()).unwrap_err(); + let _md5sum = from_message_definition(msg_type.into(), def.into()).unwrap_err(); } { @@ -226,7 +226,7 @@ uint32 seq #Two-integer timestamp that is expressed as: time stamp "; - let _md5sum = message_definition_to_md5sum(msg_type.into(), def.into()).unwrap_err(); + let _md5sum = from_message_definition(msg_type.into(), def.into()).unwrap_err(); } { @@ -234,7 +234,7 @@ time stamp let expected = "96c44a027b586ee888fe95ac325151ae"; let msg_type = "fake_msgs/CommentSpacesOnlySection"; let def = "string name\nstring msg\n================================================================================\nMSG: foo/bar\n# message with only comments and whitespace\n# another line comment\n\n \n"; - let md5sum = message_definition_to_md5sum(msg_type.into(), def.into()).unwrap(); + let md5sum = from_message_definition(msg_type.into(), def.into()).unwrap(); println!("{msg_type}, computed {md5sum}, expected {expected}"); assert_eq!(md5sum, expected, "{msg_type}"); } @@ -253,7 +253,7 @@ f vjk "#; - let _md5sum = message_definition_to_md5sum(msg_type.into(), def.into()).unwrap_err(); + let _md5sum = from_message_definition(msg_type.into(), def.into()).unwrap_err(); } // TODO(lucasw) it would be nice to pull these out of the real messages, but to avoid @@ -441,7 +441,7 @@ bool do_rectify "#; let expected = "c9a58c1b0b154e0e6da7578cb991d214"; - let md5sum = message_definition_to_md5sum(msg_type, def.into()).unwrap(); + let md5sum = from_message_definition(msg_type, def.into()).unwrap(); println!("{msg_type}, computed {md5sum}, expected {expected}"); assert_eq!(md5sum, expected, "{msg_type}"); } @@ -450,7 +450,7 @@ bool do_rectify let msg_type = "std_msgs/Header"; let def = "# Standard metadata for higher-level stamped data types.\n# This is generally used to communicate timestamped data \n# in a particular coordinate frame.\n# \n# sequence ID: consecutively increasing ID \nuint32 seq\n#Two-integer timestamp that is expressed as:\n# * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable is called 'secs')\n# * stamp.nsec: nanoseconds since stamp_secs (in Python the variable is called 'nsecs')\n# time-handling sugar is provided by the client library\ntime stamp\n#Frame this data is associated with\nstring frame_id\n"; let expected = "2176decaecbce78abc3b96ef049fabed"; - let md5sum = message_definition_to_md5sum(msg_type, def.into()).unwrap(); + let md5sum = from_message_definition(msg_type, def.into()).unwrap(); println!("{msg_type}, computed {md5sum}, expected {expected}"); assert_eq!(md5sum, expected, "{msg_type}"); } @@ -459,7 +459,7 @@ bool do_rectify let msg_type = "rosgraph_msgs/Log"; let def = "##\n## Severity level constants\n##\nbyte DEBUG=1 #debug level\nbyte INFO=2 #general level\nbyte WARN=4 #warning level\nbyte ERROR=8 #error level\nbyte FATAL=16 #fatal/critical level\n##\n## Fields\n##\nHeader header\nbyte level\nstring name # name of the node\nstring msg # message \nstring file # file the message came from\nstring function # function the message came from\nuint32 line # line the message came from\nstring[] topics # topic names that the node publishes\n\n================================================================================\nMSG: std_msgs/Header\n# Standard metadata for higher-level stamped data types.\n# This is generally used to communicate timestamped data \n# in a particular coordinate frame.\n# \n# sequence ID: consecutively increasing ID \nuint32 seq\n#Two-integer timestamp that is expressed as:\n# * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable is called 'secs')\n# * stamp.nsec: nanoseconds since stamp_secs (in Python the variable is called 'nsecs')\n# time-handling sugar is provided by the client library\ntime stamp\n#Frame this data is associated with\nstring frame_id\n"; let expected = "acffd30cd6b6de30f120938c17c593fb"; - let md5sum = message_definition_to_md5sum(msg_type, def.into()).unwrap(); + let md5sum = from_message_definition(msg_type, def.into()).unwrap(); println!("{msg_type}, computed {md5sum}, expected {expected}"); assert_eq!(md5sum, expected, "{msg_type}"); } @@ -468,7 +468,7 @@ bool do_rectify let msg_type = "nav_msgs/Odometry"; let def = "# This represents an estimate of a position and velocity in free space. \n# The pose in this message should be specified in the coordinate frame given by header.frame_id.\n# The twist in this message should be specified in the coordinate frame given by the child_frame_id\nHeader header\nstring child_frame_id\ngeometry_msgs/PoseWithCovariance pose\ngeometry_msgs/TwistWithCovariance twist\n\n================================================================================\nMSG: std_msgs/Header\n# Standard metadata for higher-level stamped data types.\n# This is generally used to communicate timestamped data \n# in a particular coordinate frame.\n# \n# sequence ID: consecutively increasing ID \nuint32 seq\n#Two-integer timestamp that is expressed as:\n# * stamp.sec: seconds (stamp_secs) since epoch (in Python the variable is called 'secs')\n# * stamp.nsec: nanoseconds since stamp_secs (in Python the variable is called 'nsecs')\n# time-handling sugar is provided by the client library\ntime stamp\n#Frame this data is associated with\nstring frame_id\n\n================================================================================\nMSG: geometry_msgs/PoseWithCovariance\n# This represents a pose in free space with uncertainty.\n\nPose pose\n\n# Row-major representation of the 6x6 covariance matrix\n# The orientation parameters use a fixed-axis representation.\n# In order, the parameters are:\n# (x, y, z, rotation about X axis, rotation about Y axis, rotation about Z axis)\nfloat64[36] covariance\n\n================================================================================\nMSG: geometry_msgs/Pose\n# A representation of pose in free space, composed of position and orientation. \nPoint position\nQuaternion orientation\n\n================================================================================\nMSG: geometry_msgs/Point\n# This contains the position of a point in free space\nfloat64 x\nfloat64 y\nfloat64 z\n\n================================================================================\nMSG: geometry_msgs/Quaternion\n# This represents an orientation in free space in quaternion form.\n\nfloat64 x\nfloat64 y\nfloat64 z\nfloat64 w\n\n================================================================================\nMSG: geometry_msgs/TwistWithCovariance\n# This expresses velocity in free space with uncertainty.\n\nTwist twist\n\n# Row-major representation of the 6x6 covariance matrix\n# The orientation parameters use a fixed-axis representation.\n# In order, the parameters are:\n# (x, y, z, rotation about X axis, rotation about Y axis, rotation about Z axis)\nfloat64[36] covariance\n\n================================================================================\nMSG: geometry_msgs/Twist\n# This expresses velocity in free space broken into its linear and angular parts.\nVector3 linear\nVector3 angular\n\n================================================================================\nMSG: geometry_msgs/Vector3\n# This represents a vector in free space. \n# It is only meant to represent a direction. Therefore, it does not\n# make sense to apply a translation to it (e.g., when applying a \n# generic rigid transformation to a Vector3, tf2 will only apply the\n# rotation). If you want your data to be translatable too, use the\n# geometry_msgs/Point message instead.\n\nfloat64 x\nfloat64 y\nfloat64 z"; let expected = "cd5e73d190d741a2f92e81eda573aca7"; - let md5sum = message_definition_to_md5sum(msg_type, def.into()).unwrap(); + let md5sum = from_message_definition(msg_type, def.into()).unwrap(); println!("{msg_type}, computed {md5sum}, expected {expected}"); assert_eq!(md5sum, expected); } @@ -537,7 +537,7 @@ float64 w "#; let expected = "94810edda583a504dfda3829e70d7eec"; - let md5sum = message_definition_to_md5sum(msg_type, def.into()).unwrap(); + let md5sum = from_message_definition(msg_type, def.into()).unwrap(); println!("{msg_type}, computed {md5sum}, expected {expected}"); assert_eq!(md5sum, expected); } @@ -722,7 +722,7 @@ uint32 count # How many elements in the field "#; let expected = "05c51d9aea1fb4cfdc8effb94f197b6f"; - let md5sum = message_definition_to_md5sum(msg_type, def.into()).unwrap(); + let md5sum = from_message_definition(msg_type, def.into()).unwrap(); println!("{msg_type}, computed {md5sum}, expected {expected}"); assert_eq!(md5sum, expected, "{msg_type}"); } diff --git a/roslibrust_mock/Cargo.toml b/roslibrust_mock/Cargo.toml index 5c882c56..2cb758dd 100644 --- a/roslibrust_mock/Cargo.toml +++ b/roslibrust_mock/Cargo.toml @@ -12,5 +12,5 @@ bincode = "1.3" log = { workspace = true } [dev-dependencies] -roslibrust_codegen = { path = "../roslibrust_codegen" } -roslibrust_codegen_macro = { path = "../roslibrust_codegen_macro" } +# Used for message definitions in tests +roslibrust_test = { path = "../roslibrust_test" } diff --git a/roslibrust_mock/src/lib.rs b/roslibrust_mock/src/lib.rs index 9430b17c..dd1511ef 100644 --- a/roslibrust_mock/src/lib.rs +++ b/roslibrust_mock/src/lib.rs @@ -1,3 +1,31 @@ +//! A mock implementation of roslibrust's generic traits useful for testing ROS behaviors. +//! +//! It is not recommended to depend on this crate directly, but instead access it via roslibrust with the `mock` feature enabled. +//! +//! ``` +//! // Normally accessed as roslibrust::{Result, TopicProvider, Publish} +//! use roslibrust_common::{Result, TopicProvider, Publish}; +//! // Normally you'd use generated types from roslibrust::codegen +//! use roslibrust_test::ros1::*; +//! +//! async fn my_ros_thing(ros: impl TopicProvider) -> Result<()> { +//! let my_publisher = ros.advertise::("my_topic").await?; +//! my_publisher.publish(&std_msgs::String { data: "Hello, world!".to_string() }).await?; +//! Ok(()) +//! } +//! +//! #[tokio::test] +//! async fn test_my_ros_thing() { +//! // Create a mock ros instance with new +//! let ros = roslibrust::mock::MockRos::new(); +//! // Use it like ros: +//! let test_sub = ros.subscribe::("my_topic").await?; +//! // Kick off our object under test +//! tokio::spawn(my_ros_thing(ros)); +//! // Assert we got the message we expected +//! assert_eq!(test_sub.next().await.unwrap().unwrap().data, "Hello, world!"); +//! } +//! ``` use std::collections::BTreeMap; use std::sync::Arc; @@ -15,6 +43,9 @@ type TypeErasedCallback = Arc< + 'static, >; +/// A mock ROS implementation that can be substituted for any roslibrust backend in unit tests. +/// +/// Implements [TopicProvider] and [ServiceProvider] to provide basic ros functionality. pub struct MockRos { // We could probably achieve some fancier type erasure than actually serializing the data // but this ends up being pretty simple @@ -89,6 +120,8 @@ impl TopicProvider for MockRos { } } +/// The handle type returned by calling [MockRos::service_client]. +/// Represents a ROS service connection and allows the service to be called multiple times. pub struct MockServiceClient { callback: TypeErasedCallback, _marker: std::marker::PhantomData, @@ -163,6 +196,7 @@ impl ServiceProvider for MockRos { } } +/// The publisher type returned by calling [MockRos::advertise]. pub struct MockPublisher { sender: Channel::Sender>, _marker: std::marker::PhantomData, @@ -178,6 +212,7 @@ impl Publish for MockPublisher { } } +/// The subscriber type returned by calling [MockRos::subscribe]. pub struct MockSubscriber { receiver: Channel::Receiver>, _marker: std::marker::PhantomData, @@ -200,11 +235,8 @@ impl Subscribe for MockSubscriber { #[cfg(test)] mod tests { use super::*; - - roslibrust_codegen_macro::find_and_generate_ros_messages!( - "assets/ros1_common_interfaces/std_msgs", - "assets/ros1_common_interfaces/ros_comm_msgs/std_srvs" - ); + use roslibrust_test::ros1::std_msgs; + use roslibrust_test::ros1::std_srvs; #[tokio::test(flavor = "multi_thread")] async fn test_mock_topics() { diff --git a/roslibrust_ros1/Cargo.toml b/roslibrust_ros1/Cargo.toml index defcc53d..445690e4 100644 --- a/roslibrust_ros1/Cargo.toml +++ b/roslibrust_ros1/Cargo.toml @@ -29,11 +29,8 @@ thiserror = "2.0" anyhow = "1.0" [dev-dependencies] -# Used to provide message types for the examples -# TODO generate a roslibrust_std_msgs crate we can depend on instead of this -roslibrust_codegen_macro = { path = "../roslibrust_codegen_macro" } -# Relied on by generate types in the macro this should be cleaned up -roslibrust_codegen = { path = "../roslibrust_codegen" } +# Used for message definitions in tests +roslibrust_test = { path = "../roslibrust_test" } [features] # Used for enabling tests that rely on a running ros1 master diff --git a/roslibrust_ros1/src/lib.rs b/roslibrust_ros1/src/lib.rs index acaf3ea3..3cef6dc0 100644 --- a/roslibrust_ros1/src/lib.rs +++ b/roslibrust_ros1/src/lib.rs @@ -1,4 +1,34 @@ -//! This module holds all content for directly working with ROS1 natively +//! A implementation of roslibrust's generic traits for native ROS1 communication. +//! +//! This is a pure rust re-implementation of ROS1 communication via xmlrpc and TCPROS. +//! This crate shows performance on par with roscpp. +//! +//! It is recommended to not use this crate directly and instead access if via the `roslibrust` crate with the `ros1` feature enabled. +//! +//! Basic Example: +//! ```no_run +//! // Normally accessed as roslibrust::{Result, TopicProvider, Publish} +//! use roslibrust_common::{Result, TopicProvider, Publish}; +//! // Normally you'd use generated types from roslibrust::codegen +//! use roslibrust_test::ros1::*; +//! use roslibrust_ros1::NodeHandle; +//! +//! async fn my_behavior(ros: impl TopicProvider) -> Result<()> { +//! let publisher = ros.advertise::("my_topic").await?; +//! publisher.publish(&std_msgs::String { data: "Hello, world!".to_string() }).await?; +//! Ok(()) +//! } +//! +//! #[tokio::main] +//! async fn main() -> Result<()> { +//! // Create a ros1 handle we can use +//! let ros = NodeHandle::new("http://localhost:11311", "my_node").await?; +//! // Use it like ros: +//! my_behavior(ros).await?; +//! Ok(()) +//! } +//! ``` + use roslibrust_common::Error; use roslibrust_common::{ Publish, RosMessageType, RosServiceType, Service, ServiceFn, ServiceProvider, Subscribe, diff --git a/roslibrust_ros1/src/node/actor.rs b/roslibrust_ros1/src/node/actor.rs index e13ba63d..b8450216 100644 --- a/roslibrust_ros1/src/node/actor.rs +++ b/roslibrust_ros1/src/node/actor.rs @@ -194,7 +194,7 @@ impl NodeServerHandle { let md5sum; let md5sum_res = - roslibrust_common::md5sum::message_definition_to_md5sum(topic_type, msg_definition); + roslibrust_common::md5sum::from_message_definition(topic_type, msg_definition); match md5sum_res { // TODO(lucasw) make a new error type for this? Err(err) => { diff --git a/roslibrust_ros1/src/publisher.rs b/roslibrust_ros1/src/publisher.rs index 1f35af2c..8657087c 100644 --- a/roslibrust_ros1/src/publisher.rs +++ b/roslibrust_ros1/src/publisher.rs @@ -16,7 +16,7 @@ use tokio::{ use super::actor::NodeServerHandle; -/// The regular Publisher representation returned by calling advertise on a [crate::ros1::NodeHandle]. +/// The regular Publisher representation returned by calling advertise on a [crate::NodeHandle]. pub struct Publisher { // Name of the topic this publisher is publishing on topic_name: String, diff --git a/roslibrust_ros1/tests/ros1_xmlrpc.rs b/roslibrust_ros1/tests/ros1_xmlrpc.rs index 56ca47ce..606b776d 100644 --- a/roslibrust_ros1/tests/ros1_xmlrpc.rs +++ b/roslibrust_ros1/tests/ros1_xmlrpc.rs @@ -2,9 +2,9 @@ mod tests { use roslibrust_common::RosMessageType; use roslibrust_ros1::NodeHandle; + use roslibrust_test::ros1::*; use serde::de::DeserializeOwned; use serde_xmlrpc::Value; - roslibrust_codegen_macro::find_and_generate_ros_messages!("assets/ros1_common_interfaces"); async fn call_node_api_raw(uri: &str, endpoint: &str, args: Vec) -> String { let client = reqwest::Client::new(); diff --git a/roslibrust_rosapi/Cargo.toml b/roslibrust_rosapi/Cargo.toml index 1f79160b..87972bd9 100644 --- a/roslibrust_rosapi/Cargo.toml +++ b/roslibrust_rosapi/Cargo.toml @@ -4,18 +4,12 @@ version = "0.1.0" edition = "2021" [dependencies] -# TODO shouldn't need to depend on codegen should be able to use _macro directly -roslibrust_codegen = { path = "../roslibrust_codegen" } -roslibrust_codegen_macro = { path = "../roslibrust_codegen_macro" } -roslibrust_common = { path = "../roslibrust_common" } -# Note: this crate doesn't depend on any specific backend implementations -# but can work with any backend that implements the ServiceProvider trait and has a RosApi node running +roslibrust = { path = "../roslibrust", features = ["macro"] } [dev-dependencies] +roslibrust = { path = "../roslibrust", features = ["rosbridge"] } tokio = { workspace = true } test-log = "0.2" -# Only backend we're currently testing with -roslibrust_rosbridge = { path = "../roslibrust_rosbridge" } [features] # Used to indicate we're executing tests with a running ros1 rosapi node diff --git a/roslibrust_rosapi/src/lib.rs b/roslibrust_rosapi/src/lib.rs index 45471e06..4aaec40f 100644 --- a/roslibrust_rosapi/src/lib.rs +++ b/roslibrust_rosapi/src/lib.rs @@ -3,127 +3,123 @@ //! //! Ensure rosapi is running on your target system before attempting to utilize these features! -use roslibrust_common::topic_provider::ServiceProvider; +use roslibrust::ServiceProvider; // TODO major issue here for folks who actually try to use rosapi in their project // This macro isn't going to expand correctly when not used from this crate's workspace // We almost certainly need to generate and commit the resulting messages, or // do some include_str!() hax to be able to ship these types with the crate... -roslibrust_codegen_macro::find_and_generate_ros_messages!("assets/ros1_common_interfaces/rosapi"); +roslibrust::find_and_generate_ros_messages!("assets/ros1_common_interfaces/rosapi"); /// Represents the ability to interact with the interfaces provided by the rosapi node. /// This trait is implemented for ClientHandle when the `rosapi` feature is enabled. pub trait RosApi { fn get_time( &self, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn topics( &self, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn get_topic_type( &self, topic: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn get_topics_for_type( &self, topic_type: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn get_nodes( &self, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn get_node_details( &self, node: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn get_node_for_service( &self, service: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn set_param( &self, param_name: impl Into + Send, param_value: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn get_param( &self, param_name: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn get_param_names( &self, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn has_param( &self, param: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn delete_param( &self, name: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn message_details( &self, message_name: impl Into + Send, - ) -> impl std::future::Future> - + Send; + ) -> impl std::future::Future> + Send; fn publishers( &self, topic: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn service_host( &self, service: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn service_providers( &self, service_type: impl Into + Send, - ) -> impl std::future::Future> - + Send; + ) -> impl std::future::Future> + Send; fn get_service_request_details( &self, service_type: impl Into + Send, - ) -> impl std::future::Future< - Output = roslibrust_common::Result, - > + Send; + ) -> impl std::future::Future> + + Send; fn get_service_response_details( &self, service_type: impl Into + Send, - ) -> impl std::future::Future< - Output = roslibrust_common::Result, - > + Send; + ) -> impl std::future::Future> + + Send; fn get_service_type( &self, service_name: impl Into + Send, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; fn get_services( &self, - ) -> impl std::future::Future> + Send; + ) -> impl std::future::Future> + Send; } /// A Generic implementation of the RosApi trait for any type that implements ServiceProvider /// Note, this will not work on ROS2 systems or systems without the rosapi node running. impl RosApi for T { /// Get the current time - async fn get_time(&self) -> roslibrust_common::Result { + async fn get_time(&self) -> roslibrust::Result { self.call_service::("/rosapi/get_time", rosapi::GetTimeRequest {}) .await } /// Get the list of topics active - async fn topics(&self) -> roslibrust_common::Result { + async fn topics(&self) -> roslibrust::Result { self.call_service::("/rosapi/topics", rosapi::TopicsRequest {}) .await } @@ -132,7 +128,7 @@ impl RosApi for T { async fn get_topic_type( &self, topic: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/topic_type", rosapi::TopicTypeRequest { @@ -146,7 +142,7 @@ impl RosApi for T { async fn get_topics_for_type( &self, topic_type: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/topics_for_type", rosapi::TopicsForTypeRequest { @@ -157,7 +153,7 @@ impl RosApi for T { } /// Returns list of nodes active in a system - async fn get_nodes(&self) -> roslibrust_common::Result { + async fn get_nodes(&self) -> roslibrust::Result { self.call_service::("/rosapi/nodes", rosapi::NodesRequest {}) .await } @@ -167,7 +163,7 @@ impl RosApi for T { async fn get_node_details( &self, node: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/node_details", rosapi::NodeDetailsRequest { node: node.into() }, @@ -179,7 +175,7 @@ impl RosApi for T { async fn get_node_for_service( &self, service: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/service_node", rosapi::ServiceNodeRequest { @@ -195,7 +191,7 @@ impl RosApi for T { &self, param_name: impl Into + Send, param_value: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/set_param", rosapi::SetParamRequest { @@ -211,7 +207,7 @@ impl RosApi for T { async fn get_param( &self, param_name: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/get_param", rosapi::GetParamRequest { @@ -223,7 +219,7 @@ impl RosApi for T { } /// Gets the list of currently known parameters. - async fn get_param_names(&self) -> roslibrust_common::Result { + async fn get_param_names(&self) -> roslibrust::Result { self.call_service::( "/rosapi/get_param_names", rosapi::GetParamNamesRequest {}, @@ -235,7 +231,7 @@ impl RosApi for T { async fn has_param( &self, param: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/has_param", rosapi::HasParamRequest { name: param.into() }, @@ -247,7 +243,7 @@ impl RosApi for T { async fn delete_param( &self, name: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/delete_param", rosapi::DeleteParamRequest { name: name.into() }, @@ -259,7 +255,7 @@ impl RosApi for T { async fn message_details( &self, message_name: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/message_details", rosapi::MessageDetailsRequest { @@ -273,7 +269,7 @@ impl RosApi for T { async fn publishers( &self, topic: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/publishers", rosapi::PublishersRequest { @@ -287,7 +283,7 @@ impl RosApi for T { async fn service_host( &self, service: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/service_host", rosapi::ServiceHostRequest { @@ -301,7 +297,7 @@ impl RosApi for T { async fn service_providers( &self, service_type: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/service_providers", rosapi::ServiceProvidersRequest { @@ -315,7 +311,7 @@ impl RosApi for T { async fn get_service_request_details( &self, service_type: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/service_request_details", rosapi::ServiceRequestDetailsRequest { @@ -329,7 +325,7 @@ impl RosApi for T { async fn get_service_response_details( &self, service_type: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/service_response_details", rosapi::ServiceRequestDetailsRequest { @@ -343,7 +339,7 @@ impl RosApi for T { async fn get_service_type( &self, service_name: impl Into + Send, - ) -> roslibrust_common::Result { + ) -> roslibrust::Result { self.call_service::( "/rosapi/service_type", rosapi::ServiceTypeRequest { @@ -354,7 +350,7 @@ impl RosApi for T { } /// Get the list of services active on the system - async fn get_services(&self) -> roslibrust_common::Result { + async fn get_services(&self) -> roslibrust::Result { self.call_service::("/rosapi/services", rosapi::ServicesRequest {}) .await } @@ -395,7 +391,7 @@ impl RosApi for T { #[cfg(feature = "ros1_test")] mod test { use super::RosApi; - use roslibrust_rosbridge::{ClientHandle, ClientHandleOptions}; + use roslibrust::rosbridge::{ClientHandle, ClientHandleOptions}; async fn fixture_client() -> ClientHandle { // Tiny sleep to throttle rate at which tests are run to try to make CI more consistent diff --git a/roslibrust_rosbridge/Cargo.toml b/roslibrust_rosbridge/Cargo.toml index 877a18b0..0ca77f7d 100644 --- a/roslibrust_rosbridge/Cargo.toml +++ b/roslibrust_rosbridge/Cargo.toml @@ -20,6 +20,7 @@ deadqueue = "0.2.4" # .4+ is required to fix bug with missing tokio dep test-log = "0.2" roslibrust_codegen = { path = "../roslibrust_codegen" } roslibrust_codegen_macro = { path = "../roslibrust_codegen_macro" } +roslibrust_test = { path = "../roslibrust_test" } [features] # Used to enable tests that rely on a locally running rosbridge diff --git a/roslibrust_rosbridge/src/client.rs b/roslibrust_rosbridge/src/client.rs index d1c90f8d..308675a0 100644 --- a/roslibrust_rosbridge/src/client.rs +++ b/roslibrust_rosbridge/src/client.rs @@ -52,9 +52,7 @@ impl ClientHandleOptions { /// /// ClientHandle is clone and multiple handles can be clone()'d from the original and passed throughout your application. /// ```no_run -/// # roslibrust_codegen_macro::find_and_generate_ros_messages!( -/// # "assets/ros1_common_interfaces/std_msgs" -/// # ); +/// # use roslibrust_test::ros1::*; /// # #[tokio::main] /// # async fn main() -> Result<(), Box> { /// // Create a new client @@ -198,9 +196,7 @@ impl ClientHandle { /// Subscribe to a given topic expecting msgs of provided type. /// ```no_run - /// # roslibrust_codegen_macro::find_and_generate_ros_messages!( - /// # "assets/ros1_common_interfaces/std_msgs" - /// # ); + /// # use roslibrust_test::ros1::*; /// # #[tokio::main] /// # async fn main() -> Result<(), Box> { /// // Create a new client @@ -223,17 +219,7 @@ impl ClientHandle { /// types successfully deserialize the message will receive a message. /// /// ```no_run - /// # // TODO figure out how to de-duplicate code here with this message definition... - /// # mod ros1 { - /// # roslibrust_codegen_macro::find_and_generate_ros_messages!( - /// # "assets/ros1_common_interfaces/std_msgs" - /// # ); - /// # } - /// # mod ros2 { - /// # roslibrust_codegen_macro::find_and_generate_ros_messages!( - /// # "assets/ros1_common_interfaces/std_msgs" - /// # ); - /// # } + /// # use roslibrust_test::*; /// # #[tokio::main] /// # async fn main() -> Result<(), Box> { /// // Create a new client @@ -289,9 +275,7 @@ impl ClientHandle { /// available in rosbridge's logs. /// /// ```no_run - /// # roslibrust_codegen_macro::find_and_generate_ros_messages!( - /// # "assets/ros1_common_interfaces/std_msgs" - /// # ); + /// # use roslibrust_test::ros1::*; /// # #[tokio::main] /// # async fn main() -> Result<(), Box> { /// // Create a new client @@ -341,9 +325,7 @@ impl ClientHandle { /// - Integrate with ClientHandle's timeout better /// /// ```no_run - /// # roslibrust_codegen_macro::find_and_generate_ros_messages!( - /// # "assets/ros1_common_interfaces/rosapi" - /// # ); + /// # use roslibrust_test::ros1::*; /// # #[tokio::main] /// # async fn main() -> Result<(), Box> { /// // Create a new client diff --git a/roslibrust_rosbridge/src/integration_tests.rs b/roslibrust_rosbridge/src/integration_tests.rs index 761cc594..75f6a19e 100644 --- a/roslibrust_rosbridge/src/integration_tests.rs +++ b/roslibrust_rosbridge/src/integration_tests.rs @@ -20,16 +20,10 @@ mod integration_tests { const LOCAL_WS: &str = "ws://localhost:9090"; #[cfg(feature = "ros1_test")] - roslibrust_codegen_macro::find_and_generate_ros_messages!( - "assets/ros1_common_interfaces/ros_comm_msgs", - "assets/ros1_common_interfaces/std_msgs", - ); + use roslibrust_test::ros1::*; #[cfg(feature = "ros2_test")] - roslibrust_codegen_macro::find_and_generate_ros_messages!( - "assets/ros2_common_interfaces/std_msgs", - "assets/ros2_common_interfaces/std_srvs" - ); + use roslibrust_test::ros2::*; // This replaces the fact that Time.msg is no longer in std_msgs in ROS2 #[cfg(feature = "ros2_test")] use roslibrust_codegen::integral_types::Time; diff --git a/roslibrust_rosbridge/src/lib.rs b/roslibrust_rosbridge/src/lib.rs index 75ac3e2f..a23450cb 100644 --- a/roslibrust_rosbridge/src/lib.rs +++ b/roslibrust_rosbridge/src/lib.rs @@ -1,3 +1,37 @@ +//! A implementation of roslibrust's generic traits for rosbridge_suite communication. +//! +//! [rosbridge_server](https://github.com/RobotWebTools/rosbridge_suite) provides a useful websocket interface to ROS. +//! +//! This server operates over a single port making it easier to use in constrained networking environments and support TLS. +//! +//! Additionally, rosbridge_server exists for both ROS1 and ROS2 with an unchanged API meaning code targeting rosbridge can be used with both ROS1 and ROS2. +//! +//! This backend is fundamentally less efficient than native ROS1 communication, but its added flexibility can be very useful. +//! +//! Basic Example: +//! ```no_run +//! // Normally accessed as roslibrust::{Result, TopicProvider, Publish} +//! use roslibrust_common::{Result, TopicProvider, Publish}; +//! // Normally you'd use generated types from roslibrust::codegen +//! use roslibrust_test::ros1::*; +//! use roslibrust_rosbridge::ClientHandle; +//! +//! async fn my_behavior(ros: impl TopicProvider) -> Result<()> { +//! let publisher = ros.advertise::("my_topic").await?; +//! publisher.publish(&std_msgs::String { data: "Hello, world!".to_string() }).await?; +//! Ok(()) +//! } +//! +//! #[tokio::main] +//! async fn main() -> Result<()> { +//! // Create a rosbridge handle we can use +//! let ros = ClientHandle::new("ws://localhost:9090").await?; +//! // Use it like ros: +//! my_behavior(ros).await?; +//! Ok(()) +//! } +//! ``` + use roslibrust_common::*; // Subscriber is a transparent module, we directly expose internal types @@ -104,7 +138,6 @@ type MessageQueue = deadqueue::limited::Queue; // TODO queue size should be configurable for subscribers const QUEUE_SIZE: usize = 1_000; -// TODO move out of rosbridge and into common /// Internal tracking structure used to maintain information about each subscription our client has /// with rosbridge. pub(crate) struct Subscription { @@ -117,7 +150,6 @@ pub(crate) struct Subscription { pub(crate) topic_type: String, } -// TODO move out of rosbridge and into common pub(crate) struct PublisherHandle { pub(crate) topic_type: String, } diff --git a/roslibrust_test/Cargo.toml b/roslibrust_test/Cargo.toml index b4b47bc0..7e0784bc 100644 --- a/roslibrust_test/Cargo.toml +++ b/roslibrust_test/Cargo.toml @@ -5,11 +5,7 @@ edition = "2021" [dependencies] env_logger = "0.10" -roslibrust = { path = "../roslibrust", features = ["ros1"] } -roslibrust_common = { path = "../roslibrust_common" } -# This crate does directly invoke codegen and does need to rely on it directly -# We can fix this by moving the generated types into a roslibrust_ros1_types crate -roslibrust_codegen = { path = "../roslibrust_codegen" } +roslibrust = { path = "../roslibrust", features = ["ros1", "codegen", "macro"] } lazy_static = "1.4" tokio = { workspace = true } log = { workspace = true } diff --git a/roslibrust_test/src/main.rs b/roslibrust_test/src/main.rs index b4c5938c..3c347100 100644 --- a/roslibrust_test/src/main.rs +++ b/roslibrust_test/src/main.rs @@ -26,14 +26,14 @@ lazy_static! { fn main() -> Result<(), Box> { env_logger::init(); let (source, _paths) = - roslibrust_codegen::find_and_generate_ros_messages_without_ros_package_path( + roslibrust::codegen::find_and_generate_ros_messages_without_ros_package_path( (*ROS_1_PATHS).clone(), )?; let source = format_rust_source(source.to_string().as_str()).to_string(); std::fs::write(concat!(env!("CARGO_MANIFEST_DIR"), "/src/ros1.rs"), source)?; let (source, _paths) = - roslibrust_codegen::find_and_generate_ros_messages_without_ros_package_path(vec![ + roslibrust::codegen::find_and_generate_ros_messages_without_ros_package_path(vec![ ROS_2_PATH.into(), ROS_2_TEST_PATH.into(), ])?; @@ -75,7 +75,7 @@ mod test { #[test] fn ros1_lib_is_up_to_date() { let (source, _paths) = - roslibrust_codegen::find_and_generate_ros_messages_without_ros_package_path( + roslibrust::codegen::find_and_generate_ros_messages_without_ros_package_path( (*ROS_1_PATHS).clone(), ) .unwrap(); @@ -97,7 +97,7 @@ mod test { #[test] fn ros2_lib_is_up_to_date() { let (source, _paths) = - roslibrust_codegen::find_and_generate_ros_messages_without_ros_package_path( + roslibrust::codegen::find_and_generate_ros_messages_without_ros_package_path( (*ROS_2_PATHS).clone(), ) .unwrap(); diff --git a/roslibrust_test/src/performance_ramp.rs b/roslibrust_test/src/performance_ramp.rs index 494a9771..81e208b8 100644 --- a/roslibrust_test/src/performance_ramp.rs +++ b/roslibrust_test/src/performance_ramp.rs @@ -32,7 +32,7 @@ async fn main() -> Result<(), Box> { *data.last_mut().unwrap() = 69; let image = ros1::sensor_msgs::Image { header: ros1::std_msgs::Header { - stamp: roslibrust_codegen::Time { secs: 0, nsecs: 0 }, + stamp: Default::default(), frame_id: "test".to_string(), seq: data_size_mb as u32, }, diff --git a/roslibrust_test/src/ros1.rs b/roslibrust_test/src/ros1.rs index 3756ce18..82c892f8 100644 --- a/roslibrust_test/src/ros1.rs +++ b/roslibrust_test/src/ros1.rs @@ -15,19 +15,19 @@ pub mod actionlib_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GoalID { - pub r#stamp: ::roslibrust_codegen::integral_types::Time, + pub r#stamp: ::roslibrust::codegen::integral_types::Time, pub r#id: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for GoalID { + impl ::roslibrust::RosMessageType for GoalID { const ROS_TYPE_NAME: &'static str = "actionlib_msgs/GoalID"; const MD5SUM: &'static str = "302881f31927c1df708a2dbab0e80ee8"; const DEFINITION: &'static str = r#"# The stamp should store the time at which this goal was requested. @@ -42,20 +42,20 @@ string id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GoalStatus { pub r#goal_id: self::GoalID, pub r#status: u8, pub r#text: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for GoalStatus { + impl ::roslibrust::RosMessageType for GoalStatus { const ROS_TYPE_NAME: &'static str = "actionlib_msgs/GoalStatus"; const MD5SUM: &'static str = "d388f9b87b3c471f784434d671988d4a"; const DEFINITION: &'static str = r#"GoalID goal_id @@ -107,19 +107,19 @@ string id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GoalStatusArray { pub r#header: std_msgs::Header, pub r#status_list: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for GoalStatusArray { + impl ::roslibrust::RosMessageType for GoalStatusArray { const ROS_TYPE_NAME: &'static str = "actionlib_msgs/GoalStatusArray"; const MD5SUM: &'static str = "8b2b82f13216d0a8ea88bd3af735e619"; const DEFINITION: &'static str = r#"# Stores the statuses for goals that are currently being tracked @@ -206,19 +206,19 @@ pub mod diagnostic_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct DiagnosticArray { pub r#header: std_msgs::Header, pub r#status: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for DiagnosticArray { + impl ::roslibrust::RosMessageType for DiagnosticArray { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/DiagnosticArray"; const MD5SUM: &'static str = "60810da900de1dd6ddd437c3503511da"; const DEFINITION: &'static str = r#"# This message is used to send diagnostic information about the state of the robot @@ -266,14 +266,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct DiagnosticStatus { pub r#level: u8, pub r#name: ::std::string::String, @@ -281,7 +281,7 @@ string frame_id"#; pub r#hardware_id: ::std::string::String, pub r#values: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for DiagnosticStatus { + impl ::roslibrust::RosMessageType for DiagnosticStatus { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/DiagnosticStatus"; const MD5SUM: &'static str = "d0ce08bc6e5ba34c7754f563a9cabaf1"; const DEFINITION: &'static str = r#"# This message holds the status of an individual component of the robot. @@ -312,19 +312,19 @@ string value # a value to track over time"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct KeyValue { pub r#key: ::std::string::String, pub r#value: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for KeyValue { + impl ::roslibrust::RosMessageType for KeyValue { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/KeyValue"; const MD5SUM: &'static str = "cf57fdc6617a881a88c16e768132149c"; const DEFINITION: &'static str = r#"string key # what to label this value when viewing @@ -332,18 +332,18 @@ string value # a value to track over time"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AddDiagnosticsRequest { pub r#load_namespace: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for AddDiagnosticsRequest { + impl ::roslibrust::RosMessageType for AddDiagnosticsRequest { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/AddDiagnosticsRequest"; const MD5SUM: &'static str = "c26cf6e164288fbc6050d74f838bcdf0"; const DEFINITION: &'static str = r#"# This service is used as part of the process for loading analyzers at runtime, @@ -366,19 +366,19 @@ string load_namespace"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AddDiagnosticsResponse { pub r#success: bool, pub r#message: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for AddDiagnosticsResponse { + impl ::roslibrust::RosMessageType for AddDiagnosticsResponse { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/AddDiagnosticsResponse"; const MD5SUM: &'static str = "937c9679a518e3a18d831e57125ea522"; const DEFINITION: &'static str = r#"# True if diagnostic aggregator was updated with new diagnostics, False @@ -392,7 +392,7 @@ string message"#; } #[allow(dead_code)] pub struct AddDiagnostics {} - impl ::roslibrust_common::RosServiceType for AddDiagnostics { + impl ::roslibrust::RosServiceType for AddDiagnostics { const ROS_SERVICE_NAME: &'static str = "diagnostic_msgs/AddDiagnostics"; const MD5SUM: &'static str = "e6ac9bbde83d0d3186523c3687aecaee"; type Request = AddDiagnosticsRequest; @@ -400,36 +400,36 @@ string message"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SelfTestRequest {} - impl ::roslibrust_common::RosMessageType for SelfTestRequest { + impl ::roslibrust::RosMessageType for SelfTestRequest { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/SelfTestRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SelfTestResponse { pub r#id: ::std::string::String, pub r#passed: u8, pub r#status: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for SelfTestResponse { + impl ::roslibrust::RosMessageType for SelfTestResponse { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/SelfTestResponse"; const MD5SUM: &'static str = "ac21b1bab7ab17546986536c22eb34e9"; const DEFINITION: &'static str = r#"string id @@ -462,7 +462,7 @@ string value # a value to track over time"#; } #[allow(dead_code)] pub struct SelfTest {} - impl ::roslibrust_common::RosServiceType for SelfTest { + impl ::roslibrust::RosServiceType for SelfTest { const ROS_SERVICE_NAME: &'static str = "diagnostic_msgs/SelfTest"; const MD5SUM: &'static str = "ac21b1bab7ab17546986536c22eb34e9"; type Request = SelfTestRequest; @@ -486,19 +486,19 @@ pub mod geometry_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Accel { pub r#linear: self::Vector3, pub r#angular: self::Vector3, } - impl ::roslibrust_common::RosMessageType for Accel { + impl ::roslibrust::RosMessageType for Accel { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Accel"; const MD5SUM: &'static str = "9f195f881246fdfa2798d1d3eebca84a"; const DEFINITION: &'static str = r#"# This expresses acceleration in free space broken into its linear and angular parts. @@ -519,19 +519,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AccelStamped { pub r#header: std_msgs::Header, pub r#accel: self::Accel, } - impl ::roslibrust_common::RosMessageType for AccelStamped { + impl ::roslibrust::RosMessageType for AccelStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/AccelStamped"; const MD5SUM: &'static str = "d8a98a5d81351b6eb0578c78557e7659"; const DEFINITION: &'static str = r#"# An accel with reference coordinate frame and timestamp @@ -584,21 +584,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AccelWithCovariance { pub r#accel: self::Accel, #[default(_code = "[Default::default(); 36]")] - #[serde(with = "::roslibrust_codegen::BigArray")] + #[serde(with = "::roslibrust::codegen::BigArray")] pub r#covariance: [f64; 36], } - impl ::roslibrust_common::RosMessageType for AccelWithCovariance { + impl ::roslibrust::RosMessageType for AccelWithCovariance { const ROS_TYPE_NAME: &'static str = "geometry_msgs/AccelWithCovariance"; const MD5SUM: &'static str = "ad5a718d699c6be72a02b8d6a139f334"; const DEFINITION: &'static str = r#"# This expresses acceleration in free space with uncertainty. @@ -642,19 +642,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AccelWithCovarianceStamped { pub r#header: std_msgs::Header, pub r#accel: self::AccelWithCovariance, } - impl ::roslibrust_common::RosMessageType for AccelWithCovarianceStamped { + impl ::roslibrust::RosMessageType for AccelWithCovarianceStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/AccelWithCovarianceStamped"; const MD5SUM: &'static str = "96adb295225031ec8d57fb4251b0a886"; const DEFINITION: &'static str = r#"# This represents an estimated accel with reference coordinate frame and timestamp. @@ -747,14 +747,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Inertia { pub r#m: f64, pub r#com: self::Vector3, @@ -765,7 +765,7 @@ string frame_id"#; pub r#iyz: f64, pub r#izz: f64, } - impl ::roslibrust_common::RosMessageType for Inertia { + impl ::roslibrust::RosMessageType for Inertia { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Inertia"; const MD5SUM: &'static str = "1d26e4bb6c83ff141c5cf0d883c2b0fe"; const DEFINITION: &'static str = r#"# Mass [kg] @@ -799,19 +799,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InertiaStamped { pub r#header: std_msgs::Header, pub r#inertia: self::Inertia, } - impl ::roslibrust_common::RosMessageType for InertiaStamped { + impl ::roslibrust::RosMessageType for InertiaStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/InertiaStamped"; const MD5SUM: &'static str = "ddee48caeab5a966c5e8d166654a9ac7"; const DEFINITION: &'static str = r#"Header header @@ -876,20 +876,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Point { pub r#x: f64, pub r#y: f64, pub r#z: f64, } - impl ::roslibrust_common::RosMessageType for Point { + impl ::roslibrust::RosMessageType for Point { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Point"; const MD5SUM: &'static str = "4a842b65f413084dc2b10fb484ea7f17"; const DEFINITION: &'static str = r#"# This contains the position of a point in free space @@ -899,20 +899,20 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Point32 { pub r#x: f32, pub r#y: f32, pub r#z: f32, } - impl ::roslibrust_common::RosMessageType for Point32 { + impl ::roslibrust::RosMessageType for Point32 { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Point32"; const MD5SUM: &'static str = "cc153912f1453b708d221682bc23d9ac"; const DEFINITION: &'static str = r#"# This contains the position of a point in free space(with 32 bits of precision). @@ -929,19 +929,19 @@ float32 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PointStamped { pub r#header: std_msgs::Header, pub r#point: self::Point, } - impl ::roslibrust_common::RosMessageType for PointStamped { + impl ::roslibrust::RosMessageType for PointStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PointStamped"; const MD5SUM: &'static str = "c63aecb41bfdfd6b7e1fac37c7cbe7bf"; const DEFINITION: &'static str = r#"# This represents a Point with reference coordinate frame and timestamp @@ -971,18 +971,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Polygon { pub r#points: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Polygon { + impl ::roslibrust::RosMessageType for Polygon { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Polygon"; const MD5SUM: &'static str = "cd60a26494a087f577976f0329fa120e"; const DEFINITION: &'static str = r#"#A specification of a polygon where the first and last points are assumed to be connected @@ -1003,19 +1003,19 @@ float32 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PolygonStamped { pub r#header: std_msgs::Header, pub r#polygon: self::Polygon, } - impl ::roslibrust_common::RosMessageType for PolygonStamped { + impl ::roslibrust::RosMessageType for PolygonStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PolygonStamped"; const MD5SUM: &'static str = "c6be8f7dc3bee7fe9e8d296070f53340"; const DEFINITION: &'static str = r#"# This represents a Polygon with reference coordinate frame and timestamp @@ -1069,19 +1069,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Pose { pub r#position: self::Point, pub r#orientation: self::Quaternion, } - impl ::roslibrust_common::RosMessageType for Pose { + impl ::roslibrust::RosMessageType for Pose { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Pose"; const MD5SUM: &'static str = "e45d45a5a1ce597b249e23fb30fc871f"; const DEFINITION: &'static str = r#"# A representation of pose in free space, composed of position and orientation. @@ -1104,20 +1104,20 @@ float64 w"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Pose2D { pub r#x: f64, pub r#y: f64, pub r#theta: f64, } - impl ::roslibrust_common::RosMessageType for Pose2D { + impl ::roslibrust::RosMessageType for Pose2D { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Pose2D"; const MD5SUM: &'static str = "938fa65709584ad8e77d238529be13b8"; const DEFINITION: &'static str = r#"# Deprecated @@ -1136,19 +1136,19 @@ float64 theta"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PoseArray { pub r#header: std_msgs::Header, pub r#poses: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for PoseArray { + impl ::roslibrust::RosMessageType for PoseArray { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PoseArray"; const MD5SUM: &'static str = "916c28c5764443f268b296bb671b9d97"; const DEFINITION: &'static str = r#"# An array of poses with a header for global reference. @@ -1207,19 +1207,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PoseStamped { pub r#header: std_msgs::Header, pub r#pose: self::Pose, } - impl ::roslibrust_common::RosMessageType for PoseStamped { + impl ::roslibrust::RosMessageType for PoseStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PoseStamped"; const MD5SUM: &'static str = "d3812c3cbc69362b77dc0b19b345f8f5"; const DEFINITION: &'static str = r#"# A Pose with reference coordinate frame and timestamp @@ -1276,21 +1276,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PoseWithCovariance { pub r#pose: self::Pose, #[default(_code = "[Default::default(); 36]")] - #[serde(with = "::roslibrust_codegen::BigArray")] + #[serde(with = "::roslibrust::codegen::BigArray")] pub r#covariance: [f64; 36], } - impl ::roslibrust_common::RosMessageType for PoseWithCovariance { + impl ::roslibrust::RosMessageType for PoseWithCovariance { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PoseWithCovariance"; const MD5SUM: &'static str = "c23e848cf1b7533a8d7c259073a97e6f"; const DEFINITION: &'static str = r#"# This represents a pose in free space with uncertainty. @@ -1338,19 +1338,19 @@ float64 w"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PoseWithCovarianceStamped { pub r#header: std_msgs::Header, pub r#pose: self::PoseWithCovariance, } - impl ::roslibrust_common::RosMessageType for PoseWithCovarianceStamped { + impl ::roslibrust::RosMessageType for PoseWithCovarianceStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PoseWithCovarianceStamped"; const MD5SUM: &'static str = "953b798c0f514ff060a53a3498ce6246"; const DEFINITION: &'static str = r#"# This expresses an estimated pose with a reference coordinate frame and timestamp @@ -1452,21 +1452,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Quaternion { pub r#x: f64, pub r#y: f64, pub r#z: f64, pub r#w: f64, } - impl ::roslibrust_common::RosMessageType for Quaternion { + impl ::roslibrust::RosMessageType for Quaternion { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Quaternion"; const MD5SUM: &'static str = "a779879fadf0160734f906b8c19c7004"; const DEFINITION: &'static str = r#"# This represents an orientation in free space in quaternion form. @@ -1478,19 +1478,19 @@ float64 w"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct QuaternionStamped { pub r#header: std_msgs::Header, pub r#quaternion: self::Quaternion, } - impl ::roslibrust_common::RosMessageType for QuaternionStamped { + impl ::roslibrust::RosMessageType for QuaternionStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/QuaternionStamped"; const MD5SUM: &'static str = "e57f1e547e0e1fd13504588ffc8334e2"; const DEFINITION: &'static str = r#"# This represents an orientation with reference coordinate frame and timestamp. @@ -1523,19 +1523,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Transform { pub r#translation: self::Vector3, pub r#rotation: self::Quaternion, } - impl ::roslibrust_common::RosMessageType for Transform { + impl ::roslibrust::RosMessageType for Transform { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Transform"; const MD5SUM: &'static str = "ac9eff44abf714214112b05d54a3cf9b"; const DEFINITION: &'static str = r#"# This represents the transform between two coordinate frames in free space. @@ -1565,20 +1565,20 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TransformStamped { pub r#header: std_msgs::Header, pub r#child_frame_id: ::std::string::String, pub r#transform: self::Transform, } - impl ::roslibrust_common::RosMessageType for TransformStamped { + impl ::roslibrust::RosMessageType for TransformStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/TransformStamped"; const MD5SUM: &'static str = "b5764a33bfeb3588febc2682852579b0"; const DEFINITION: &'static str = r#"# This expresses a transform from coordinate frame header.frame_id @@ -1655,19 +1655,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Twist { pub r#linear: self::Vector3, pub r#angular: self::Vector3, } - impl ::roslibrust_common::RosMessageType for Twist { + impl ::roslibrust::RosMessageType for Twist { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Twist"; const MD5SUM: &'static str = "9f195f881246fdfa2798d1d3eebca84a"; const DEFINITION: &'static str = r#"# This expresses velocity in free space broken into its linear and angular parts. @@ -1688,19 +1688,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TwistStamped { pub r#header: std_msgs::Header, pub r#twist: self::Twist, } - impl ::roslibrust_common::RosMessageType for TwistStamped { + impl ::roslibrust::RosMessageType for TwistStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/TwistStamped"; const MD5SUM: &'static str = "98d34b0043a2093cf9d9345ab6eef12e"; const DEFINITION: &'static str = r#"# A twist with reference coordinate frame and timestamp @@ -1753,21 +1753,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TwistWithCovariance { pub r#twist: self::Twist, #[default(_code = "[Default::default(); 36]")] - #[serde(with = "::roslibrust_codegen::BigArray")] + #[serde(with = "::roslibrust::codegen::BigArray")] pub r#covariance: [f64; 36], } - impl ::roslibrust_common::RosMessageType for TwistWithCovariance { + impl ::roslibrust::RosMessageType for TwistWithCovariance { const ROS_TYPE_NAME: &'static str = "geometry_msgs/TwistWithCovariance"; const MD5SUM: &'static str = "1fe8a28e6890a4cc3ae4c3ca5c7d82e6"; const DEFINITION: &'static str = r#"# This expresses velocity in free space with uncertainty. @@ -1811,19 +1811,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TwistWithCovarianceStamped { pub r#header: std_msgs::Header, pub r#twist: self::TwistWithCovariance, } - impl ::roslibrust_common::RosMessageType for TwistWithCovarianceStamped { + impl ::roslibrust::RosMessageType for TwistWithCovarianceStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/TwistWithCovarianceStamped"; const MD5SUM: &'static str = "8927a1a12fb2607ceea095b2dc440a96"; const DEFINITION: &'static str = r#"# This represents an estimated twist with reference coordinate frame and timestamp. @@ -1916,20 +1916,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Vector3 { pub r#x: f64, pub r#y: f64, pub r#z: f64, } - impl ::roslibrust_common::RosMessageType for Vector3 { + impl ::roslibrust::RosMessageType for Vector3 { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Vector3"; const MD5SUM: &'static str = "4a842b65f413084dc2b10fb484ea7f17"; const DEFINITION: &'static str = r#"# This represents a vector in free space. @@ -1945,19 +1945,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Vector3Stamped { pub r#header: std_msgs::Header, pub r#vector: self::Vector3, } - impl ::roslibrust_common::RosMessageType for Vector3Stamped { + impl ::roslibrust::RosMessageType for Vector3Stamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Vector3Stamped"; const MD5SUM: &'static str = "7b324c7325e683bf02a9b14b01090ec7"; const DEFINITION: &'static str = r#"# This represents a Vector3 with reference coordinate frame and timestamp @@ -1993,19 +1993,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Wrench { pub r#force: self::Vector3, pub r#torque: self::Vector3, } - impl ::roslibrust_common::RosMessageType for Wrench { + impl ::roslibrust::RosMessageType for Wrench { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Wrench"; const MD5SUM: &'static str = "4f539cf138b23283b520fd271b567936"; const DEFINITION: &'static str = r#"# This represents force in free space, separated into @@ -2027,19 +2027,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct WrenchStamped { pub r#header: std_msgs::Header, pub r#wrench: self::Wrench, } - impl ::roslibrust_common::RosMessageType for WrenchStamped { + impl ::roslibrust::RosMessageType for WrenchStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/WrenchStamped"; const MD5SUM: &'static str = "d78d3cb249ce23087ade7e7d0c40cfa7"; const DEFINITION: &'static str = r#"# A wrench with reference coordinate frame and timestamp @@ -2109,20 +2109,20 @@ pub mod nav_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapAction { pub r#action_goal: self::GetMapActionGoal, pub r#action_result: self::GetMapActionResult, pub r#action_feedback: self::GetMapActionFeedback, } - impl ::roslibrust_common::RosMessageType for GetMapAction { + impl ::roslibrust::RosMessageType for GetMapAction { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapAction"; const MD5SUM: &'static str = "e611ad23fbf237c031b7536416dc7cd7"; const DEFINITION: &'static str = r#"GetMapActionGoal action_goal @@ -3163,20 +3163,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapActionFeedback { pub r#header: std_msgs::Header, pub r#status: actionlib_msgs::GoalStatus, pub r#feedback: self::GetMapFeedback, } - impl ::roslibrust_common::RosMessageType for GetMapActionFeedback { + impl ::roslibrust::RosMessageType for GetMapActionFeedback { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapActionFeedback"; const MD5SUM: &'static str = "aae20e09065c3809e8a8e87c4c8953fd"; const DEFINITION: &'static str = r#"Header header @@ -3249,20 +3249,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapActionGoal { pub r#header: std_msgs::Header, pub r#goal_id: actionlib_msgs::GoalID, pub r#goal: self::GetMapGoal, } - impl ::roslibrust_common::RosMessageType for GetMapActionGoal { + impl ::roslibrust::RosMessageType for GetMapActionGoal { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapActionGoal"; const MD5SUM: &'static str = "4b30be6cd12b9e72826df56b481f40e0"; const DEFINITION: &'static str = r#"Header header @@ -3300,20 +3300,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapActionResult { pub r#header: std_msgs::Header, pub r#status: actionlib_msgs::GoalStatus, pub r#result: self::GetMapResult, } - impl ::roslibrust_common::RosMessageType for GetMapActionResult { + impl ::roslibrust::RosMessageType for GetMapActionResult { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapActionResult"; const MD5SUM: &'static str = "ac66e5b9a79bb4bbd33dab245236c892"; const DEFINITION: &'static str = r#"Header header @@ -3781,50 +3781,50 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapFeedback {} - impl ::roslibrust_common::RosMessageType for GetMapFeedback { + impl ::roslibrust::RosMessageType for GetMapFeedback { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapFeedback"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#"# no feedback"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapGoal {} - impl ::roslibrust_common::RosMessageType for GetMapGoal { + impl ::roslibrust::RosMessageType for GetMapGoal { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapGoal"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#"# Get the map as a nav_msgs/OccupancyGrid"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapResult { pub r#map: self::OccupancyGrid, } - impl ::roslibrust_common::RosMessageType for GetMapResult { + impl ::roslibrust::RosMessageType for GetMapResult { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapResult"; const MD5SUM: &'static str = "6cdd0a18e0aff5b0a3ca2326a89b54ff"; const DEFINITION: &'static str = r#"nav_msgs/OccupancyGrid map @@ -4036,21 +4036,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GridCells { pub r#header: std_msgs::Header, pub r#cell_width: f32, pub r#cell_height: f32, pub r#cells: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for GridCells { + impl ::roslibrust::RosMessageType for GridCells { const ROS_TYPE_NAME: &'static str = "nav_msgs/GridCells"; const MD5SUM: &'static str = "b9e4f5df6d28e272ebde00a3994830f5"; const DEFINITION: &'static str = r#"#an array of cells in a 2D grid @@ -4082,22 +4082,22 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MapMetaData { - pub r#map_load_time: ::roslibrust_codegen::integral_types::Time, + pub r#map_load_time: ::roslibrust::codegen::integral_types::Time, pub r#resolution: f32, pub r#width: u32, pub r#height: u32, pub r#origin: geometry_msgs::Pose, } - impl ::roslibrust_common::RosMessageType for MapMetaData { + impl ::roslibrust::RosMessageType for MapMetaData { const ROS_TYPE_NAME: &'static str = "nav_msgs/MapMetaData"; const MD5SUM: &'static str = "10cfc8a2818024d3248802c00c95f11b"; const DEFINITION: &'static str = r#"# This hold basic information about the characterists of the OccupancyGrid @@ -4149,20 +4149,20 @@ float64 w"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct OccupancyGrid { pub r#header: std_msgs::Header, pub r#info: self::MapMetaData, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for OccupancyGrid { + impl ::roslibrust::RosMessageType for OccupancyGrid { const ROS_TYPE_NAME: &'static str = "nav_msgs/OccupancyGrid"; const MD5SUM: &'static str = "3381f2d731d4076ec5c71b0759edbe4e"; const DEFINITION: &'static str = r#"# This represents a 2-D grid map, in which each cell represents the probability of @@ -4275,21 +4275,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Odometry { pub r#header: std_msgs::Header, pub r#child_frame_id: ::std::string::String, pub r#pose: geometry_msgs::PoseWithCovariance, pub r#twist: geometry_msgs::TwistWithCovariance, } - impl ::roslibrust_common::RosMessageType for Odometry { + impl ::roslibrust::RosMessageType for Odometry { const ROS_TYPE_NAME: &'static str = "nav_msgs/Odometry"; const MD5SUM: &'static str = "cd5e73d190d741a2f92e81eda573aca7"; const DEFINITION: &'static str = r#"# This represents an estimate of a position and velocity in free space. @@ -4463,19 +4463,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Path { pub r#header: std_msgs::Header, pub r#poses: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Path { + impl ::roslibrust::RosMessageType for Path { const ROS_TYPE_NAME: &'static str = "nav_msgs/Path"; const MD5SUM: &'static str = "6227e2b7e9cce15051f669a5e197bbf7"; const DEFINITION: &'static str = r#"#An array of poses that represents a Path for a robot to follow @@ -4585,34 +4585,34 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapRequest {} - impl ::roslibrust_common::RosMessageType for GetMapRequest { + impl ::roslibrust::RosMessageType for GetMapRequest { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#"# Get the map as a nav_msgs/OccupancyGrid"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapResponse { pub r#map: self::OccupancyGrid, } - impl ::roslibrust_common::RosMessageType for GetMapResponse { + impl ::roslibrust::RosMessageType for GetMapResponse { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapResponse"; const MD5SUM: &'static str = "6cdd0a18e0aff5b0a3ca2326a89b54ff"; const DEFINITION: &'static str = r#"nav_msgs/OccupancyGrid map @@ -4824,7 +4824,7 @@ string frame_id"#; } #[allow(dead_code)] pub struct GetMap {} - impl ::roslibrust_common::RosServiceType for GetMap { + impl ::roslibrust::RosServiceType for GetMap { const ROS_SERVICE_NAME: &'static str = "nav_msgs/GetMap"; const MD5SUM: &'static str = "6cdd0a18e0aff5b0a3ca2326a89b54ff"; type Request = GetMapRequest; @@ -4832,20 +4832,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetPlanRequest { pub r#start: geometry_msgs::PoseStamped, pub r#goal: geometry_msgs::PoseStamped, pub r#tolerance: f32, } - impl ::roslibrust_common::RosMessageType for GetPlanRequest { + impl ::roslibrust::RosMessageType for GetPlanRequest { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetPlanRequest"; const MD5SUM: &'static str = "e25a43e0752bcca599a8c2eef8282df8"; const DEFINITION: &'static str = r#"# Get a plan from the current position to the goal Pose @@ -4963,18 +4963,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetPlanResponse { pub r#plan: self::Path, } - impl ::roslibrust_common::RosMessageType for GetPlanResponse { + impl ::roslibrust::RosMessageType for GetPlanResponse { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetPlanResponse"; const MD5SUM: &'static str = "0002bc113c0259d71f6cf8cbc9430e18"; const DEFINITION: &'static str = r#"nav_msgs/Path plan @@ -5188,7 +5188,7 @@ string frame_id"#; } #[allow(dead_code)] pub struct GetPlan {} - impl ::roslibrust_common::RosServiceType for GetPlan { + impl ::roslibrust::RosServiceType for GetPlan { const ROS_SERVICE_NAME: &'static str = "nav_msgs/GetPlan"; const MD5SUM: &'static str = "421c8ea4d21c6c9db7054b4bbdf1e024"; type Request = GetPlanRequest; @@ -5196,18 +5196,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct LoadMapRequest { pub r#map_url: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for LoadMapRequest { + impl ::roslibrust::RosMessageType for LoadMapRequest { const ROS_TYPE_NAME: &'static str = "nav_msgs/LoadMapRequest"; const MD5SUM: &'static str = "3813ba1ae85fbcd4dc88c90f1426b90b"; const DEFINITION: &'static str = r#"# URL of map resource @@ -5217,19 +5217,19 @@ string map_url"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct LoadMapResponse { pub r#map: self::OccupancyGrid, pub r#result: u8, } - impl ::roslibrust_common::RosMessageType for LoadMapResponse { + impl ::roslibrust::RosMessageType for LoadMapResponse { const ROS_TYPE_NAME: &'static str = "nav_msgs/LoadMapResponse"; const MD5SUM: &'static str = "079b9c828e9f7c1918bf86932fd7267e"; const DEFINITION: &'static str = r#"# Result code defintions @@ -5458,7 +5458,7 @@ string frame_id"#; } #[allow(dead_code)] pub struct LoadMap {} - impl ::roslibrust_common::RosServiceType for LoadMap { + impl ::roslibrust::RosServiceType for LoadMap { const ROS_SERVICE_NAME: &'static str = "nav_msgs/LoadMap"; const MD5SUM: &'static str = "22e647fdfbe3b23c8c9f419908afaebd"; type Request = LoadMapRequest; @@ -5466,19 +5466,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetMapRequest { pub r#map: self::OccupancyGrid, pub r#initial_pose: geometry_msgs::PoseWithCovarianceStamped, } - impl ::roslibrust_common::RosMessageType for SetMapRequest { + impl ::roslibrust::RosMessageType for SetMapRequest { const ROS_TYPE_NAME: &'static str = "nav_msgs/SetMapRequest"; const MD5SUM: &'static str = "91149a20d7be299b87c340df8cc94fd4"; const DEFINITION: &'static str = r#"# Set a new map together with an initial pose @@ -5834,25 +5834,25 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetMapResponse { pub r#success: bool, } - impl ::roslibrust_common::RosMessageType for SetMapResponse { + impl ::roslibrust::RosMessageType for SetMapResponse { const ROS_TYPE_NAME: &'static str = "nav_msgs/SetMapResponse"; const MD5SUM: &'static str = "358e233cde0c8a8bcfea4ce193f8fc15"; const DEFINITION: &'static str = r#"bool success"#; } #[allow(dead_code)] pub struct SetMap {} - impl ::roslibrust_common::RosServiceType for SetMap { + impl ::roslibrust::RosServiceType for SetMap { const ROS_SERVICE_NAME: &'static str = "nav_msgs/SetMap"; const MD5SUM: &'static str = "c36922319011e63ed7784112ad4fdd32"; type Request = SetMapRequest; @@ -5876,14 +5876,14 @@ pub mod rosapi { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TypeDef { pub r#type: ::std::string::String, pub r#fieldnames: ::std::vec::Vec<::std::string::String>, @@ -5893,7 +5893,7 @@ pub mod rosapi { pub r#constnames: ::std::vec::Vec<::std::string::String>, pub r#constvalues: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for TypeDef { + impl ::roslibrust::RosMessageType for TypeDef { const ROS_TYPE_NAME: &'static str = "rosapi/TypeDef"; const MD5SUM: &'static str = "80597571d79bbeef6c9c4d98f30116a0"; const DEFINITION: &'static str = r#"string type @@ -5906,41 +5906,41 @@ string[] constvalues"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct DeleteParamRequest { pub r#name: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for DeleteParamRequest { + impl ::roslibrust::RosMessageType for DeleteParamRequest { const ROS_TYPE_NAME: &'static str = "rosapi/DeleteParamRequest"; const MD5SUM: &'static str = "c1f3d28f1b044c871e6eff2e9fc3c667"; const DEFINITION: &'static str = r#"string name"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct DeleteParamResponse {} - impl ::roslibrust_common::RosMessageType for DeleteParamResponse { + impl ::roslibrust::RosMessageType for DeleteParamResponse { const ROS_TYPE_NAME: &'static str = "rosapi/DeleteParamResponse"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(dead_code)] pub struct DeleteParam {} - impl ::roslibrust_common::RosServiceType for DeleteParam { + impl ::roslibrust::RosServiceType for DeleteParam { const ROS_SERVICE_NAME: &'static str = "rosapi/DeleteParam"; const MD5SUM: &'static str = "c1f3d28f1b044c871e6eff2e9fc3c667"; type Request = DeleteParamRequest; @@ -5948,41 +5948,41 @@ string[] constvalues"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetActionServersRequest {} - impl ::roslibrust_common::RosMessageType for GetActionServersRequest { + impl ::roslibrust::RosMessageType for GetActionServersRequest { const ROS_TYPE_NAME: &'static str = "rosapi/GetActionServersRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetActionServersResponse { pub r#action_servers: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for GetActionServersResponse { + impl ::roslibrust::RosMessageType for GetActionServersResponse { const ROS_TYPE_NAME: &'static str = "rosapi/GetActionServersResponse"; const MD5SUM: &'static str = "46807ba271844ac5ba4730a47556b236"; const DEFINITION: &'static str = r#"string[] action_servers"#; } #[allow(dead_code)] pub struct GetActionServers {} - impl ::roslibrust_common::RosServiceType for GetActionServers { + impl ::roslibrust::RosServiceType for GetActionServers { const ROS_SERVICE_NAME: &'static str = "rosapi/GetActionServers"; const MD5SUM: &'static str = "46807ba271844ac5ba4730a47556b236"; type Request = GetActionServersRequest; @@ -5990,19 +5990,19 @@ string[] constvalues"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetParamRequest { pub r#name: ::std::string::String, pub r#default: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for GetParamRequest { + impl ::roslibrust::RosMessageType for GetParamRequest { const ROS_TYPE_NAME: &'static str = "rosapi/GetParamRequest"; const MD5SUM: &'static str = "1cc3f281ee24ba9406c3e498e4da686f"; const DEFINITION: &'static str = r#"string name @@ -6010,25 +6010,25 @@ string default"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetParamResponse { pub r#value: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for GetParamResponse { + impl ::roslibrust::RosMessageType for GetParamResponse { const ROS_TYPE_NAME: &'static str = "rosapi/GetParamResponse"; const MD5SUM: &'static str = "64e58419496c7248b4ef25731f88b8c3"; const DEFINITION: &'static str = r#"string value"#; } #[allow(dead_code)] pub struct GetParam {} - impl ::roslibrust_common::RosServiceType for GetParam { + impl ::roslibrust::RosServiceType for GetParam { const ROS_SERVICE_NAME: &'static str = "rosapi/GetParam"; const MD5SUM: &'static str = "e36fd90759dbac1c5159140a7fa8c644"; type Request = GetParamRequest; @@ -6036,41 +6036,41 @@ string default"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetParamNamesRequest {} - impl ::roslibrust_common::RosMessageType for GetParamNamesRequest { + impl ::roslibrust::RosMessageType for GetParamNamesRequest { const ROS_TYPE_NAME: &'static str = "rosapi/GetParamNamesRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetParamNamesResponse { pub r#names: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for GetParamNamesResponse { + impl ::roslibrust::RosMessageType for GetParamNamesResponse { const ROS_TYPE_NAME: &'static str = "rosapi/GetParamNamesResponse"; const MD5SUM: &'static str = "dc7ae3609524b18034e49294a4ce670e"; const DEFINITION: &'static str = r#"string[] names"#; } #[allow(dead_code)] pub struct GetParamNames {} - impl ::roslibrust_common::RosServiceType for GetParamNames { + impl ::roslibrust::RosServiceType for GetParamNames { const ROS_SERVICE_NAME: &'static str = "rosapi/GetParamNames"; const MD5SUM: &'static str = "dc7ae3609524b18034e49294a4ce670e"; type Request = GetParamNamesRequest; @@ -6078,41 +6078,41 @@ string default"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetTimeRequest {} - impl ::roslibrust_common::RosMessageType for GetTimeRequest { + impl ::roslibrust::RosMessageType for GetTimeRequest { const ROS_TYPE_NAME: &'static str = "rosapi/GetTimeRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetTimeResponse { - pub r#time: ::roslibrust_codegen::integral_types::Time, + pub r#time: ::roslibrust::codegen::integral_types::Time, } - impl ::roslibrust_common::RosMessageType for GetTimeResponse { + impl ::roslibrust::RosMessageType for GetTimeResponse { const ROS_TYPE_NAME: &'static str = "rosapi/GetTimeResponse"; const MD5SUM: &'static str = "556a4fb76023a469987922359d08a844"; const DEFINITION: &'static str = r#"time time"#; } #[allow(dead_code)] pub struct GetTime {} - impl ::roslibrust_common::RosServiceType for GetTime { + impl ::roslibrust::RosServiceType for GetTime { const ROS_SERVICE_NAME: &'static str = "rosapi/GetTime"; const MD5SUM: &'static str = "556a4fb76023a469987922359d08a844"; type Request = GetTimeRequest; @@ -6120,43 +6120,43 @@ string default"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct HasParamRequest { pub r#name: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for HasParamRequest { + impl ::roslibrust::RosMessageType for HasParamRequest { const ROS_TYPE_NAME: &'static str = "rosapi/HasParamRequest"; const MD5SUM: &'static str = "c1f3d28f1b044c871e6eff2e9fc3c667"; const DEFINITION: &'static str = r#"string name"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct HasParamResponse { pub r#exists: bool, } - impl ::roslibrust_common::RosMessageType for HasParamResponse { + impl ::roslibrust::RosMessageType for HasParamResponse { const ROS_TYPE_NAME: &'static str = "rosapi/HasParamResponse"; const MD5SUM: &'static str = "e8c90de4adc1219c86af9c2874c0c1b5"; const DEFINITION: &'static str = r#"bool exists"#; } #[allow(dead_code)] pub struct HasParam {} - impl ::roslibrust_common::RosServiceType for HasParam { + impl ::roslibrust::RosServiceType for HasParam { const ROS_SERVICE_NAME: &'static str = "rosapi/HasParam"; const MD5SUM: &'static str = "ed3df286bd6dff9b961770f577454ea9"; type Request = HasParamRequest; @@ -6164,36 +6164,36 @@ string default"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MessageDetailsRequest { pub r#type: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for MessageDetailsRequest { + impl ::roslibrust::RosMessageType for MessageDetailsRequest { const ROS_TYPE_NAME: &'static str = "rosapi/MessageDetailsRequest"; const MD5SUM: &'static str = "dc67331de85cf97091b7d45e5c64ab75"; const DEFINITION: &'static str = r#"string type"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MessageDetailsResponse { pub r#typedefs: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for MessageDetailsResponse { + impl ::roslibrust::RosMessageType for MessageDetailsResponse { const ROS_TYPE_NAME: &'static str = "rosapi/MessageDetailsResponse"; const MD5SUM: &'static str = "a6b8995777f214f2ed97a1e4890feb10"; const DEFINITION: &'static str = r#"TypeDef[] typedefs @@ -6209,7 +6209,7 @@ string[] constvalues"#; } #[allow(dead_code)] pub struct MessageDetails {} - impl ::roslibrust_common::RosServiceType for MessageDetails { + impl ::roslibrust::RosServiceType for MessageDetails { const ROS_SERVICE_NAME: &'static str = "rosapi/MessageDetails"; const MD5SUM: &'static str = "f9c88144f6f6bd888dd99d4e0411905d"; type Request = MessageDetailsRequest; @@ -6217,38 +6217,38 @@ string[] constvalues"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct NodeDetailsRequest { pub r#node: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for NodeDetailsRequest { + impl ::roslibrust::RosMessageType for NodeDetailsRequest { const ROS_TYPE_NAME: &'static str = "rosapi/NodeDetailsRequest"; const MD5SUM: &'static str = "a94c40e70a4b82863e6e52ec16732447"; const DEFINITION: &'static str = r#"string node"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct NodeDetailsResponse { pub r#subscribing: ::std::vec::Vec<::std::string::String>, pub r#publishing: ::std::vec::Vec<::std::string::String>, pub r#services: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for NodeDetailsResponse { + impl ::roslibrust::RosMessageType for NodeDetailsResponse { const ROS_TYPE_NAME: &'static str = "rosapi/NodeDetailsResponse"; const MD5SUM: &'static str = "3da1cb16c6ec5885ad291735b6244a48"; const DEFINITION: &'static str = r#"string[] subscribing @@ -6257,7 +6257,7 @@ string[] services"#; } #[allow(dead_code)] pub struct NodeDetails {} - impl ::roslibrust_common::RosServiceType for NodeDetails { + impl ::roslibrust::RosServiceType for NodeDetails { const ROS_SERVICE_NAME: &'static str = "rosapi/NodeDetails"; const MD5SUM: &'static str = "e1d0ced5ab8d5edb5fc09c98eb1d46f6"; type Request = NodeDetailsRequest; @@ -6265,41 +6265,41 @@ string[] services"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct NodesRequest {} - impl ::roslibrust_common::RosMessageType for NodesRequest { + impl ::roslibrust::RosMessageType for NodesRequest { const ROS_TYPE_NAME: &'static str = "rosapi/NodesRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct NodesResponse { pub r#nodes: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for NodesResponse { + impl ::roslibrust::RosMessageType for NodesResponse { const ROS_TYPE_NAME: &'static str = "rosapi/NodesResponse"; const MD5SUM: &'static str = "3d07bfda1268b4f76b16b7ba8a82665d"; const DEFINITION: &'static str = r#"string[] nodes"#; } #[allow(dead_code)] pub struct Nodes {} - impl ::roslibrust_common::RosServiceType for Nodes { + impl ::roslibrust::RosServiceType for Nodes { const ROS_SERVICE_NAME: &'static str = "rosapi/Nodes"; const MD5SUM: &'static str = "3d07bfda1268b4f76b16b7ba8a82665d"; type Request = NodesRequest; @@ -6307,43 +6307,43 @@ string[] services"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PublishersRequest { pub r#topic: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for PublishersRequest { + impl ::roslibrust::RosMessageType for PublishersRequest { const ROS_TYPE_NAME: &'static str = "rosapi/PublishersRequest"; const MD5SUM: &'static str = "d8f94bae31b356b24d0427f80426d0c3"; const DEFINITION: &'static str = r#"string topic"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PublishersResponse { pub r#publishers: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for PublishersResponse { + impl ::roslibrust::RosMessageType for PublishersResponse { const ROS_TYPE_NAME: &'static str = "rosapi/PublishersResponse"; const MD5SUM: &'static str = "167d8030c4ca4018261dff8ae5083dc8"; const DEFINITION: &'static str = r#"string[] publishers"#; } #[allow(dead_code)] pub struct Publishers {} - impl ::roslibrust_common::RosServiceType for Publishers { + impl ::roslibrust::RosServiceType for Publishers { const ROS_SERVICE_NAME: &'static str = "rosapi/Publishers"; const MD5SUM: &'static str = "cb37f09944e7ba1fc08ee38f7a94291d"; type Request = PublishersRequest; @@ -6351,43 +6351,43 @@ string[] services"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SearchParamRequest { pub r#name: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for SearchParamRequest { + impl ::roslibrust::RosMessageType for SearchParamRequest { const ROS_TYPE_NAME: &'static str = "rosapi/SearchParamRequest"; const MD5SUM: &'static str = "c1f3d28f1b044c871e6eff2e9fc3c667"; const DEFINITION: &'static str = r#"string name"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SearchParamResponse { pub r#global_name: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for SearchParamResponse { + impl ::roslibrust::RosMessageType for SearchParamResponse { const ROS_TYPE_NAME: &'static str = "rosapi/SearchParamResponse"; const MD5SUM: &'static str = "87c264f142c2aeca13349d90aeec0386"; const DEFINITION: &'static str = r#"string global_name"#; } #[allow(dead_code)] pub struct SearchParam {} - impl ::roslibrust_common::RosServiceType for SearchParam { + impl ::roslibrust::RosServiceType for SearchParam { const ROS_SERVICE_NAME: &'static str = "rosapi/SearchParam"; const MD5SUM: &'static str = "dfadc39f113c1cc6d7759508d8461d5a"; type Request = SearchParamRequest; @@ -6395,43 +6395,43 @@ string[] services"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceHostRequest { pub r#service: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for ServiceHostRequest { + impl ::roslibrust::RosMessageType for ServiceHostRequest { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceHostRequest"; const MD5SUM: &'static str = "1cbcfa13b08f6d36710b9af8741e6112"; const DEFINITION: &'static str = r#"string service"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceHostResponse { pub r#host: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for ServiceHostResponse { + impl ::roslibrust::RosMessageType for ServiceHostResponse { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceHostResponse"; const MD5SUM: &'static str = "092ff9f63242a37704ce411703ec5eaf"; const DEFINITION: &'static str = r#"string host"#; } #[allow(dead_code)] pub struct ServiceHost {} - impl ::roslibrust_common::RosServiceType for ServiceHost { + impl ::roslibrust::RosServiceType for ServiceHost { const ROS_SERVICE_NAME: &'static str = "rosapi/ServiceHost"; const MD5SUM: &'static str = "a1b60006f8ee69637c856c94dd192f5a"; type Request = ServiceHostRequest; @@ -6439,43 +6439,43 @@ string[] services"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceNodeRequest { pub r#service: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for ServiceNodeRequest { + impl ::roslibrust::RosMessageType for ServiceNodeRequest { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceNodeRequest"; const MD5SUM: &'static str = "1cbcfa13b08f6d36710b9af8741e6112"; const DEFINITION: &'static str = r#"string service"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceNodeResponse { pub r#node: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for ServiceNodeResponse { + impl ::roslibrust::RosMessageType for ServiceNodeResponse { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceNodeResponse"; const MD5SUM: &'static str = "a94c40e70a4b82863e6e52ec16732447"; const DEFINITION: &'static str = r#"string node"#; } #[allow(dead_code)] pub struct ServiceNode {} - impl ::roslibrust_common::RosServiceType for ServiceNode { + impl ::roslibrust::RosServiceType for ServiceNode { const ROS_SERVICE_NAME: &'static str = "rosapi/ServiceNode"; const MD5SUM: &'static str = "bd2a0a45fd7a73a86c8d6051d5a6db8a"; type Request = ServiceNodeRequest; @@ -6483,43 +6483,43 @@ string[] services"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceProvidersRequest { pub r#service: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for ServiceProvidersRequest { + impl ::roslibrust::RosMessageType for ServiceProvidersRequest { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceProvidersRequest"; const MD5SUM: &'static str = "1cbcfa13b08f6d36710b9af8741e6112"; const DEFINITION: &'static str = r#"string service"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceProvidersResponse { pub r#providers: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for ServiceProvidersResponse { + impl ::roslibrust::RosMessageType for ServiceProvidersResponse { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceProvidersResponse"; const MD5SUM: &'static str = "945f6849f44f061c178ab393b12c1358"; const DEFINITION: &'static str = r#"string[] providers"#; } #[allow(dead_code)] pub struct ServiceProviders {} - impl ::roslibrust_common::RosServiceType for ServiceProviders { + impl ::roslibrust::RosServiceType for ServiceProviders { const ROS_SERVICE_NAME: &'static str = "rosapi/ServiceProviders"; const MD5SUM: &'static str = "f30b41d5e347454ae5483ee95eef5cc6"; type Request = ServiceProvidersRequest; @@ -6527,36 +6527,36 @@ string[] services"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceRequestDetailsRequest { pub r#type: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for ServiceRequestDetailsRequest { + impl ::roslibrust::RosMessageType for ServiceRequestDetailsRequest { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceRequestDetailsRequest"; const MD5SUM: &'static str = "dc67331de85cf97091b7d45e5c64ab75"; const DEFINITION: &'static str = r#"string type"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceRequestDetailsResponse { pub r#typedefs: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for ServiceRequestDetailsResponse { + impl ::roslibrust::RosMessageType for ServiceRequestDetailsResponse { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceRequestDetailsResponse"; const MD5SUM: &'static str = "a6b8995777f214f2ed97a1e4890feb10"; const DEFINITION: &'static str = r#"TypeDef[] typedefs @@ -6572,7 +6572,7 @@ string[] constvalues"#; } #[allow(dead_code)] pub struct ServiceRequestDetails {} - impl ::roslibrust_common::RosServiceType for ServiceRequestDetails { + impl ::roslibrust::RosServiceType for ServiceRequestDetails { const ROS_SERVICE_NAME: &'static str = "rosapi/ServiceRequestDetails"; const MD5SUM: &'static str = "f9c88144f6f6bd888dd99d4e0411905d"; type Request = ServiceRequestDetailsRequest; @@ -6580,36 +6580,36 @@ string[] constvalues"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceResponseDetailsRequest { pub r#type: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for ServiceResponseDetailsRequest { + impl ::roslibrust::RosMessageType for ServiceResponseDetailsRequest { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceResponseDetailsRequest"; const MD5SUM: &'static str = "dc67331de85cf97091b7d45e5c64ab75"; const DEFINITION: &'static str = r#"string type"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceResponseDetailsResponse { pub r#typedefs: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for ServiceResponseDetailsResponse { + impl ::roslibrust::RosMessageType for ServiceResponseDetailsResponse { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceResponseDetailsResponse"; const MD5SUM: &'static str = "a6b8995777f214f2ed97a1e4890feb10"; const DEFINITION: &'static str = r#"TypeDef[] typedefs @@ -6625,7 +6625,7 @@ string[] constvalues"#; } #[allow(dead_code)] pub struct ServiceResponseDetails {} - impl ::roslibrust_common::RosServiceType for ServiceResponseDetails { + impl ::roslibrust::RosServiceType for ServiceResponseDetails { const ROS_SERVICE_NAME: &'static str = "rosapi/ServiceResponseDetails"; const MD5SUM: &'static str = "f9c88144f6f6bd888dd99d4e0411905d"; type Request = ServiceResponseDetailsRequest; @@ -6633,43 +6633,43 @@ string[] constvalues"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceTypeRequest { pub r#service: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for ServiceTypeRequest { + impl ::roslibrust::RosMessageType for ServiceTypeRequest { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceTypeRequest"; const MD5SUM: &'static str = "1cbcfa13b08f6d36710b9af8741e6112"; const DEFINITION: &'static str = r#"string service"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServiceTypeResponse { pub r#type: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for ServiceTypeResponse { + impl ::roslibrust::RosMessageType for ServiceTypeResponse { const ROS_TYPE_NAME: &'static str = "rosapi/ServiceTypeResponse"; const MD5SUM: &'static str = "dc67331de85cf97091b7d45e5c64ab75"; const DEFINITION: &'static str = r#"string type"#; } #[allow(dead_code)] pub struct ServiceType {} - impl ::roslibrust_common::RosServiceType for ServiceType { + impl ::roslibrust::RosServiceType for ServiceType { const ROS_SERVICE_NAME: &'static str = "rosapi/ServiceType"; const MD5SUM: &'static str = "0e24a2dcdf70e483afc092a35a1f15f7"; type Request = ServiceTypeRequest; @@ -6677,41 +6677,41 @@ string[] constvalues"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServicesRequest {} - impl ::roslibrust_common::RosMessageType for ServicesRequest { + impl ::roslibrust::RosMessageType for ServicesRequest { const ROS_TYPE_NAME: &'static str = "rosapi/ServicesRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServicesResponse { pub r#services: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for ServicesResponse { + impl ::roslibrust::RosMessageType for ServicesResponse { const ROS_TYPE_NAME: &'static str = "rosapi/ServicesResponse"; const MD5SUM: &'static str = "e44a7e7bcb900acadbcc28b132378f0c"; const DEFINITION: &'static str = r#"string[] services"#; } #[allow(dead_code)] pub struct Services {} - impl ::roslibrust_common::RosServiceType for Services { + impl ::roslibrust::RosServiceType for Services { const ROS_SERVICE_NAME: &'static str = "rosapi/Services"; const MD5SUM: &'static str = "e44a7e7bcb900acadbcc28b132378f0c"; type Request = ServicesRequest; @@ -6719,43 +6719,43 @@ string[] constvalues"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServicesForTypeRequest { pub r#type: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for ServicesForTypeRequest { + impl ::roslibrust::RosMessageType for ServicesForTypeRequest { const ROS_TYPE_NAME: &'static str = "rosapi/ServicesForTypeRequest"; const MD5SUM: &'static str = "dc67331de85cf97091b7d45e5c64ab75"; const DEFINITION: &'static str = r#"string type"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ServicesForTypeResponse { pub r#services: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for ServicesForTypeResponse { + impl ::roslibrust::RosMessageType for ServicesForTypeResponse { const ROS_TYPE_NAME: &'static str = "rosapi/ServicesForTypeResponse"; const MD5SUM: &'static str = "e44a7e7bcb900acadbcc28b132378f0c"; const DEFINITION: &'static str = r#"string[] services"#; } #[allow(dead_code)] pub struct ServicesForType {} - impl ::roslibrust_common::RosServiceType for ServicesForType { + impl ::roslibrust::RosServiceType for ServicesForType { const ROS_SERVICE_NAME: &'static str = "rosapi/ServicesForType"; const MD5SUM: &'static str = "93e9fe8ae5a9136008e260fe510bd2b0"; type Request = ServicesForTypeRequest; @@ -6763,19 +6763,19 @@ string[] constvalues"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetParamRequest { pub r#name: ::std::string::String, pub r#value: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for SetParamRequest { + impl ::roslibrust::RosMessageType for SetParamRequest { const ROS_TYPE_NAME: &'static str = "rosapi/SetParamRequest"; const MD5SUM: &'static str = "bc6ccc4a57f61779c8eaae61e9f422e0"; const DEFINITION: &'static str = r#"string name @@ -6783,23 +6783,23 @@ string value"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetParamResponse {} - impl ::roslibrust_common::RosMessageType for SetParamResponse { + impl ::roslibrust::RosMessageType for SetParamResponse { const ROS_TYPE_NAME: &'static str = "rosapi/SetParamResponse"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(dead_code)] pub struct SetParam {} - impl ::roslibrust_common::RosServiceType for SetParam { + impl ::roslibrust::RosServiceType for SetParam { const ROS_SERVICE_NAME: &'static str = "rosapi/SetParam"; const MD5SUM: &'static str = "bc6ccc4a57f61779c8eaae61e9f422e0"; type Request = SetParamRequest; @@ -6807,43 +6807,43 @@ string value"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SubscribersRequest { pub r#topic: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for SubscribersRequest { + impl ::roslibrust::RosMessageType for SubscribersRequest { const ROS_TYPE_NAME: &'static str = "rosapi/SubscribersRequest"; const MD5SUM: &'static str = "d8f94bae31b356b24d0427f80426d0c3"; const DEFINITION: &'static str = r#"string topic"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SubscribersResponse { pub r#subscribers: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for SubscribersResponse { + impl ::roslibrust::RosMessageType for SubscribersResponse { const ROS_TYPE_NAME: &'static str = "rosapi/SubscribersResponse"; const MD5SUM: &'static str = "22418cab5ba9531d8c2b738b4e56153b"; const DEFINITION: &'static str = r#"string[] subscribers"#; } #[allow(dead_code)] pub struct Subscribers {} - impl ::roslibrust_common::RosServiceType for Subscribers { + impl ::roslibrust::RosServiceType for Subscribers { const ROS_SERVICE_NAME: &'static str = "rosapi/Subscribers"; const MD5SUM: &'static str = "cb387b68f5b29bc1456398ee8476b973"; type Request = SubscribersRequest; @@ -6851,43 +6851,43 @@ string value"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TopicTypeRequest { pub r#topic: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for TopicTypeRequest { + impl ::roslibrust::RosMessageType for TopicTypeRequest { const ROS_TYPE_NAME: &'static str = "rosapi/TopicTypeRequest"; const MD5SUM: &'static str = "d8f94bae31b356b24d0427f80426d0c3"; const DEFINITION: &'static str = r#"string topic"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TopicTypeResponse { pub r#type: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for TopicTypeResponse { + impl ::roslibrust::RosMessageType for TopicTypeResponse { const ROS_TYPE_NAME: &'static str = "rosapi/TopicTypeResponse"; const MD5SUM: &'static str = "dc67331de85cf97091b7d45e5c64ab75"; const DEFINITION: &'static str = r#"string type"#; } #[allow(dead_code)] pub struct TopicType {} - impl ::roslibrust_common::RosServiceType for TopicType { + impl ::roslibrust::RosServiceType for TopicType { const ROS_SERVICE_NAME: &'static str = "rosapi/TopicType"; const MD5SUM: &'static str = "0d30b3f53a0fd5036523a7141e524ddf"; type Request = TopicTypeRequest; @@ -6895,35 +6895,35 @@ string value"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TopicsRequest {} - impl ::roslibrust_common::RosMessageType for TopicsRequest { + impl ::roslibrust::RosMessageType for TopicsRequest { const ROS_TYPE_NAME: &'static str = "rosapi/TopicsRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TopicsResponse { pub r#topics: ::std::vec::Vec<::std::string::String>, pub r#types: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for TopicsResponse { + impl ::roslibrust::RosMessageType for TopicsResponse { const ROS_TYPE_NAME: &'static str = "rosapi/TopicsResponse"; const MD5SUM: &'static str = "d966d98fc333fa1f3135af765eac1ba8"; const DEFINITION: &'static str = r#"string[] topics @@ -6931,7 +6931,7 @@ string[] types"#; } #[allow(dead_code)] pub struct Topics {} - impl ::roslibrust_common::RosServiceType for Topics { + impl ::roslibrust::RosServiceType for Topics { const ROS_SERVICE_NAME: &'static str = "rosapi/Topics"; const MD5SUM: &'static str = "d966d98fc333fa1f3135af765eac1ba8"; type Request = TopicsRequest; @@ -6939,36 +6939,36 @@ string[] types"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TopicsAndRawTypesRequest {} - impl ::roslibrust_common::RosMessageType for TopicsAndRawTypesRequest { + impl ::roslibrust::RosMessageType for TopicsAndRawTypesRequest { const ROS_TYPE_NAME: &'static str = "rosapi/TopicsAndRawTypesRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TopicsAndRawTypesResponse { pub r#topics: ::std::vec::Vec<::std::string::String>, pub r#types: ::std::vec::Vec<::std::string::String>, pub r#typedefs_full_text: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for TopicsAndRawTypesResponse { + impl ::roslibrust::RosMessageType for TopicsAndRawTypesResponse { const ROS_TYPE_NAME: &'static str = "rosapi/TopicsAndRawTypesResponse"; const MD5SUM: &'static str = "e1432466c8f64316723276ba07c59d12"; const DEFINITION: &'static str = r#"string[] topics @@ -6977,7 +6977,7 @@ string[] typedefs_full_text"#; } #[allow(dead_code)] pub struct TopicsAndRawTypes {} - impl ::roslibrust_common::RosServiceType for TopicsAndRawTypes { + impl ::roslibrust::RosServiceType for TopicsAndRawTypes { const ROS_SERVICE_NAME: &'static str = "rosapi/TopicsAndRawTypes"; const MD5SUM: &'static str = "e1432466c8f64316723276ba07c59d12"; type Request = TopicsAndRawTypesRequest; @@ -6985,43 +6985,43 @@ string[] typedefs_full_text"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TopicsForTypeRequest { pub r#type: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for TopicsForTypeRequest { + impl ::roslibrust::RosMessageType for TopicsForTypeRequest { const ROS_TYPE_NAME: &'static str = "rosapi/TopicsForTypeRequest"; const MD5SUM: &'static str = "dc67331de85cf97091b7d45e5c64ab75"; const DEFINITION: &'static str = r#"string type"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TopicsForTypeResponse { pub r#topics: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for TopicsForTypeResponse { + impl ::roslibrust::RosMessageType for TopicsForTypeResponse { const ROS_TYPE_NAME: &'static str = "rosapi/TopicsForTypeResponse"; const MD5SUM: &'static str = "b0eef9a05d4e829092fc2f2c3c2aad3d"; const DEFINITION: &'static str = r#"string[] topics"#; } #[allow(dead_code)] pub struct TopicsForType {} - impl ::roslibrust_common::RosServiceType for TopicsForType { + impl ::roslibrust::RosServiceType for TopicsForType { const ROS_SERVICE_NAME: &'static str = "rosapi/TopicsForType"; const MD5SUM: &'static str = "56f77ff6da756dd27c1ed16ec721072a"; type Request = TopicsForTypeRequest; @@ -7045,18 +7045,18 @@ pub mod rosgraph_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Clock { - pub r#clock: ::roslibrust_codegen::integral_types::Time, + pub r#clock: ::roslibrust::codegen::integral_types::Time, } - impl ::roslibrust_common::RosMessageType for Clock { + impl ::roslibrust::RosMessageType for Clock { const ROS_TYPE_NAME: &'static str = "rosgraph_msgs/Clock"; const MD5SUM: &'static str = "a9c97c1d230cfc112e270351a944ee47"; const DEFINITION: &'static str = r#"# roslib/Clock is used for publishing simulated time in ROS. @@ -7066,14 +7066,14 @@ time clock"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Log { pub r#header: std_msgs::Header, pub r#level: u8, @@ -7084,7 +7084,7 @@ time clock"#; pub r#line: u32, pub r#topics: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for Log { + impl ::roslibrust::RosMessageType for Log { const ROS_TYPE_NAME: &'static str = "rosgraph_msgs/Log"; const MD5SUM: &'static str = "acffd30cd6b6de30f120938c17c593fb"; const DEFINITION: &'static str = r#"## @@ -7132,31 +7132,31 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TopicStatistics { pub r#topic: ::std::string::String, pub r#node_pub: ::std::string::String, pub r#node_sub: ::std::string::String, - pub r#window_start: ::roslibrust_codegen::integral_types::Time, - pub r#window_stop: ::roslibrust_codegen::integral_types::Time, + pub r#window_start: ::roslibrust::codegen::integral_types::Time, + pub r#window_stop: ::roslibrust::codegen::integral_types::Time, pub r#delivered_msgs: i32, pub r#dropped_msgs: i32, pub r#traffic: i32, - pub r#period_mean: ::roslibrust_codegen::integral_types::Duration, - pub r#period_stddev: ::roslibrust_codegen::integral_types::Duration, - pub r#period_max: ::roslibrust_codegen::integral_types::Duration, - pub r#stamp_age_mean: ::roslibrust_codegen::integral_types::Duration, - pub r#stamp_age_stddev: ::roslibrust_codegen::integral_types::Duration, - pub r#stamp_age_max: ::roslibrust_codegen::integral_types::Duration, - } - impl ::roslibrust_common::RosMessageType for TopicStatistics { + pub r#period_mean: ::roslibrust::codegen::integral_types::Duration, + pub r#period_stddev: ::roslibrust::codegen::integral_types::Duration, + pub r#period_max: ::roslibrust::codegen::integral_types::Duration, + pub r#stamp_age_mean: ::roslibrust::codegen::integral_types::Duration, + pub r#stamp_age_stddev: ::roslibrust::codegen::integral_types::Duration, + pub r#stamp_age_max: ::roslibrust::codegen::integral_types::Duration, + } + impl ::roslibrust::RosMessageType for TopicStatistics { const ROS_TYPE_NAME: &'static str = "rosgraph_msgs/TopicStatistics"; const MD5SUM: &'static str = "10152ed868c5097a5e2e4a89d7daa710"; const DEFINITION: &'static str = r#"# name of the topic @@ -7210,14 +7210,14 @@ pub mod sensor_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct BatteryState { pub r#header: std_msgs::Header, pub r#voltage: f32, @@ -7236,7 +7236,7 @@ pub mod sensor_msgs { pub r#location: ::std::string::String, pub r#serial_number: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for BatteryState { + impl ::roslibrust::RosMessageType for BatteryState { const ROS_TYPE_NAME: &'static str = "sensor_msgs/BatteryState"; const MD5SUM: &'static str = "4ddae7f048e32fda22cac764685e3974"; const DEFINITION: &'static str = r#"# Constants are chosen to match the enums in the linux kernel @@ -7332,14 +7332,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct CameraInfo { pub r#header: std_msgs::Header, pub r#height: u32, @@ -7353,7 +7353,7 @@ string frame_id"#; pub r#binning_y: u32, pub r#roi: self::RegionOfInterest, } - impl ::roslibrust_common::RosMessageType for CameraInfo { + impl ::roslibrust::RosMessageType for CameraInfo { const ROS_TYPE_NAME: &'static str = "sensor_msgs/CameraInfo"; const MD5SUM: &'static str = "c9a58c1b0b154e0e6da7578cb991d214"; const DEFINITION: &'static str = r#"# This message defines meta information for a camera. It should be in a @@ -7526,19 +7526,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ChannelFloat32 { pub r#name: ::std::string::String, pub r#values: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for ChannelFloat32 { + impl ::roslibrust::RosMessageType for ChannelFloat32 { const ROS_TYPE_NAME: &'static str = "sensor_msgs/ChannelFloat32"; const MD5SUM: &'static str = "3d40139cdd33dfedcb71ffeeeb42ae7f"; const DEFINITION: &'static str = r#"# This message is used by the PointCloud message to hold optional data @@ -7568,21 +7568,21 @@ float32[] values"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct CompressedImage { pub r#header: std_msgs::Header, pub r#format: ::std::string::String, - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for CompressedImage { + impl ::roslibrust::RosMessageType for CompressedImage { const ROS_TYPE_NAME: &'static str = "sensor_msgs/CompressedImage"; const MD5SUM: &'static str = "8f7a12909da2c9d3332d540a0977563f"; const DEFINITION: &'static str = r#"# This message contains a compressed image @@ -7616,20 +7616,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct FluidPressure { pub r#header: std_msgs::Header, pub r#fluid_pressure: f64, pub r#variance: f64, } - impl ::roslibrust_common::RosMessageType for FluidPressure { + impl ::roslibrust::RosMessageType for FluidPressure { const ROS_TYPE_NAME: &'static str = "sensor_msgs/FluidPressure"; const MD5SUM: &'static str = "804dc5cea1c5306d6a2eb80b9833befe"; const DEFINITION: &'static str = r#"# Single pressure reading. This message is appropriate for measuring the @@ -7662,20 +7662,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Illuminance { pub r#header: std_msgs::Header, pub r#illuminance: f64, pub r#variance: f64, } - impl ::roslibrust_common::RosMessageType for Illuminance { + impl ::roslibrust::RosMessageType for Illuminance { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Illuminance"; const MD5SUM: &'static str = "8cf5febb0952fca9d650c3d11a81a188"; const DEFINITION: &'static str = r#"# Single photometric illuminance measurement. Light should be assumed to be @@ -7717,14 +7717,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Image { pub r#header: std_msgs::Header, pub r#height: u32, @@ -7732,10 +7732,10 @@ string frame_id"#; pub r#encoding: ::std::string::String, pub r#is_bigendian: u8, pub r#step: u32, - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Image { + impl ::roslibrust::RosMessageType for Image { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Image"; const MD5SUM: &'static str = "060021388200f6f0f447d0fcd9c64743"; const DEFINITION: &'static str = r#"# This message contains an uncompressed image @@ -7783,14 +7783,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Imu { pub r#header: std_msgs::Header, pub r#orientation: geometry_msgs::Quaternion, @@ -7800,7 +7800,7 @@ string frame_id"#; pub r#linear_acceleration: geometry_msgs::Vector3, pub r#linear_acceleration_covariance: [f64; 9], } - impl ::roslibrust_common::RosMessageType for Imu { + impl ::roslibrust::RosMessageType for Imu { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Imu"; const MD5SUM: &'static str = "6a62c6daae103f4ff57a132d6f95cec2"; const DEFINITION: &'static str = r#"# This is a message to hold data from an IMU (Inertial Measurement Unit) @@ -7865,14 +7865,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct JointState { pub r#header: std_msgs::Header, pub r#name: ::std::vec::Vec<::std::string::String>, @@ -7880,7 +7880,7 @@ string frame_id"#; pub r#velocity: ::std::vec::Vec, pub r#effort: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for JointState { + impl ::roslibrust::RosMessageType for JointState { const ROS_TYPE_NAME: &'static str = "sensor_msgs/JointState"; const MD5SUM: &'static str = "3066dcd76a6cfaef579bd0f34173e9fd"; const DEFINITION: &'static str = r#"# This is a message that holds data to describe the state of a set of torque controlled joints. @@ -7927,20 +7927,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Joy { pub r#header: std_msgs::Header, pub r#axes: ::std::vec::Vec, pub r#buttons: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Joy { + impl ::roslibrust::RosMessageType for Joy { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Joy"; const MD5SUM: &'static str = "5a9ea5f83505693b71e785041e67a8bb"; const DEFINITION: &'static str = r#"# Reports the state of a joysticks axes and buttons. @@ -7965,20 +7965,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct JoyFeedback { pub r#type: u8, pub r#id: u8, pub r#intensity: f32, } - impl ::roslibrust_common::RosMessageType for JoyFeedback { + impl ::roslibrust::RosMessageType for JoyFeedback { const ROS_TYPE_NAME: &'static str = "sensor_msgs/JoyFeedback"; const MD5SUM: &'static str = "f4dcd73460360d98f36e55ee7f2e46f1"; const DEFINITION: &'static str = r#"# Declare of the type of feedback @@ -8004,18 +8004,18 @@ float32 intensity"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct JoyFeedbackArray { pub r#array: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for JoyFeedbackArray { + impl ::roslibrust::RosMessageType for JoyFeedbackArray { const ROS_TYPE_NAME: &'static str = "sensor_msgs/JoyFeedbackArray"; const MD5SUM: &'static str = "cde5730a895b1fc4dee6f91b754b213d"; const DEFINITION: &'static str = r#"# This message publishes values for multiple feedback at once. @@ -8039,18 +8039,18 @@ float32 intensity"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct LaserEcho { pub r#echoes: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for LaserEcho { + impl ::roslibrust::RosMessageType for LaserEcho { const ROS_TYPE_NAME: &'static str = "sensor_msgs/LaserEcho"; const MD5SUM: &'static str = "8bc5ae449b200fba4d552b4225586696"; const DEFINITION: &'static str = r#"# This message is a submessage of MultiEchoLaserScan and is not intended @@ -8061,14 +8061,14 @@ float32[] echoes # Multiple values of ranges or intensities. } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct LaserScan { pub r#header: std_msgs::Header, pub r#angle_min: f32, @@ -8081,7 +8081,7 @@ float32[] echoes # Multiple values of ranges or intensities. pub r#ranges: ::std::vec::Vec, pub r#intensities: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for LaserScan { + impl ::roslibrust::RosMessageType for LaserScan { const ROS_TYPE_NAME: &'static str = "sensor_msgs/LaserScan"; const MD5SUM: &'static str = "90c7ef2dc6895d81024acba2ac42f369"; const DEFINITION: &'static str = r#"# Single scan from a planar laser range-finder @@ -8131,20 +8131,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MagneticField { pub r#header: std_msgs::Header, pub r#magnetic_field: geometry_msgs::Vector3, pub r#magnetic_field_covariance: [f64; 9], } - impl ::roslibrust_common::RosMessageType for MagneticField { + impl ::roslibrust::RosMessageType for MagneticField { const ROS_TYPE_NAME: &'static str = "sensor_msgs/MagneticField"; const MD5SUM: &'static str = "2f3b0b43eed0c9501de0fa3ff89a45aa"; const DEFINITION: &'static str = r#"# Measurement of the Magnetic Field vector at a specific location. @@ -8199,14 +8199,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiDOFJointState { pub r#header: std_msgs::Header, pub r#joint_names: ::std::vec::Vec<::std::string::String>, @@ -8214,7 +8214,7 @@ string frame_id"#; pub r#twist: ::std::vec::Vec, pub r#wrench: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for MultiDOFJointState { + impl ::roslibrust::RosMessageType for MultiDOFJointState { const ROS_TYPE_NAME: &'static str = "sensor_msgs/MultiDOFJointState"; const MD5SUM: &'static str = "690f272f0640d2631c305eeb8301e59d"; const DEFINITION: &'static str = r#"# Representation of state for joints with multiple degrees of freedom, @@ -8342,14 +8342,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiEchoLaserScan { pub r#header: std_msgs::Header, pub r#angle_min: f32, @@ -8362,7 +8362,7 @@ string frame_id"#; pub r#ranges: ::std::vec::Vec, pub r#intensities: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for MultiEchoLaserScan { + impl ::roslibrust::RosMessageType for MultiEchoLaserScan { const ROS_TYPE_NAME: &'static str = "sensor_msgs/MultiEchoLaserScan"; const MD5SUM: &'static str = "6fefb0c6da89d7c8abe4b339f5c2f8fb"; const DEFINITION: &'static str = r#"# Single scan from a multi-echo planar laser range-finder @@ -8421,14 +8421,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct NavSatFix { pub r#header: std_msgs::Header, pub r#status: self::NavSatStatus, @@ -8438,7 +8438,7 @@ string frame_id"#; pub r#position_covariance: [f64; 9], pub r#position_covariance_type: u8, } - impl ::roslibrust_common::RosMessageType for NavSatFix { + impl ::roslibrust::RosMessageType for NavSatFix { const ROS_TYPE_NAME: &'static str = "sensor_msgs/NavSatFix"; const MD5SUM: &'static str = "2d3a8cd499b9b4a0249fb98fd05cfa48"; const DEFINITION: &'static str = r#"# Navigation Satellite fix for any Global Navigation Satellite System @@ -8536,19 +8536,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct NavSatStatus { pub r#status: i8, pub r#service: u16, } - impl ::roslibrust_common::RosMessageType for NavSatStatus { + impl ::roslibrust::RosMessageType for NavSatStatus { const ROS_TYPE_NAME: &'static str = "sensor_msgs/NavSatStatus"; const MD5SUM: &'static str = "331cdbddfa4bc96ffc3b9ad98900a54c"; const DEFINITION: &'static str = r#"# Navigation Satellite fix status for any Global Navigation Satellite System @@ -8587,20 +8587,20 @@ uint16 service"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PointCloud { pub r#header: std_msgs::Header, pub r#points: ::std::vec::Vec, pub r#channels: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for PointCloud { + impl ::roslibrust::RosMessageType for PointCloud { const ROS_TYPE_NAME: &'static str = "sensor_msgs/PointCloud"; const MD5SUM: &'static str = "d8e9c3f5afbdd8a130fd1d2763945fca"; const DEFINITION: &'static str = r#"# This message holds a collection of 3d points, plus optional additional @@ -8674,14 +8674,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PointCloud2 { pub r#header: std_msgs::Header, pub r#height: u32, @@ -8690,11 +8690,11 @@ string frame_id"#; pub r#is_bigendian: bool, pub r#point_step: u32, pub r#row_step: u32, - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#data: ::std::vec::Vec, pub r#is_dense: bool, } - impl ::roslibrust_common::RosMessageType for PointCloud2 { + impl ::roslibrust::RosMessageType for PointCloud2 { const ROS_TYPE_NAME: &'static str = "sensor_msgs/PointCloud2"; const MD5SUM: &'static str = "1158d486dd51d683ce2f1be655c3c181"; const DEFINITION: &'static str = r#"# This message holds a collection of N-dimensional points, which may @@ -8759,21 +8759,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PointField { pub r#name: ::std::string::String, pub r#offset: u32, pub r#datatype: u8, pub r#count: u32, } - impl ::roslibrust_common::RosMessageType for PointField { + impl ::roslibrust::RosMessageType for PointField { const ROS_TYPE_NAME: &'static str = "sensor_msgs/PointField"; const MD5SUM: &'static str = "268eacb2962780ceac86cbd17e328150"; const DEFINITION: &'static str = r#"# This message holds the description of one point entry in the @@ -8805,14 +8805,14 @@ uint32 count # How many elements in the field"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Range { pub r#header: std_msgs::Header, pub r#radiation_type: u8, @@ -8821,7 +8821,7 @@ uint32 count # How many elements in the field"#; pub r#max_range: f32, pub r#range: f32, } - impl ::roslibrust_common::RosMessageType for Range { + impl ::roslibrust::RosMessageType for Range { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Range"; const MD5SUM: &'static str = "c005c34273dc426c67a020a87bc24148"; const DEFINITION: &'static str = r#"# Single range reading from an active ranger that emits energy and reports @@ -8887,14 +8887,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct RegionOfInterest { pub r#x_offset: u32, pub r#y_offset: u32, @@ -8902,7 +8902,7 @@ string frame_id"#; pub r#width: u32, pub r#do_rectify: bool, } - impl ::roslibrust_common::RosMessageType for RegionOfInterest { + impl ::roslibrust::RosMessageType for RegionOfInterest { const ROS_TYPE_NAME: &'static str = "sensor_msgs/RegionOfInterest"; const MD5SUM: &'static str = "bdb633039d588fcccb441a4d43ccfe09"; const DEFINITION: &'static str = r#"# This message is used to specify a region of interest within an image. @@ -8927,20 +8927,20 @@ bool do_rectify"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct RelativeHumidity { pub r#header: std_msgs::Header, pub r#relative_humidity: f64, pub r#variance: f64, } - impl ::roslibrust_common::RosMessageType for RelativeHumidity { + impl ::roslibrust::RosMessageType for RelativeHumidity { const ROS_TYPE_NAME: &'static str = "sensor_msgs/RelativeHumidity"; const MD5SUM: &'static str = "8730015b05955b7e992ce29a2678d90f"; const DEFINITION: &'static str = r#"# Single reading from a relative humidity sensor. Defines the ratio of partial @@ -8973,20 +8973,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Temperature { pub r#header: std_msgs::Header, pub r#temperature: f64, pub r#variance: f64, } - impl ::roslibrust_common::RosMessageType for Temperature { + impl ::roslibrust::RosMessageType for Temperature { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Temperature"; const MD5SUM: &'static str = "ff71b307acdbe7c871a5a6d7ed359100"; const DEFINITION: &'static str = r#"# Single temperature reading. @@ -9015,20 +9015,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TimeReference { pub r#header: std_msgs::Header, - pub r#time_ref: ::roslibrust_codegen::integral_types::Time, + pub r#time_ref: ::roslibrust::codegen::integral_types::Time, pub r#source: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for TimeReference { + impl ::roslibrust::RosMessageType for TimeReference { const ROS_TYPE_NAME: &'static str = "sensor_msgs/TimeReference"; const MD5SUM: &'static str = "fded64a0265108ba86c3d38fb11c0c16"; const DEFINITION: &'static str = r#"# Measurement from an external time source not actively synchronized with the system clock. @@ -9056,18 +9056,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetCameraInfoRequest { pub r#camera_info: self::CameraInfo, } - impl ::roslibrust_common::RosMessageType for SetCameraInfoRequest { + impl ::roslibrust::RosMessageType for SetCameraInfoRequest { const ROS_TYPE_NAME: &'static str = "sensor_msgs/SetCameraInfoRequest"; const MD5SUM: &'static str = "ee34be01fdeee563d0d99cd594d5581d"; const DEFINITION: &'static str = r#"# This service requests that a camera stores the given CameraInfo @@ -9287,19 +9287,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetCameraInfoResponse { pub r#success: bool, pub r#status_message: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for SetCameraInfoResponse { + impl ::roslibrust::RosMessageType for SetCameraInfoResponse { const ROS_TYPE_NAME: &'static str = "sensor_msgs/SetCameraInfoResponse"; const MD5SUM: &'static str = "2ec6f3eff0161f4257b808b12bc830c2"; const DEFINITION: &'static str = r#"bool success # True if the call succeeded @@ -9307,7 +9307,7 @@ string status_message # Used to give details about success"#; } #[allow(dead_code)] pub struct SetCameraInfo {} - impl ::roslibrust_common::RosServiceType for SetCameraInfo { + impl ::roslibrust::RosServiceType for SetCameraInfo { const ROS_SERVICE_NAME: &'static str = "sensor_msgs/SetCameraInfo"; const MD5SUM: &'static str = "bef1df590ed75ed1f393692395e15482"; type Request = SetCameraInfoRequest; @@ -9331,19 +9331,19 @@ pub mod shape_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Mesh { pub r#triangles: ::std::vec::Vec, pub r#vertices: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Mesh { + impl ::roslibrust::RosMessageType for Mesh { const ROS_TYPE_NAME: &'static str = "shape_msgs/Mesh"; const MD5SUM: &'static str = "1ffdae9486cd3316a121c578b47a85cc"; const DEFINITION: &'static str = r#"# Definition of a mesh @@ -9366,18 +9366,18 @@ uint32[3] vertex_indices"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MeshTriangle { pub r#vertex_indices: [u32; 3], } - impl ::roslibrust_common::RosMessageType for MeshTriangle { + impl ::roslibrust::RosMessageType for MeshTriangle { const ROS_TYPE_NAME: &'static str = "shape_msgs/MeshTriangle"; const MD5SUM: &'static str = "23688b2e6d2de3d32fe8af104a903253"; const DEFINITION: &'static str = r#"# Definition of a triangle's vertices @@ -9385,18 +9385,18 @@ uint32[3] vertex_indices"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Plane { pub r#coef: [f64; 4], } - impl ::roslibrust_common::RosMessageType for Plane { + impl ::roslibrust::RosMessageType for Plane { const ROS_TYPE_NAME: &'static str = "shape_msgs/Plane"; const MD5SUM: &'static str = "2c1b92ed8f31492f8e73f6a4a44ca796"; const DEFINITION: &'static str = r#"# Representation of a plane, using the plane equation ax + by + cz + d = 0 @@ -9410,19 +9410,19 @@ float64[4] coef"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SolidPrimitive { pub r#type: u8, pub r#dimensions: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for SolidPrimitive { + impl ::roslibrust::RosMessageType for SolidPrimitive { const ROS_TYPE_NAME: &'static str = "shape_msgs/SolidPrimitive"; const MD5SUM: &'static str = "d8f8cbc74c5ff283fca29569ccefb45d"; const DEFINITION: &'static str = r#"# Define box, sphere, cylinder, cone @@ -9501,55 +9501,55 @@ pub mod std_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Bool { pub r#data: bool, } - impl ::roslibrust_common::RosMessageType for Bool { + impl ::roslibrust::RosMessageType for Bool { const ROS_TYPE_NAME: &'static str = "std_msgs/Bool"; const MD5SUM: &'static str = "8b94c1b53db61fb6aed406028ad6332a"; const DEFINITION: &'static str = r#"bool data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Byte { pub r#data: u8, } - impl ::roslibrust_common::RosMessageType for Byte { + impl ::roslibrust::RosMessageType for Byte { const ROS_TYPE_NAME: &'static str = "std_msgs/Byte"; const MD5SUM: &'static str = "ad736a2e8818154c487bb80fe42ce43b"; const DEFINITION: &'static str = r#"byte data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ByteMultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for ByteMultiArray { + impl ::roslibrust::RosMessageType for ByteMultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/ByteMultiArray"; const MD5SUM: &'static str = "70ea476cbcfd65ac2f68f3cda1e891fe"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -9598,39 +9598,39 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Char { pub r#data: u8, } - impl ::roslibrust_common::RosMessageType for Char { + impl ::roslibrust::RosMessageType for Char { const ROS_TYPE_NAME: &'static str = "std_msgs/Char"; const MD5SUM: &'static str = "1bf77f25acecdedba0e224b162199717"; const DEFINITION: &'static str = r#"char data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ColorRGBA { pub r#r: f32, pub r#g: f32, pub r#b: f32, pub r#a: f32, } - impl ::roslibrust_common::RosMessageType for ColorRGBA { + impl ::roslibrust::RosMessageType for ColorRGBA { const ROS_TYPE_NAME: &'static str = "std_msgs/ColorRGBA"; const MD5SUM: &'static str = "a29a96539573343b1310c73607334b00"; const DEFINITION: &'static str = r#"float32 r @@ -9640,71 +9640,71 @@ float32 a"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Duration { - pub r#data: ::roslibrust_codegen::integral_types::Duration, + pub r#data: ::roslibrust::codegen::integral_types::Duration, } - impl ::roslibrust_common::RosMessageType for Duration { + impl ::roslibrust::RosMessageType for Duration { const ROS_TYPE_NAME: &'static str = "std_msgs/Duration"; const MD5SUM: &'static str = "3e286caf4241d664e55f3ad380e2ae46"; const DEFINITION: &'static str = r#"duration data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Empty {} - impl ::roslibrust_common::RosMessageType for Empty { + impl ::roslibrust::RosMessageType for Empty { const ROS_TYPE_NAME: &'static str = "std_msgs/Empty"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Float32 { pub r#data: f32, } - impl ::roslibrust_common::RosMessageType for Float32 { + impl ::roslibrust::RosMessageType for Float32 { const ROS_TYPE_NAME: &'static str = "std_msgs/Float32"; const MD5SUM: &'static str = "73fcbf46b49191e672908e50842a83d4"; const DEFINITION: &'static str = r#"float32 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Float32MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Float32MultiArray { + impl ::roslibrust::RosMessageType for Float32MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Float32MultiArray"; const MD5SUM: &'static str = "6a40e0ffa6a17a503ac3f8616991b1f6"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -9753,37 +9753,37 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Float64 { pub r#data: f64, } - impl ::roslibrust_common::RosMessageType for Float64 { + impl ::roslibrust::RosMessageType for Float64 { const ROS_TYPE_NAME: &'static str = "std_msgs/Float64"; const MD5SUM: &'static str = "fdb28210bfa9d7c91146260178d9a584"; const DEFINITION: &'static str = r#"float64 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Float64MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Float64MultiArray { + impl ::roslibrust::RosMessageType for Float64MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Float64MultiArray"; const MD5SUM: &'static str = "4b7d974086d4060e7db4613a7e6c3ba4"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -9832,20 +9832,20 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Header { pub r#seq: u32, - pub r#stamp: ::roslibrust_codegen::integral_types::Time, + pub r#stamp: ::roslibrust::codegen::integral_types::Time, pub r#frame_id: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for Header { + impl ::roslibrust::RosMessageType for Header { const ROS_TYPE_NAME: &'static str = "std_msgs/Header"; const MD5SUM: &'static str = "2176decaecbce78abc3b96ef049fabed"; const DEFINITION: &'static str = r#"# Standard metadata for higher-level stamped data types. @@ -9864,37 +9864,37 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int16 { pub r#data: i16, } - impl ::roslibrust_common::RosMessageType for Int16 { + impl ::roslibrust::RosMessageType for Int16 { const ROS_TYPE_NAME: &'static str = "std_msgs/Int16"; const MD5SUM: &'static str = "8524586e34fbd7cb1c08c5f5f1ca0e57"; const DEFINITION: &'static str = r#"int16 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int16MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Int16MultiArray { + impl ::roslibrust::RosMessageType for Int16MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Int16MultiArray"; const MD5SUM: &'static str = "d9338d7f523fcb692fae9d0a0e9f067c"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -9943,37 +9943,37 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int32 { pub r#data: i32, } - impl ::roslibrust_common::RosMessageType for Int32 { + impl ::roslibrust::RosMessageType for Int32 { const ROS_TYPE_NAME: &'static str = "std_msgs/Int32"; const MD5SUM: &'static str = "da5909fbe378aeaf85e547e830cc1bb7"; const DEFINITION: &'static str = r#"int32 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int32MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Int32MultiArray { + impl ::roslibrust::RosMessageType for Int32MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Int32MultiArray"; const MD5SUM: &'static str = "1d99f79f8b325b44fee908053e9c945b"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -10022,37 +10022,37 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int64 { pub r#data: i64, } - impl ::roslibrust_common::RosMessageType for Int64 { + impl ::roslibrust::RosMessageType for Int64 { const ROS_TYPE_NAME: &'static str = "std_msgs/Int64"; const MD5SUM: &'static str = "34add168574510e6e17f5d23ecc077ef"; const DEFINITION: &'static str = r#"int64 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int64MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Int64MultiArray { + impl ::roslibrust::RosMessageType for Int64MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Int64MultiArray"; const MD5SUM: &'static str = "54865aa6c65be0448113a2afc6a49270"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -10101,37 +10101,37 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int8 { pub r#data: i8, } - impl ::roslibrust_common::RosMessageType for Int8 { + impl ::roslibrust::RosMessageType for Int8 { const ROS_TYPE_NAME: &'static str = "std_msgs/Int8"; const MD5SUM: &'static str = "27ffa0c9c4b8fb8492252bcad9e5c57b"; const DEFINITION: &'static str = r#"int8 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int8MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Int8MultiArray { + impl ::roslibrust::RosMessageType for Int8MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Int8MultiArray"; const MD5SUM: &'static str = "d7c1af35a1b4781bbe79e03dd94b7c13"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -10180,20 +10180,20 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiArrayDimension { pub r#label: ::std::string::String, pub r#size: u32, pub r#stride: u32, } - impl ::roslibrust_common::RosMessageType for MultiArrayDimension { + impl ::roslibrust::RosMessageType for MultiArrayDimension { const ROS_TYPE_NAME: &'static str = "std_msgs/MultiArrayDimension"; const MD5SUM: &'static str = "4cd0c83a8683deae40ecdac60e53bfa8"; const DEFINITION: &'static str = r#"string label # label of given dimension @@ -10202,19 +10202,19 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiArrayLayout { pub r#dim: ::std::vec::Vec, pub r#data_offset: u32, } - impl ::roslibrust_common::RosMessageType for MultiArrayLayout { + impl ::roslibrust::RosMessageType for MultiArrayLayout { const ROS_TYPE_NAME: &'static str = "std_msgs/MultiArrayLayout"; const MD5SUM: &'static str = "0fed2a11c13e11c5571b4e2a995a91a3"; const DEFINITION: &'static str = r#"# The multiarray declares a generic multi-dimensional array of a @@ -10251,73 +10251,73 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct String { pub r#data: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for String { + impl ::roslibrust::RosMessageType for String { const ROS_TYPE_NAME: &'static str = "std_msgs/String"; const MD5SUM: &'static str = "992ce8a1687cec8c8bd883ec73ca41d1"; const DEFINITION: &'static str = r#"string data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Time { - pub r#data: ::roslibrust_codegen::integral_types::Time, + pub r#data: ::roslibrust::codegen::integral_types::Time, } - impl ::roslibrust_common::RosMessageType for Time { + impl ::roslibrust::RosMessageType for Time { const ROS_TYPE_NAME: &'static str = "std_msgs/Time"; const MD5SUM: &'static str = "cd7166c74c552c311fbcc2fe5a7bc289"; const DEFINITION: &'static str = r#"time data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt16 { pub r#data: u16, } - impl ::roslibrust_common::RosMessageType for UInt16 { + impl ::roslibrust::RosMessageType for UInt16 { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt16"; const MD5SUM: &'static str = "1df79edf208b629fe6b81923a544552d"; const DEFINITION: &'static str = r#"uint16 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt16MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for UInt16MultiArray { + impl ::roslibrust::RosMessageType for UInt16MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt16MultiArray"; const MD5SUM: &'static str = "52f264f1c973c4b73790d384c6cb4484"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -10366,37 +10366,37 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt32 { pub r#data: u32, } - impl ::roslibrust_common::RosMessageType for UInt32 { + impl ::roslibrust::RosMessageType for UInt32 { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt32"; const MD5SUM: &'static str = "304a39449588c7f8ce2df6e8001c5fce"; const DEFINITION: &'static str = r#"uint32 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt32MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for UInt32MultiArray { + impl ::roslibrust::RosMessageType for UInt32MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt32MultiArray"; const MD5SUM: &'static str = "4d6a180abc9be191b96a7eda6c8a233d"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -10445,37 +10445,37 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt64 { pub r#data: u64, } - impl ::roslibrust_common::RosMessageType for UInt64 { + impl ::roslibrust::RosMessageType for UInt64 { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt64"; const MD5SUM: &'static str = "1b2a79973e8bf53d7b53acb71299cb57"; const DEFINITION: &'static str = r#"uint64 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt64MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for UInt64MultiArray { + impl ::roslibrust::RosMessageType for UInt64MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt64MultiArray"; const MD5SUM: &'static str = "6088f127afb1d6c72927aa1247e945af"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -10524,38 +10524,38 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt8 { pub r#data: u8, } - impl ::roslibrust_common::RosMessageType for UInt8 { + impl ::roslibrust::RosMessageType for UInt8 { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt8"; const MD5SUM: &'static str = "7c8164229e7d2c17eb95e9231617fdee"; const DEFINITION: &'static str = r#"uint8 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt8MultiArray { pub r#layout: self::MultiArrayLayout, - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for UInt8MultiArray { + impl ::roslibrust::RosMessageType for UInt8MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt8MultiArray"; const MD5SUM: &'static str = "82373f1612381bb6ee473b5cd6f5d89c"; const DEFINITION: &'static str = r#"# Please look at the MultiArrayLayout message definition for @@ -10620,39 +10620,39 @@ pub mod std_srvs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct EmptyRequest {} - impl ::roslibrust_common::RosMessageType for EmptyRequest { + impl ::roslibrust::RosMessageType for EmptyRequest { const ROS_TYPE_NAME: &'static str = "std_srvs/EmptyRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct EmptyResponse {} - impl ::roslibrust_common::RosMessageType for EmptyResponse { + impl ::roslibrust::RosMessageType for EmptyResponse { const ROS_TYPE_NAME: &'static str = "std_srvs/EmptyResponse"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(dead_code)] pub struct Empty {} - impl ::roslibrust_common::RosServiceType for Empty { + impl ::roslibrust::RosServiceType for Empty { const ROS_SERVICE_NAME: &'static str = "std_srvs/Empty"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; type Request = EmptyRequest; @@ -10660,37 +10660,37 @@ pub mod std_srvs { } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetBoolRequest { pub r#data: bool, } - impl ::roslibrust_common::RosMessageType for SetBoolRequest { + impl ::roslibrust::RosMessageType for SetBoolRequest { const ROS_TYPE_NAME: &'static str = "std_srvs/SetBoolRequest"; const MD5SUM: &'static str = "8b94c1b53db61fb6aed406028ad6332a"; const DEFINITION: &'static str = r#"bool data # e.g. for hardware enabling / disabling"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetBoolResponse { pub r#success: bool, pub r#message: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for SetBoolResponse { + impl ::roslibrust::RosMessageType for SetBoolResponse { const ROS_TYPE_NAME: &'static str = "std_srvs/SetBoolResponse"; const MD5SUM: &'static str = "937c9679a518e3a18d831e57125ea522"; const DEFINITION: &'static str = r#"bool success # indicate successful run of triggered service @@ -10698,7 +10698,7 @@ string message # informational, e.g. for error messages"#; } #[allow(dead_code)] pub struct SetBool {} - impl ::roslibrust_common::RosServiceType for SetBool { + impl ::roslibrust::RosServiceType for SetBool { const ROS_SERVICE_NAME: &'static str = "std_srvs/SetBool"; const MD5SUM: &'static str = "09fb03525b03e7ea1fd3992bafd87e16"; type Request = SetBoolRequest; @@ -10706,35 +10706,35 @@ string message # informational, e.g. for error messages"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TriggerRequest {} - impl ::roslibrust_common::RosMessageType for TriggerRequest { + impl ::roslibrust::RosMessageType for TriggerRequest { const ROS_TYPE_NAME: &'static str = "std_srvs/TriggerRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TriggerResponse { pub r#success: bool, pub r#message: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for TriggerResponse { + impl ::roslibrust::RosMessageType for TriggerResponse { const ROS_TYPE_NAME: &'static str = "std_srvs/TriggerResponse"; const MD5SUM: &'static str = "937c9679a518e3a18d831e57125ea522"; const DEFINITION: &'static str = r#"bool success # indicate successful run of triggered service @@ -10742,7 +10742,7 @@ string message # informational, e.g. for error messages"#; } #[allow(dead_code)] pub struct Trigger {} - impl ::roslibrust_common::RosServiceType for Trigger { + impl ::roslibrust::RosServiceType for Trigger { const ROS_SERVICE_NAME: &'static str = "std_srvs/Trigger"; const MD5SUM: &'static str = "937c9679a518e3a18d831e57125ea522"; type Request = TriggerRequest; @@ -10766,14 +10766,14 @@ pub mod stereo_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct DisparityImage { pub r#header: std_msgs::Header, pub r#image: sensor_msgs::Image, @@ -10784,7 +10784,7 @@ pub mod stereo_msgs { pub r#max_disparity: f32, pub r#delta_d: f32, } - impl ::roslibrust_common::RosMessageType for DisparityImage { + impl ::roslibrust::RosMessageType for DisparityImage { const ROS_TYPE_NAME: &'static str = "stereo_msgs/DisparityImage"; const MD5SUM: &'static str = "04a177815f75271039fa21f16acad8c9"; const DEFINITION: &'static str = r#"# Separate header for compatibility with current TimeSynchronizer. @@ -10915,16 +10915,16 @@ pub mod test_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Constants {} - impl ::roslibrust_common::RosMessageType for Constants { + impl ::roslibrust::RosMessageType for Constants { const ROS_TYPE_NAME: &'static str = "test_msgs/Constants"; const MD5SUM: &'static str = "027df5f26b72c57b1e40902038ca3eec"; const DEFINITION: &'static str = r#"string TEST_STR="/topic" @@ -10944,19 +10944,19 @@ float32 TEST_FLOAT=0 # testing"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Float64Stamped { pub r#header: std_msgs::Header, pub r#value: f64, } - impl ::roslibrust_common::RosMessageType for Float64Stamped { + impl ::roslibrust::RosMessageType for Float64Stamped { const ROS_TYPE_NAME: &'static str = "test_msgs/Float64Stamped"; const MD5SUM: &'static str = "d053817de0764f9ee90dbc89c4cdd751"; const DEFINITION: &'static str = r#"Header header @@ -10979,38 +10979,38 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct LoggerLevel { pub r#level: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for LoggerLevel { + impl ::roslibrust::RosMessageType for LoggerLevel { const ROS_TYPE_NAME: &'static str = "test_msgs/LoggerLevel"; const MD5SUM: &'static str = "097b0e938d0dd7788057f4cdc9013238"; const DEFINITION: &'static str = r#"string level"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Metric { pub r#name: ::std::string::String, pub r#time: f64, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Metric { + impl ::roslibrust::RosMessageType for Metric { const ROS_TYPE_NAME: &'static str = "test_msgs/Metric"; const MD5SUM: &'static str = "474be567370f515a7d5d3f3243aad369"; const DEFINITION: &'static str = r#"#Metric data type @@ -11028,19 +11028,19 @@ float64 value"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MetricPair { pub r#key: ::std::string::String, pub r#value: f64, } - impl ::roslibrust_common::RosMessageType for MetricPair { + impl ::roslibrust::RosMessageType for MetricPair { const ROS_TYPE_NAME: &'static str = "test_msgs/MetricPair"; const MD5SUM: &'static str = "a681f679e1c39fbe570b7737e7cf183d"; const DEFINITION: &'static str = r#"#Data type for storing the key/value pairs from the Metric.data map @@ -11050,20 +11050,20 @@ float64 value"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct NodeInfo { pub r#node_name: ::std::string::String, pub r#pid: i64, pub r#status: u8, } - impl ::roslibrust_common::RosMessageType for NodeInfo { + impl ::roslibrust::RosMessageType for NodeInfo { const ROS_TYPE_NAME: &'static str = "test_msgs/NodeInfo"; const MD5SUM: &'static str = "7fab1acc377fd48898b00b7f3a897f47"; const DEFINITION: &'static str = r#"string node_name @@ -11094,19 +11094,19 @@ uint8 status"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AddTwoIntsRequest { pub r#a: i64, pub r#b: i64, } - impl ::roslibrust_common::RosMessageType for AddTwoIntsRequest { + impl ::roslibrust::RosMessageType for AddTwoIntsRequest { const ROS_TYPE_NAME: &'static str = "test_msgs/AddTwoIntsRequest"; const MD5SUM: &'static str = "36d09b846be0b371c5f190354dd3153e"; const DEFINITION: &'static str = r#"# AddTwoInts.srv @@ -11117,18 +11117,18 @@ int64 b"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AddTwoIntsResponse { pub r#sum: i64, } - impl ::roslibrust_common::RosMessageType for AddTwoIntsResponse { + impl ::roslibrust::RosMessageType for AddTwoIntsResponse { const ROS_TYPE_NAME: &'static str = "test_msgs/AddTwoIntsResponse"; const MD5SUM: &'static str = "b88405221c77b1878a3cbbfff53428d7"; const DEFINITION: &'static str = r#"# Overflow? What overflow? @@ -11136,7 +11136,7 @@ int64 sum"#; } #[allow(dead_code)] pub struct AddTwoInts {} - impl ::roslibrust_common::RosServiceType for AddTwoInts { + impl ::roslibrust::RosServiceType for AddTwoInts { const ROS_SERVICE_NAME: &'static str = "test_msgs/AddTwoInts"; const MD5SUM: &'static str = "6a2e34150c00229791cc89ff309fff21"; type Request = AddTwoIntsRequest; @@ -11144,19 +11144,19 @@ int64 sum"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct RoundTripArrayRequest { - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#bytes: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for RoundTripArrayRequest { + impl ::roslibrust::RosMessageType for RoundTripArrayRequest { const ROS_TYPE_NAME: &'static str = "test_msgs/RoundTripArrayRequest"; const MD5SUM: &'static str = "d159f2bd8169d3b3339e6f1fce045c6d"; const DEFINITION: &'static str = r#"# Purpose of this array is send and receive a large payload @@ -11164,26 +11164,26 @@ uint8[] bytes"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct RoundTripArrayResponse { - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#bytes: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for RoundTripArrayResponse { + impl ::roslibrust::RosMessageType for RoundTripArrayResponse { const ROS_TYPE_NAME: &'static str = "test_msgs/RoundTripArrayResponse"; const MD5SUM: &'static str = "d159f2bd8169d3b3339e6f1fce045c6d"; const DEFINITION: &'static str = r#"uint8[] bytes"#; } #[allow(dead_code)] pub struct RoundTripArray {} - impl ::roslibrust_common::RosServiceType for RoundTripArray { + impl ::roslibrust::RosServiceType for RoundTripArray { const ROS_SERVICE_NAME: &'static str = "test_msgs/RoundTripArray"; const MD5SUM: &'static str = "6a66b36cb6abf834a48739776dfbe789"; type Request = RoundTripArrayRequest; @@ -11207,20 +11207,20 @@ pub mod trajectory_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct JointTrajectory { pub r#header: std_msgs::Header, pub r#joint_names: ::std::vec::Vec<::std::string::String>, pub r#points: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for JointTrajectory { + impl ::roslibrust::RosMessageType for JointTrajectory { const ROS_TYPE_NAME: &'static str = "trajectory_msgs/JointTrajectory"; const MD5SUM: &'static str = "65b4f94a94d1ed67169da35a02f33d3f"; const DEFINITION: &'static str = r#"Header header @@ -11255,22 +11255,22 @@ duration time_from_start"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct JointTrajectoryPoint { pub r#positions: ::std::vec::Vec, pub r#velocities: ::std::vec::Vec, pub r#accelerations: ::std::vec::Vec, pub r#effort: ::std::vec::Vec, - pub r#time_from_start: ::roslibrust_codegen::integral_types::Duration, + pub r#time_from_start: ::roslibrust::codegen::integral_types::Duration, } - impl ::roslibrust_common::RosMessageType for JointTrajectoryPoint { + impl ::roslibrust::RosMessageType for JointTrajectoryPoint { const ROS_TYPE_NAME: &'static str = "trajectory_msgs/JointTrajectoryPoint"; const MD5SUM: &'static str = "f3cd1e1c4d320c79d6985c904ae5dcd3"; const DEFINITION: &'static str = r#"# Each trajectory point specifies either positions[, velocities[, accelerations]] @@ -11285,20 +11285,20 @@ duration time_from_start"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiDOFJointTrajectory { pub r#header: std_msgs::Header, pub r#joint_names: ::std::vec::Vec<::std::string::String>, pub r#points: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for MultiDOFJointTrajectory { + impl ::roslibrust::RosMessageType for MultiDOFJointTrajectory { const ROS_TYPE_NAME: &'static str = "trajectory_msgs/MultiDOFJointTrajectory"; const MD5SUM: &'static str = "ef145a45a5f47b77b7f5cdde4b16c942"; const DEFINITION: &'static str = r#"# The header is used to specify the coordinate frame and the reference time for the trajectory durations @@ -11467,21 +11467,21 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiDOFJointTrajectoryPoint { pub r#transforms: ::std::vec::Vec, pub r#velocities: ::std::vec::Vec, pub r#accelerations: ::std::vec::Vec, - pub r#time_from_start: ::roslibrust_codegen::integral_types::Duration, + pub r#time_from_start: ::roslibrust::codegen::integral_types::Duration, } - impl ::roslibrust_common::RosMessageType for MultiDOFJointTrajectoryPoint { + impl ::roslibrust::RosMessageType for MultiDOFJointTrajectoryPoint { const ROS_TYPE_NAME: &'static str = "trajectory_msgs/MultiDOFJointTrajectoryPoint"; const MD5SUM: &'static str = "3ebe08d1abd5b65862d50e09430db776"; const DEFINITION: &'static str = r#"# Each multi-dof joint can specify a transform (up to 6 DOF) @@ -11576,14 +11576,14 @@ pub mod visualization_msgs { use super::trajectory_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ImageMarker { pub r#header: std_msgs::Header, pub r#ns: ::std::string::String, @@ -11595,11 +11595,11 @@ pub mod visualization_msgs { pub r#outline_color: std_msgs::ColorRGBA, pub r#filled: u8, pub r#fill_color: std_msgs::ColorRGBA, - pub r#lifetime: ::roslibrust_codegen::integral_types::Duration, + pub r#lifetime: ::roslibrust::codegen::integral_types::Duration, pub r#points: ::std::vec::Vec, pub r#outline_colors: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for ImageMarker { + impl ::roslibrust::RosMessageType for ImageMarker { const ROS_TYPE_NAME: &'static str = "visualization_msgs/ImageMarker"; const MD5SUM: &'static str = "1de93c67ec8858b831025a08fbf1b35c"; const DEFINITION: &'static str = r#"uint8 CIRCLE=0 @@ -11666,14 +11666,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarker { pub r#header: std_msgs::Header, pub r#pose: geometry_msgs::Pose, @@ -11683,7 +11683,7 @@ string frame_id"#; pub r#menu_entries: ::std::vec::Vec, pub r#controls: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for InteractiveMarker { + impl ::roslibrust::RosMessageType for InteractiveMarker { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarker"; const MD5SUM: &'static str = "dd86d22909d5a3364b384492e35c10af"; const DEFINITION: &'static str = r#"# Time/frame info. @@ -12206,14 +12206,14 @@ uint8 command_type"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarkerControl { pub r#name: ::std::string::String, pub r#orientation: geometry_msgs::Quaternion, @@ -12224,7 +12224,7 @@ uint8 command_type"#; pub r#independent_marker_orientation: bool, pub r#description: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for InteractiveMarkerControl { + impl ::roslibrust::RosMessageType for InteractiveMarkerControl { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarkerControl"; const MD5SUM: &'static str = "b3c81e785788195d1840b86c28da1aac"; const DEFINITION: &'static str = r#"# Represents a control that is to be displayed together with an interactive marker @@ -12501,14 +12501,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarkerFeedback { pub r#header: std_msgs::Header, pub r#client_id: ::std::string::String, @@ -12520,7 +12520,7 @@ string frame_id"#; pub r#mouse_point: geometry_msgs::Point, pub r#mouse_point_valid: bool, } - impl ::roslibrust_common::RosMessageType for InteractiveMarkerFeedback { + impl ::roslibrust::RosMessageType for InteractiveMarkerFeedback { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarkerFeedback"; const MD5SUM: &'static str = "ab0f1eee058667e28c19ff3ffc3f4b78"; const DEFINITION: &'static str = r#"# Time/frame info. @@ -12625,20 +12625,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarkerInit { pub r#server_id: ::std::string::String, pub r#seq_num: u64, pub r#markers: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for InteractiveMarkerInit { + impl ::roslibrust::RosMessageType for InteractiveMarkerInit { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarkerInit"; const MD5SUM: &'static str = "d5f2c5045a72456d228676ab91048734"; const DEFINITION: &'static str = r#"# Identifying string. Must be unique in the topic namespace @@ -13668,20 +13668,20 @@ uint8 command_type"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarkerPose { pub r#header: std_msgs::Header, pub r#pose: geometry_msgs::Pose, pub r#name: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for InteractiveMarkerPose { + impl ::roslibrust::RosMessageType for InteractiveMarkerPose { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarkerPose"; const MD5SUM: &'static str = "a6e6833209a196a38d798dadb02c81f8"; const DEFINITION: &'static str = r#"# Time/frame info. @@ -13744,14 +13744,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarkerUpdate { pub r#server_id: ::std::string::String, pub r#seq_num: u64, @@ -13760,7 +13760,7 @@ string frame_id"#; pub r#poses: ::std::vec::Vec, pub r#erases: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for InteractiveMarkerUpdate { + impl ::roslibrust::RosMessageType for InteractiveMarkerUpdate { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarkerUpdate"; const MD5SUM: &'static str = "710d308d0a9276d65945e92dd30b3946"; const DEFINITION: &'static str = r#"# Identifying string. Must be unique in the topic namespace @@ -14871,14 +14871,14 @@ uint8 command_type"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Marker { pub r#header: std_msgs::Header, pub r#ns: ::std::string::String, @@ -14888,7 +14888,7 @@ uint8 command_type"#; pub r#pose: geometry_msgs::Pose, pub r#scale: geometry_msgs::Vector3, pub r#color: std_msgs::ColorRGBA, - pub r#lifetime: ::roslibrust_codegen::integral_types::Duration, + pub r#lifetime: ::roslibrust::codegen::integral_types::Duration, pub r#frame_locked: bool, pub r#points: ::std::vec::Vec, pub r#colors: ::std::vec::Vec, @@ -14896,7 +14896,7 @@ uint8 command_type"#; pub r#mesh_resource: ::std::string::String, pub r#mesh_use_embedded_materials: bool, } - impl ::roslibrust_common::RosMessageType for Marker { + impl ::roslibrust::RosMessageType for Marker { const ROS_TYPE_NAME: &'static str = "visualization_msgs/Marker"; const MD5SUM: &'static str = "4048c9de2a16f4ae8e0538085ebf1b97"; const DEFINITION: &'static str = r#"# See http://www.ros.org/wiki/rviz/DisplayTypes/Marker and http://www.ros.org/wiki/rviz/Tutorials/Markers%3A%20Basic%20Shapes for more information on using this message with rviz @@ -15031,18 +15031,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MarkerArray { pub r#markers: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for MarkerArray { + impl ::roslibrust::RosMessageType for MarkerArray { const ROS_TYPE_NAME: &'static str = "visualization_msgs/MarkerArray"; const MD5SUM: &'static str = "d155b9ce5188fbaf89745847fd5882d7"; const DEFINITION: &'static str = r#"Marker[] markers @@ -15227,14 +15227,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MenuEntry { pub r#id: u32, pub r#parent_id: u32, @@ -15242,7 +15242,7 @@ string frame_id"#; pub r#command: ::std::string::String, pub r#command_type: u8, } - impl ::roslibrust_common::RosMessageType for MenuEntry { + impl ::roslibrust::RosMessageType for MenuEntry { const ROS_TYPE_NAME: &'static str = "visualization_msgs/MenuEntry"; const MD5SUM: &'static str = "b90ec63024573de83b57aa93eb39be2d"; const DEFINITION: &'static str = r#"# MenuEntry message. diff --git a/roslibrust_test/src/ros2.rs b/roslibrust_test/src/ros2.rs index bd0a602a..91b34048 100644 --- a/roslibrust_test/src/ros2.rs +++ b/roslibrust_test/src/ros2.rs @@ -13,19 +13,19 @@ pub mod actionlib_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GoalID { - pub r#stamp: ::roslibrust_codegen::integral_types::Time, + pub r#stamp: ::roslibrust::codegen::integral_types::Time, pub r#id: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for GoalID { + impl ::roslibrust::RosMessageType for GoalID { const ROS_TYPE_NAME: &'static str = "actionlib_msgs/GoalID"; const MD5SUM: &'static str = "29380925936d499346662d2ed1573d06"; const DEFINITION: &'static str = r#"# The stamp should store the time at which this goal was requested. @@ -40,20 +40,20 @@ string id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GoalStatus { pub r#goal_id: self::GoalID, pub r#status: u8, pub r#text: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for GoalStatus { + impl ::roslibrust::RosMessageType for GoalStatus { const ROS_TYPE_NAME: &'static str = "actionlib_msgs/GoalStatus"; const MD5SUM: &'static str = "c24a9e244d837a856267339807550287"; const DEFINITION: &'static str = r#"GoalID goal_id @@ -106,19 +106,19 @@ string id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GoalStatusArray { pub r#header: std_msgs::Header, pub r#status_list: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for GoalStatusArray { + impl ::roslibrust::RosMessageType for GoalStatusArray { const ROS_TYPE_NAME: &'static str = "actionlib_msgs/GoalStatusArray"; const MD5SUM: &'static str = "ad4c7a55992b9ff34d89596ca74a28e0"; const DEFINITION: &'static str = r#"# Stores the statuses for goals that are currently being tracked @@ -200,19 +200,19 @@ pub mod diagnostic_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct DiagnosticArray { pub r#header: std_msgs::Header, pub r#status: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for DiagnosticArray { + impl ::roslibrust::RosMessageType for DiagnosticArray { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/DiagnosticArray"; const MD5SUM: &'static str = "7f04f8332be7e46b680724aa4e9a9d71"; const DEFINITION: &'static str = r#"# This message is used to send diagnostic information about the state of the robot. @@ -264,14 +264,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct DiagnosticStatus { pub r#level: u8, pub r#name: ::std::string::String, @@ -279,7 +279,7 @@ string frame_id"#; pub r#hardware_id: ::std::string::String, pub r#values: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for DiagnosticStatus { + impl ::roslibrust::RosMessageType for DiagnosticStatus { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/DiagnosticStatus"; const MD5SUM: &'static str = "d0ce08bc6e5ba34c7754f563a9cabaf1"; const DEFINITION: &'static str = r#"# This message holds the status of an individual component of the robot. @@ -316,19 +316,19 @@ string value"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct KeyValue { pub r#key: ::std::string::String, pub r#value: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for KeyValue { + impl ::roslibrust::RosMessageType for KeyValue { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/KeyValue"; const MD5SUM: &'static str = "cf57fdc6617a881a88c16e768132149c"; const DEFINITION: &'static str = r#"# What to label this value when viewing. @@ -338,18 +338,18 @@ string value"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AddDiagnosticsRequest { pub r#load_namespace: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for AddDiagnosticsRequest { + impl ::roslibrust::RosMessageType for AddDiagnosticsRequest { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/AddDiagnosticsRequest"; const MD5SUM: &'static str = "c26cf6e164288fbc6050d74f838bcdf0"; const DEFINITION: &'static str = r#"# This service is used as part of the process for loading analyzers at runtime, @@ -372,19 +372,19 @@ string load_namespace"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AddDiagnosticsResponse { pub r#success: bool, pub r#message: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for AddDiagnosticsResponse { + impl ::roslibrust::RosMessageType for AddDiagnosticsResponse { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/AddDiagnosticsResponse"; const MD5SUM: &'static str = "937c9679a518e3a18d831e57125ea522"; const DEFINITION: &'static str = r#"# True if diagnostic aggregator was updated with new diagnostics, False @@ -398,7 +398,7 @@ string message"#; } #[allow(dead_code)] pub struct AddDiagnostics {} - impl ::roslibrust_common::RosServiceType for AddDiagnostics { + impl ::roslibrust::RosServiceType for AddDiagnostics { const ROS_SERVICE_NAME: &'static str = "diagnostic_msgs/AddDiagnostics"; const MD5SUM: &'static str = "e6ac9bbde83d0d3186523c3687aecaee"; type Request = AddDiagnosticsRequest; @@ -406,36 +406,36 @@ string message"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SelfTestRequest {} - impl ::roslibrust_common::RosMessageType for SelfTestRequest { + impl ::roslibrust::RosMessageType for SelfTestRequest { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/SelfTestRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SelfTestResponse { pub r#id: ::std::string::String, pub r#passed: u8, pub r#status: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for SelfTestResponse { + impl ::roslibrust::RosMessageType for SelfTestResponse { const ROS_TYPE_NAME: &'static str = "diagnostic_msgs/SelfTestResponse"; const MD5SUM: &'static str = "ac21b1bab7ab17546986536c22eb34e9"; const DEFINITION: &'static str = r#"string id @@ -476,7 +476,7 @@ string value"#; } #[allow(dead_code)] pub struct SelfTest {} - impl ::roslibrust_common::RosServiceType for SelfTest { + impl ::roslibrust::RosServiceType for SelfTest { const ROS_SERVICE_NAME: &'static str = "diagnostic_msgs/SelfTest"; const MD5SUM: &'static str = "ac21b1bab7ab17546986536c22eb34e9"; type Request = SelfTestRequest; @@ -498,19 +498,19 @@ pub mod geometry_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Accel { pub r#linear: self::Vector3, pub r#angular: self::Vector3, } - impl ::roslibrust_common::RosMessageType for Accel { + impl ::roslibrust::RosMessageType for Accel { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Accel"; const MD5SUM: &'static str = "9f195f881246fdfa2798d1d3eebca84a"; const DEFINITION: &'static str = r#"# This expresses acceleration in free space broken into its linear and angular parts. @@ -530,19 +530,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AccelStamped { pub r#header: std_msgs::Header, pub r#accel: self::Accel, } - impl ::roslibrust_common::RosMessageType for AccelStamped { + impl ::roslibrust::RosMessageType for AccelStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/AccelStamped"; const MD5SUM: &'static str = "19a31cf6d39a90e769a5539f9a293621"; const DEFINITION: &'static str = r#"# An accel with reference coordinate frame and timestamp @@ -589,21 +589,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AccelWithCovariance { pub r#accel: self::Accel, #[default(_code = "[Default::default(); 36]")] - #[serde(with = "::roslibrust_codegen::BigArray")] + #[serde(with = "::roslibrust::codegen::BigArray")] pub r#covariance: [f64; 36], } - impl ::roslibrust_common::RosMessageType for AccelWithCovariance { + impl ::roslibrust::RosMessageType for AccelWithCovariance { const ROS_TYPE_NAME: &'static str = "geometry_msgs/AccelWithCovariance"; const MD5SUM: &'static str = "ad5a718d699c6be72a02b8d6a139f334"; const DEFINITION: &'static str = r#"# This expresses acceleration in free space with uncertainty. @@ -645,19 +645,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct AccelWithCovarianceStamped { pub r#header: std_msgs::Header, pub r#accel: self::AccelWithCovariance, } - impl ::roslibrust_common::RosMessageType for AccelWithCovarianceStamped { + impl ::roslibrust::RosMessageType for AccelWithCovarianceStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/AccelWithCovarianceStamped"; const MD5SUM: &'static str = "36b6f1177d3c3f476d4c306279c6f18a"; const DEFINITION: &'static str = r#"# This represents an estimated accel with reference coordinate frame and timestamp. @@ -742,14 +742,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Inertia { pub r#m: f64, pub r#com: self::Vector3, @@ -760,7 +760,7 @@ string frame_id"#; pub r#iyz: f64, pub r#izz: f64, } - impl ::roslibrust_common::RosMessageType for Inertia { + impl ::roslibrust::RosMessageType for Inertia { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Inertia"; const MD5SUM: &'static str = "1d26e4bb6c83ff141c5cf0d883c2b0fe"; const DEFINITION: &'static str = r#"# Mass [kg] @@ -793,19 +793,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InertiaStamped { pub r#header: std_msgs::Header, pub r#inertia: self::Inertia, } - impl ::roslibrust_common::RosMessageType for InertiaStamped { + impl ::roslibrust::RosMessageType for InertiaStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/InertiaStamped"; const MD5SUM: &'static str = "d4fb75ac056292d6c4bbec5e51d25080"; const DEFINITION: &'static str = r#"# An Inertia with a time stamp and reference frame. @@ -866,20 +866,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Point { pub r#x: f64, pub r#y: f64, pub r#z: f64, } - impl ::roslibrust_common::RosMessageType for Point { + impl ::roslibrust::RosMessageType for Point { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Point"; const MD5SUM: &'static str = "4a842b65f413084dc2b10fb484ea7f17"; const DEFINITION: &'static str = r#"# This contains the position of a point in free space @@ -889,20 +889,20 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Point32 { pub r#x: f32, pub r#y: f32, pub r#z: f32, } - impl ::roslibrust_common::RosMessageType for Point32 { + impl ::roslibrust::RosMessageType for Point32 { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Point32"; const MD5SUM: &'static str = "cc153912f1453b708d221682bc23d9ac"; const DEFINITION: &'static str = r#"# This contains the position of a point in free space(with 32 bits of precision). @@ -919,19 +919,19 @@ float32 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PointStamped { pub r#header: std_msgs::Header, pub r#point: self::Point, } - impl ::roslibrust_common::RosMessageType for PointStamped { + impl ::roslibrust::RosMessageType for PointStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PointStamped"; const MD5SUM: &'static str = "938cb86faf4572821e49e2490701e6df"; const DEFINITION: &'static str = r#"# This represents a Point with reference coordinate frame and timestamp @@ -958,18 +958,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Polygon { pub r#points: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Polygon { + impl ::roslibrust::RosMessageType for Polygon { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Polygon"; const MD5SUM: &'static str = "cd60a26494a087f577976f0329fa120e"; const DEFINITION: &'static str = r#"# A specification of a polygon where the first and last points are assumed to be connected @@ -991,19 +991,19 @@ float32 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PolygonStamped { pub r#header: std_msgs::Header, pub r#polygon: self::Polygon, } - impl ::roslibrust_common::RosMessageType for PolygonStamped { + impl ::roslibrust::RosMessageType for PolygonStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PolygonStamped"; const MD5SUM: &'static str = "56a3a2a80165092f696df3db62e18fbf"; const DEFINITION: &'static str = r#"# This represents a Polygon with reference coordinate frame and timestamp @@ -1055,19 +1055,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Pose { pub r#position: self::Point, pub r#orientation: self::Quaternion, } - impl ::roslibrust_common::RosMessageType for Pose { + impl ::roslibrust::RosMessageType for Pose { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Pose"; const MD5SUM: &'static str = "e45d45a5a1ce597b249e23fb30fc871f"; const DEFINITION: &'static str = r#"# A representation of pose in free space, composed of position and orientation. @@ -1091,20 +1091,20 @@ float64 w 1"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Pose2D { pub r#x: f64, pub r#y: f64, pub r#theta: f64, } - impl ::roslibrust_common::RosMessageType for Pose2D { + impl ::roslibrust::RosMessageType for Pose2D { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Pose2D"; const MD5SUM: &'static str = "938fa65709584ad8e77d238529be13b8"; const DEFINITION: &'static str = r#"# Deprecated as of Foxy and will potentially be removed in any following release. @@ -1120,19 +1120,19 @@ float64 theta"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PoseArray { pub r#header: std_msgs::Header, pub r#poses: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for PoseArray { + impl ::roslibrust::RosMessageType for PoseArray { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PoseArray"; const MD5SUM: &'static str = "ea7300c78ec47498d5f226be74a155e8"; const DEFINITION: &'static str = r#"# An array of poses with a header for global reference. @@ -1188,19 +1188,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PoseStamped { pub r#header: std_msgs::Header, pub r#pose: self::Pose, } - impl ::roslibrust_common::RosMessageType for PoseStamped { + impl ::roslibrust::RosMessageType for PoseStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PoseStamped"; const MD5SUM: &'static str = "c088ec4a70a5930b0ca46520d5745e2d"; const DEFINITION: &'static str = r#"# A Pose with reference coordinate frame and timestamp @@ -1255,21 +1255,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PoseWithCovariance { pub r#pose: self::Pose, #[default(_code = "[Default::default(); 36]")] - #[serde(with = "::roslibrust_codegen::BigArray")] + #[serde(with = "::roslibrust::codegen::BigArray")] pub r#covariance: [f64; 36], } - impl ::roslibrust_common::RosMessageType for PoseWithCovariance { + impl ::roslibrust::RosMessageType for PoseWithCovariance { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PoseWithCovariance"; const MD5SUM: &'static str = "c23e848cf1b7533a8d7c259073a97e6f"; const DEFINITION: &'static str = r#"# This represents a pose in free space with uncertainty. @@ -1318,19 +1318,19 @@ float64 w 1"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PoseWithCovarianceStamped { pub r#header: std_msgs::Header, pub r#pose: self::PoseWithCovariance, } - impl ::roslibrust_common::RosMessageType for PoseWithCovarianceStamped { + impl ::roslibrust::RosMessageType for PoseWithCovarianceStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/PoseWithCovarianceStamped"; const MD5SUM: &'static str = "2178452bf195c1abe1e99b07b4e6c8f0"; const DEFINITION: &'static str = r#"# This expresses an estimated pose with a reference coordinate frame and timestamp @@ -1430,14 +1430,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Quaternion { #[default(0f64)] pub r#x: f64, @@ -1448,7 +1448,7 @@ string frame_id"#; #[default(1f64)] pub r#w: f64, } - impl ::roslibrust_common::RosMessageType for Quaternion { + impl ::roslibrust::RosMessageType for Quaternion { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Quaternion"; const MD5SUM: &'static str = "a779879fadf0160734f906b8c19c7004"; const DEFINITION: &'static str = r#"# This represents an orientation in free space in quaternion form. @@ -1460,19 +1460,19 @@ float64 w 1"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct QuaternionStamped { pub r#header: std_msgs::Header, pub r#quaternion: self::Quaternion, } - impl ::roslibrust_common::RosMessageType for QuaternionStamped { + impl ::roslibrust::RosMessageType for QuaternionStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/QuaternionStamped"; const MD5SUM: &'static str = "8f93ed7c8430d06bd82fefcc6f7a349e"; const DEFINITION: &'static str = r#"# This represents an orientation with reference coordinate frame and timestamp. @@ -1501,19 +1501,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Transform { pub r#translation: self::Vector3, pub r#rotation: self::Quaternion, } - impl ::roslibrust_common::RosMessageType for Transform { + impl ::roslibrust::RosMessageType for Transform { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Transform"; const MD5SUM: &'static str = "ac9eff44abf714214112b05d54a3cf9b"; const DEFINITION: &'static str = r#"# This represents the transform between two coordinate frames in free space. @@ -1542,20 +1542,20 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TransformStamped { pub r#header: std_msgs::Header, pub r#child_frame_id: ::std::string::String, pub r#transform: self::Transform, } - impl ::roslibrust_common::RosMessageType for TransformStamped { + impl ::roslibrust::RosMessageType for TransformStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/TransformStamped"; const MD5SUM: &'static str = "09bf247c06cf7c69e8c55300b05a7a04"; const DEFINITION: &'static str = r#"# This expresses a transform from coordinate frame header.frame_id @@ -1635,19 +1635,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Twist { pub r#linear: self::Vector3, pub r#angular: self::Vector3, } - impl ::roslibrust_common::RosMessageType for Twist { + impl ::roslibrust::RosMessageType for Twist { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Twist"; const MD5SUM: &'static str = "9f195f881246fdfa2798d1d3eebca84a"; const DEFINITION: &'static str = r#"# This expresses velocity in free space broken into its linear and angular parts. @@ -1668,19 +1668,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TwistStamped { pub r#header: std_msgs::Header, pub r#twist: self::Twist, } - impl ::roslibrust_common::RosMessageType for TwistStamped { + impl ::roslibrust::RosMessageType for TwistStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/TwistStamped"; const MD5SUM: &'static str = "09f84400c1ca2e7e26a9da1232813bd0"; const DEFINITION: &'static str = r#"# A twist with reference coordinate frame and timestamp @@ -1729,21 +1729,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TwistWithCovariance { pub r#twist: self::Twist, #[default(_code = "[Default::default(); 36]")] - #[serde(with = "::roslibrust_codegen::BigArray")] + #[serde(with = "::roslibrust::codegen::BigArray")] pub r#covariance: [f64; 36], } - impl ::roslibrust_common::RosMessageType for TwistWithCovariance { + impl ::roslibrust::RosMessageType for TwistWithCovariance { const ROS_TYPE_NAME: &'static str = "geometry_msgs/TwistWithCovariance"; const MD5SUM: &'static str = "1fe8a28e6890a4cc3ae4c3ca5c7d82e6"; const DEFINITION: &'static str = r#"# This expresses velocity in free space with uncertainty. @@ -1786,19 +1786,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TwistWithCovarianceStamped { pub r#header: std_msgs::Header, pub r#twist: self::TwistWithCovariance, } - impl ::roslibrust_common::RosMessageType for TwistWithCovarianceStamped { + impl ::roslibrust::RosMessageType for TwistWithCovarianceStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/TwistWithCovarianceStamped"; const MD5SUM: &'static str = "7019807c85ce8602fb83180366470670"; const DEFINITION: &'static str = r#"# This represents an estimated twist with reference coordinate frame and timestamp. @@ -1886,20 +1886,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Vector3 { pub r#x: f64, pub r#y: f64, pub r#z: f64, } - impl ::roslibrust_common::RosMessageType for Vector3 { + impl ::roslibrust::RosMessageType for Vector3 { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Vector3"; const MD5SUM: &'static str = "4a842b65f413084dc2b10fb484ea7f17"; const DEFINITION: &'static str = r#"# This represents a vector in free space. @@ -1914,19 +1914,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Vector3Stamped { pub r#header: std_msgs::Header, pub r#vector: self::Vector3, } - impl ::roslibrust_common::RosMessageType for Vector3Stamped { + impl ::roslibrust::RosMessageType for Vector3Stamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Vector3Stamped"; const MD5SUM: &'static str = "5cd361f2989a2e76d5aaf432c3bf0fb9"; const DEFINITION: &'static str = r#"# This represents a Vector3 with reference coordinate frame and timestamp @@ -1961,19 +1961,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Wrench { pub r#force: self::Vector3, pub r#torque: self::Vector3, } - impl ::roslibrust_common::RosMessageType for Wrench { + impl ::roslibrust::RosMessageType for Wrench { const ROS_TYPE_NAME: &'static str = "geometry_msgs/Wrench"; const MD5SUM: &'static str = "4f539cf138b23283b520fd271b567936"; const DEFINITION: &'static str = r#"# This represents force in free space, separated into its linear and angular parts. @@ -1994,19 +1994,19 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct WrenchStamped { pub r#header: std_msgs::Header, pub r#wrench: self::Wrench, } - impl ::roslibrust_common::RosMessageType for WrenchStamped { + impl ::roslibrust::RosMessageType for WrenchStamped { const ROS_TYPE_NAME: &'static str = "geometry_msgs/WrenchStamped"; const MD5SUM: &'static str = "5bc71556ab354cd6274d262a7de094a5"; const DEFINITION: &'static str = r#"# A wrench with reference coordinate frame and timestamp @@ -2069,21 +2069,21 @@ pub mod nav_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GridCells { pub r#header: std_msgs::Header, pub r#cell_width: f32, pub r#cell_height: f32, pub r#cells: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for GridCells { + impl ::roslibrust::RosMessageType for GridCells { const ROS_TYPE_NAME: &'static str = "nav_msgs/GridCells"; const MD5SUM: &'static str = "bb9f07bfd2183241b5719f45a81f8cc5"; const DEFINITION: &'static str = r#"# An array of cells in a 2D grid @@ -2118,22 +2118,22 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MapMetaData { - pub r#map_load_time: ::roslibrust_codegen::integral_types::Time, + pub r#map_load_time: ::roslibrust::codegen::integral_types::Time, pub r#resolution: f32, pub r#width: u32, pub r#height: u32, pub r#origin: geometry_msgs::Pose, } - impl ::roslibrust_common::RosMessageType for MapMetaData { + impl ::roslibrust::RosMessageType for MapMetaData { const ROS_TYPE_NAME: &'static str = "nav_msgs/MapMetaData"; const MD5SUM: &'static str = "d10232bae3de4ae536d98f679fce2cf2"; const DEFINITION: &'static str = r#"# This hold basic information about the characteristics of the OccupancyGrid @@ -2190,20 +2190,20 @@ float64 w 1"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct OccupancyGrid { pub r#header: std_msgs::Header, pub r#info: self::MapMetaData, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for OccupancyGrid { + impl ::roslibrust::RosMessageType for OccupancyGrid { const ROS_TYPE_NAME: &'static str = "nav_msgs/OccupancyGrid"; const MD5SUM: &'static str = "2b0657f1993991bf3953916eb5ff5203"; const DEFINITION: &'static str = r#"# This represents a 2-D grid map @@ -2320,21 +2320,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Odometry { pub r#header: std_msgs::Header, pub r#child_frame_id: ::std::string::String, pub r#pose: geometry_msgs::PoseWithCovariance, pub r#twist: geometry_msgs::TwistWithCovariance, } - impl ::roslibrust_common::RosMessageType for Odometry { + impl ::roslibrust::RosMessageType for Odometry { const ROS_TYPE_NAME: &'static str = "nav_msgs/Odometry"; const MD5SUM: &'static str = "81a0900daae2c6c0acc71c9f8df88947"; const DEFINITION: &'static str = r#"# This represents an estimate of a position and velocity in free space. @@ -2512,19 +2512,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Path { pub r#header: std_msgs::Header, pub r#poses: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Path { + impl ::roslibrust::RosMessageType for Path { const ROS_TYPE_NAME: &'static str = "nav_msgs/Path"; const MD5SUM: &'static str = "9f78b006a4c2cc2a146c12ed59d1bb7f"; const DEFINITION: &'static str = r#"# An array of poses that represents a Path for a robot to follow. @@ -2633,34 +2633,34 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapRequest {} - impl ::roslibrust_common::RosMessageType for GetMapRequest { + impl ::roslibrust::RosMessageType for GetMapRequest { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#"# Get the map as a nav_msgs/OccupancyGrid"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetMapResponse { pub r#map: self::OccupancyGrid, } - impl ::roslibrust_common::RosMessageType for GetMapResponse { + impl ::roslibrust::RosMessageType for GetMapResponse { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetMapResponse"; const MD5SUM: &'static str = "d6e8b0301af2dfe2244959ba20a4080a"; const DEFINITION: &'static str = r#"# The current map hosted by this map service. @@ -2879,7 +2879,7 @@ string frame_id"#; } #[allow(dead_code)] pub struct GetMap {} - impl ::roslibrust_common::RosServiceType for GetMap { + impl ::roslibrust::RosServiceType for GetMap { const ROS_SERVICE_NAME: &'static str = "nav_msgs/GetMap"; const MD5SUM: &'static str = "d6e8b0301af2dfe2244959ba20a4080a"; type Request = GetMapRequest; @@ -2887,20 +2887,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetPlanRequest { pub r#start: geometry_msgs::PoseStamped, pub r#goal: geometry_msgs::PoseStamped, pub r#tolerance: f32, } - impl ::roslibrust_common::RosMessageType for GetPlanRequest { + impl ::roslibrust::RosMessageType for GetPlanRequest { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetPlanRequest"; const MD5SUM: &'static str = "e4855e4d3c7377c76ec90e403202286a"; const DEFINITION: &'static str = r#"# Get a plan from the current position to the goal Pose @@ -3013,18 +3013,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetPlanResponse { pub r#plan: self::Path, } - impl ::roslibrust_common::RosMessageType for GetPlanResponse { + impl ::roslibrust::RosMessageType for GetPlanResponse { const ROS_TYPE_NAME: &'static str = "nav_msgs/GetPlanResponse"; const MD5SUM: &'static str = "37c13f9b42d0ee04e1dae0d4f7d14878"; const DEFINITION: &'static str = r#"# Array of poses from start to goal if one was successfully found. @@ -3233,7 +3233,7 @@ string frame_id"#; } #[allow(dead_code)] pub struct GetPlan {} - impl ::roslibrust_common::RosServiceType for GetPlan { + impl ::roslibrust::RosServiceType for GetPlan { const ROS_SERVICE_NAME: &'static str = "nav_msgs/GetPlan"; const MD5SUM: &'static str = "135edd06523950427d2cf5e0bb9780a2"; type Request = GetPlanRequest; @@ -3241,18 +3241,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct LoadMapRequest { pub r#map_url: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for LoadMapRequest { + impl ::roslibrust::RosMessageType for LoadMapRequest { const ROS_TYPE_NAME: &'static str = "nav_msgs/LoadMapRequest"; const MD5SUM: &'static str = "3813ba1ae85fbcd4dc88c90f1426b90b"; const DEFINITION: &'static str = r#"# URL of map resource @@ -3262,19 +3262,19 @@ string map_url"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct LoadMapResponse { pub r#map: self::OccupancyGrid, pub r#result: u8, } - impl ::roslibrust_common::RosMessageType for LoadMapResponse { + impl ::roslibrust::RosMessageType for LoadMapResponse { const ROS_TYPE_NAME: &'static str = "nav_msgs/LoadMapResponse"; const MD5SUM: &'static str = "cdb849e3dfaed8b5fe66776d7a64b83e"; const DEFINITION: &'static str = r#"# Result code defintions @@ -3509,7 +3509,7 @@ string frame_id"#; } #[allow(dead_code)] pub struct LoadMap {} - impl ::roslibrust_common::RosServiceType for LoadMap { + impl ::roslibrust::RosServiceType for LoadMap { const ROS_SERVICE_NAME: &'static str = "nav_msgs/LoadMap"; const MD5SUM: &'static str = "96c8a15e8fe5c33ee245f610f020d6ba"; type Request = LoadMapRequest; @@ -3517,19 +3517,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetMapRequest { pub r#map: self::OccupancyGrid, pub r#initial_pose: geometry_msgs::PoseWithCovarianceStamped, } - impl ::roslibrust_common::RosMessageType for SetMapRequest { + impl ::roslibrust::RosMessageType for SetMapRequest { const ROS_TYPE_NAME: &'static str = "nav_msgs/SetMapRequest"; const MD5SUM: &'static str = "98782a373ad73e1165352caf85923850"; const DEFINITION: &'static str = r#"# Set a new map together with an initial pose @@ -3894,18 +3894,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetMapResponse { pub r#success: bool, } - impl ::roslibrust_common::RosMessageType for SetMapResponse { + impl ::roslibrust::RosMessageType for SetMapResponse { const ROS_TYPE_NAME: &'static str = "nav_msgs/SetMapResponse"; const MD5SUM: &'static str = "358e233cde0c8a8bcfea4ce193f8fc15"; const DEFINITION: &'static str = r#"# True if the map was successfully set, false otherwise. @@ -3913,7 +3913,7 @@ bool success"#; } #[allow(dead_code)] pub struct SetMap {} - impl ::roslibrust_common::RosServiceType for SetMap { + impl ::roslibrust::RosServiceType for SetMap { const ROS_SERVICE_NAME: &'static str = "nav_msgs/SetMap"; const MD5SUM: &'static str = "6c3f8182fbcb3d4ee7aef02d1dcd1e16"; type Request = SetMapRequest; @@ -3935,14 +3935,14 @@ pub mod sensor_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct BatteryState { pub r#header: std_msgs::Header, pub r#voltage: f32, @@ -3961,7 +3961,7 @@ pub mod sensor_msgs { pub r#location: ::std::string::String, pub r#serial_number: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for BatteryState { + impl ::roslibrust::RosMessageType for BatteryState { const ROS_TYPE_NAME: &'static str = "sensor_msgs/BatteryState"; const MD5SUM: &'static str = "0e25cedcd370a46961764fe3a9d2ddcb"; const DEFINITION: &'static str = r#"# Constants are chosen to match the enums in the linux kernel @@ -4053,14 +4053,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct CameraInfo { pub r#header: std_msgs::Header, pub r#height: u32, @@ -4074,7 +4074,7 @@ string frame_id"#; pub r#binning_y: u32, pub r#roi: self::RegionOfInterest, } - impl ::roslibrust_common::RosMessageType for CameraInfo { + impl ::roslibrust::RosMessageType for CameraInfo { const ROS_TYPE_NAME: &'static str = "sensor_msgs/CameraInfo"; const MD5SUM: &'static str = "47b55ddbbf2ec398f94cddf328bbc2ac"; const DEFINITION: &'static str = r#"# This message defines meta information for a camera. It should be in a @@ -4243,19 +4243,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ChannelFloat32 { pub r#name: ::std::string::String, pub r#values: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for ChannelFloat32 { + impl ::roslibrust::RosMessageType for ChannelFloat32 { const ROS_TYPE_NAME: &'static str = "sensor_msgs/ChannelFloat32"; const MD5SUM: &'static str = "3d40139cdd33dfedcb71ffeeeb42ae7f"; const DEFINITION: &'static str = r#"# This message is used by the PointCloud message to hold optional data @@ -4285,21 +4285,21 @@ float32[] values"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct CompressedImage { pub r#header: std_msgs::Header, pub r#format: ::std::string::String, - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for CompressedImage { + impl ::roslibrust::RosMessageType for CompressedImage { const ROS_TYPE_NAME: &'static str = "sensor_msgs/CompressedImage"; const MD5SUM: &'static str = "1df88053b24348f5f499666c7cb1d980"; const DEFINITION: &'static str = r#"# This message contains a compressed image. @@ -4330,20 +4330,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct FluidPressure { pub r#header: std_msgs::Header, pub r#fluid_pressure: f64, pub r#variance: f64, } - impl ::roslibrust_common::RosMessageType for FluidPressure { + impl ::roslibrust::RosMessageType for FluidPressure { const ROS_TYPE_NAME: &'static str = "sensor_msgs/FluidPressure"; const MD5SUM: &'static str = "4967e6ff4dcf72e6b8fca0600661e0b6"; const DEFINITION: &'static str = r#"# Single pressure reading. This message is appropriate for measuring the @@ -4372,20 +4372,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Illuminance { pub r#header: std_msgs::Header, pub r#illuminance: f64, pub r#variance: f64, } - impl ::roslibrust_common::RosMessageType for Illuminance { + impl ::roslibrust::RosMessageType for Illuminance { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Illuminance"; const MD5SUM: &'static str = "94ccac1a1be684df74466dfc561512aa"; const DEFINITION: &'static str = r#"# Single photometric illuminance measurement. Light should be assumed to be @@ -4422,14 +4422,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Image { pub r#header: std_msgs::Header, pub r#height: u32, @@ -4437,10 +4437,10 @@ string frame_id"#; pub r#encoding: ::std::string::String, pub r#is_bigendian: u8, pub r#step: u32, - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Image { + impl ::roslibrust::RosMessageType for Image { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Image"; const MD5SUM: &'static str = "9c8b3d25a28b72f070da359dbecf985b"; const DEFINITION: &'static str = r#"# This message contains an uncompressed image @@ -4483,14 +4483,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Imu { pub r#header: std_msgs::Header, pub r#orientation: geometry_msgs::Quaternion, @@ -4500,7 +4500,7 @@ string frame_id"#; pub r#linear_acceleration: geometry_msgs::Vector3, pub r#linear_acceleration_covariance: [f64; 9], } - impl ::roslibrust_common::RosMessageType for Imu { + impl ::roslibrust::RosMessageType for Imu { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Imu"; const MD5SUM: &'static str = "058a92f712764b4ade1563e82041c569"; const DEFINITION: &'static str = r#"# This is a message to hold data from an IMU (Inertial Measurement Unit) @@ -4560,14 +4560,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct JointState { pub r#header: std_msgs::Header, pub r#name: ::std::vec::Vec<::std::string::String>, @@ -4575,7 +4575,7 @@ string frame_id"#; pub r#velocity: ::std::vec::Vec, pub r#effort: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for JointState { + impl ::roslibrust::RosMessageType for JointState { const ROS_TYPE_NAME: &'static str = "sensor_msgs/JointState"; const MD5SUM: &'static str = "3f61f1439a9898cdd864497d378ce55c"; const DEFINITION: &'static str = r#"# This is a message that holds data to describe the state of a set of torque controlled joints. @@ -4617,20 +4617,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Joy { pub r#header: std_msgs::Header, pub r#axes: ::std::vec::Vec, pub r#buttons: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Joy { + impl ::roslibrust::RosMessageType for Joy { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Joy"; const MD5SUM: &'static str = "967f985c9ca9013a4669430613e3e016"; const DEFINITION: &'static str = r#"# Reports the state of a joystick's axes and buttons. @@ -4657,20 +4657,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct JoyFeedback { pub r#type: u8, pub r#id: u8, pub r#intensity: f32, } - impl ::roslibrust_common::RosMessageType for JoyFeedback { + impl ::roslibrust::RosMessageType for JoyFeedback { const ROS_TYPE_NAME: &'static str = "sensor_msgs/JoyFeedback"; const MD5SUM: &'static str = "f4dcd73460360d98f36e55ee7f2e46f1"; const DEFINITION: &'static str = r#"# Declare of the type of feedback @@ -4696,18 +4696,18 @@ float32 intensity"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct JoyFeedbackArray { pub r#array: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for JoyFeedbackArray { + impl ::roslibrust::RosMessageType for JoyFeedbackArray { const ROS_TYPE_NAME: &'static str = "sensor_msgs/JoyFeedbackArray"; const MD5SUM: &'static str = "cde5730a895b1fc4dee6f91b754b213d"; const DEFINITION: &'static str = r#"# This message publishes values for multiple feedback at once. @@ -4731,18 +4731,18 @@ float32 intensity"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct LaserEcho { pub r#echoes: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for LaserEcho { + impl ::roslibrust::RosMessageType for LaserEcho { const ROS_TYPE_NAME: &'static str = "sensor_msgs/LaserEcho"; const MD5SUM: &'static str = "8bc5ae449b200fba4d552b4225586696"; const DEFINITION: &'static str = r#"# This message is a submessage of MultiEchoLaserScan and is not intended @@ -4753,14 +4753,14 @@ float32[] echoes # Multiple values of ranges or intensities. } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct LaserScan { pub r#header: std_msgs::Header, pub r#angle_min: f32, @@ -4773,7 +4773,7 @@ float32[] echoes # Multiple values of ranges or intensities. pub r#ranges: ::std::vec::Vec, pub r#intensities: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for LaserScan { + impl ::roslibrust::RosMessageType for LaserScan { const ROS_TYPE_NAME: &'static str = "sensor_msgs/LaserScan"; const MD5SUM: &'static str = "f86984b4383bf67523c75820e114e988"; const DEFINITION: &'static str = r#"# Single scan from a planar laser range-finder @@ -4820,20 +4820,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MagneticField { pub r#header: std_msgs::Header, pub r#magnetic_field: geometry_msgs::Vector3, pub r#magnetic_field_covariance: [f64; 9], } - impl ::roslibrust_common::RosMessageType for MagneticField { + impl ::roslibrust::RosMessageType for MagneticField { const ROS_TYPE_NAME: &'static str = "sensor_msgs/MagneticField"; const MD5SUM: &'static str = "c8761d20eb9dc59addd882f1d4de2266"; const DEFINITION: &'static str = r#"# Measurement of the Magnetic Field vector at a specific location. @@ -4882,14 +4882,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiDOFJointState { pub r#header: std_msgs::Header, pub r#joint_names: ::std::vec::Vec<::std::string::String>, @@ -4897,7 +4897,7 @@ string frame_id"#; pub r#twist: ::std::vec::Vec, pub r#wrench: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for MultiDOFJointState { + impl ::roslibrust::RosMessageType for MultiDOFJointState { const ROS_TYPE_NAME: &'static str = "sensor_msgs/MultiDOFJointState"; const MD5SUM: &'static str = "9eb02d78422731545fd7e9b60069f261"; const DEFINITION: &'static str = r#"# Representation of state for joints with multiple degrees of freedom, @@ -5018,14 +5018,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiEchoLaserScan { pub r#header: std_msgs::Header, pub r#angle_min: f32, @@ -5038,7 +5038,7 @@ string frame_id"#; pub r#ranges: ::std::vec::Vec, pub r#intensities: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for MultiEchoLaserScan { + impl ::roslibrust::RosMessageType for MultiEchoLaserScan { const ROS_TYPE_NAME: &'static str = "sensor_msgs/MultiEchoLaserScan"; const MD5SUM: &'static str = "fda674281c16cdee9a79d075ab27d12f"; const DEFINITION: &'static str = r#"# Single scan from a multi-echo planar laser range-finder @@ -5094,14 +5094,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct NavSatFix { pub r#header: std_msgs::Header, pub r#status: self::NavSatStatus, @@ -5111,7 +5111,7 @@ string frame_id"#; pub r#position_covariance: [f64; 9], pub r#position_covariance_type: u8, } - impl ::roslibrust_common::RosMessageType for NavSatFix { + impl ::roslibrust::RosMessageType for NavSatFix { const ROS_TYPE_NAME: &'static str = "sensor_msgs/NavSatFix"; const MD5SUM: &'static str = "faa1756146a6a934d7e4ef0e3855c531"; const DEFINITION: &'static str = r#"# Navigation Satellite fix for any Global Navigation Satellite System @@ -5204,19 +5204,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct NavSatStatus { pub r#status: i8, pub r#service: u16, } - impl ::roslibrust_common::RosMessageType for NavSatStatus { + impl ::roslibrust::RosMessageType for NavSatStatus { const ROS_TYPE_NAME: &'static str = "sensor_msgs/NavSatStatus"; const MD5SUM: &'static str = "331cdbddfa4bc96ffc3b9ad98900a54c"; const DEFINITION: &'static str = r#"# Navigation Satellite fix status for any Global Navigation Satellite System. @@ -5255,20 +5255,20 @@ uint16 service"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PointCloud { pub r#header: std_msgs::Header, pub r#points: ::std::vec::Vec, pub r#channels: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for PointCloud { + impl ::roslibrust::RosMessageType for PointCloud { const ROS_TYPE_NAME: &'static str = "sensor_msgs/PointCloud"; const MD5SUM: &'static str = "95c9c548e015c235b38b961c79973db7"; const DEFINITION: &'static str = r#"## THIS MESSAGE IS DEPRECATED AS OF FOXY @@ -5341,14 +5341,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PointCloud2 { pub r#header: std_msgs::Header, pub r#height: u32, @@ -5357,11 +5357,11 @@ string frame_id"#; pub r#is_bigendian: bool, pub r#point_step: u32, pub r#row_step: u32, - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#data: ::std::vec::Vec, pub r#is_dense: bool, } - impl ::roslibrust_common::RosMessageType for PointCloud2 { + impl ::roslibrust::RosMessageType for PointCloud2 { const ROS_TYPE_NAME: &'static str = "sensor_msgs/PointCloud2"; const MD5SUM: &'static str = "c61ffb665fe19735825e4dd31b53913d"; const DEFINITION: &'static str = r#"# This message holds a collection of N-dimensional points, which may @@ -5422,21 +5422,21 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct PointField { pub r#name: ::std::string::String, pub r#offset: u32, pub r#datatype: u8, pub r#count: u32, } - impl ::roslibrust_common::RosMessageType for PointField { + impl ::roslibrust::RosMessageType for PointField { const ROS_TYPE_NAME: &'static str = "sensor_msgs/PointField"; const MD5SUM: &'static str = "268eacb2962780ceac86cbd17e328150"; const DEFINITION: &'static str = r#"# This message holds the description of one point entry in the @@ -5469,14 +5469,14 @@ uint32 count # How many elements in the field"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Range { pub r#header: std_msgs::Header, pub r#radiation_type: u8, @@ -5485,7 +5485,7 @@ uint32 count # How many elements in the field"#; pub r#max_range: f32, pub r#range: f32, } - impl ::roslibrust_common::RosMessageType for Range { + impl ::roslibrust::RosMessageType for Range { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Range"; const MD5SUM: &'static str = "1ec40687acdf15b9559a6ff690722eae"; const DEFINITION: &'static str = r#"# Single range reading from an active ranger that emits energy and reports @@ -5546,14 +5546,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct RegionOfInterest { pub r#x_offset: u32, pub r#y_offset: u32, @@ -5561,7 +5561,7 @@ string frame_id"#; pub r#width: u32, pub r#do_rectify: bool, } - impl ::roslibrust_common::RosMessageType for RegionOfInterest { + impl ::roslibrust::RosMessageType for RegionOfInterest { const ROS_TYPE_NAME: &'static str = "sensor_msgs/RegionOfInterest"; const MD5SUM: &'static str = "bdb633039d588fcccb441a4d43ccfe09"; const DEFINITION: &'static str = r#"# This message is used to specify a region of interest within an image. @@ -5586,20 +5586,20 @@ bool do_rectify"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct RelativeHumidity { pub r#header: std_msgs::Header, pub r#relative_humidity: f64, pub r#variance: f64, } - impl ::roslibrust_common::RosMessageType for RelativeHumidity { + impl ::roslibrust::RosMessageType for RelativeHumidity { const ROS_TYPE_NAME: &'static str = "sensor_msgs/RelativeHumidity"; const MD5SUM: &'static str = "71cfefa31dcc94f47083b1e89e6fa5c9"; const DEFINITION: &'static str = r#"# Single reading from a relative humidity sensor. @@ -5629,20 +5629,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Temperature { pub r#header: std_msgs::Header, pub r#temperature: f64, pub r#variance: f64, } - impl ::roslibrust_common::RosMessageType for Temperature { + impl ::roslibrust::RosMessageType for Temperature { const ROS_TYPE_NAME: &'static str = "sensor_msgs/Temperature"; const MD5SUM: &'static str = "c6df0674fcfebff84a15927a80ebb14b"; const DEFINITION: &'static str = r#"# Single temperature reading. @@ -5667,20 +5667,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TimeReference { pub r#header: std_msgs::Header, - pub r#time_ref: ::roslibrust_codegen::integral_types::Time, + pub r#time_ref: ::roslibrust::codegen::integral_types::Time, pub r#source: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for TimeReference { + impl ::roslibrust::RosMessageType for TimeReference { const ROS_TYPE_NAME: &'static str = "sensor_msgs/TimeReference"; const MD5SUM: &'static str = "7cb7ae5aa838323e9028637e304e0ad7"; const DEFINITION: &'static str = r#"# Measurement from an external time source not actively synchronized with the system clock. @@ -5704,18 +5704,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetCameraInfoRequest { pub r#camera_info: self::CameraInfo, } - impl ::roslibrust_common::RosMessageType for SetCameraInfoRequest { + impl ::roslibrust::RosMessageType for SetCameraInfoRequest { const ROS_TYPE_NAME: &'static str = "sensor_msgs/SetCameraInfoRequest"; const MD5SUM: &'static str = "251c96e357751cc7c699c496178141d5"; const DEFINITION: &'static str = r#"# This service requests that a camera stores the given CameraInfo as that @@ -5927,19 +5927,19 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetCameraInfoResponse { pub r#success: bool, pub r#status_message: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for SetCameraInfoResponse { + impl ::roslibrust::RosMessageType for SetCameraInfoResponse { const ROS_TYPE_NAME: &'static str = "sensor_msgs/SetCameraInfoResponse"; const MD5SUM: &'static str = "2ec6f3eff0161f4257b808b12bc830c2"; const DEFINITION: &'static str = r#"bool success # True if the call succeeded @@ -5947,7 +5947,7 @@ string status_message # Used to give details about success"#; } #[allow(dead_code)] pub struct SetCameraInfo {} - impl ::roslibrust_common::RosServiceType for SetCameraInfo { + impl ::roslibrust::RosServiceType for SetCameraInfo { const ROS_SERVICE_NAME: &'static str = "sensor_msgs/SetCameraInfo"; const MD5SUM: &'static str = "c191a50a3d5730b8679f4b95b3948b15"; type Request = SetCameraInfoRequest; @@ -5969,19 +5969,19 @@ pub mod shape_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Mesh { pub r#triangles: ::std::vec::Vec, pub r#vertices: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Mesh { + impl ::roslibrust::RosMessageType for Mesh { const ROS_TYPE_NAME: &'static str = "shape_msgs/Mesh"; const MD5SUM: &'static str = "1ffdae9486cd3316a121c578b47a85cc"; const DEFINITION: &'static str = r#"# Definition of a mesh. @@ -6005,18 +6005,18 @@ uint32[3] vertex_indices"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MeshTriangle { pub r#vertex_indices: [u32; 3], } - impl ::roslibrust_common::RosMessageType for MeshTriangle { + impl ::roslibrust::RosMessageType for MeshTriangle { const ROS_TYPE_NAME: &'static str = "shape_msgs/MeshTriangle"; const MD5SUM: &'static str = "23688b2e6d2de3d32fe8af104a903253"; const DEFINITION: &'static str = r#"# Definition of a triangle's vertices. @@ -6025,18 +6025,18 @@ uint32[3] vertex_indices"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Plane { pub r#coef: [f64; 4], } - impl ::roslibrust_common::RosMessageType for Plane { + impl ::roslibrust::RosMessageType for Plane { const ROS_TYPE_NAME: &'static str = "shape_msgs/Plane"; const MD5SUM: &'static str = "2c1b92ed8f31492f8e73f6a4a44ca796"; const DEFINITION: &'static str = r#"# Representation of a plane, using the plane equation ax + by + cz + d = 0. @@ -6049,20 +6049,20 @@ float64[4] coef"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SolidPrimitive { pub r#type: u8, pub r#dimensions: [f64; 0], pub r#polygon: geometry_msgs::Polygon, } - impl ::roslibrust_common::RosMessageType for SolidPrimitive { + impl ::roslibrust::RosMessageType for SolidPrimitive { const ROS_TYPE_NAME: &'static str = "shape_msgs/SolidPrimitive"; const MD5SUM: &'static str = "0cdf91a0a45ccd7bc1e0deb784cb2958"; const DEFINITION: &'static str = r#"# Defines box, sphere, cylinder, cone and prism. @@ -6180,18 +6180,18 @@ pub mod std_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Bool { pub r#data: bool, } - impl ::roslibrust_common::RosMessageType for Bool { + impl ::roslibrust::RosMessageType for Bool { const ROS_TYPE_NAME: &'static str = "std_msgs/Bool"; const MD5SUM: &'static str = "8b94c1b53db61fb6aed406028ad6332a"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6203,18 +6203,18 @@ bool data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Byte { pub r#data: u8, } - impl ::roslibrust_common::RosMessageType for Byte { + impl ::roslibrust::RosMessageType for Byte { const ROS_TYPE_NAME: &'static str = "std_msgs/Byte"; const MD5SUM: &'static str = "ad736a2e8818154c487bb80fe42ce43b"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6226,19 +6226,19 @@ byte data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ByteMultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for ByteMultiArray { + impl ::roslibrust::RosMessageType for ByteMultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/ByteMultiArray"; const MD5SUM: &'static str = "70ea476cbcfd65ac2f68f3cda1e891fe"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6307,18 +6307,18 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Char { pub r#data: u8, } - impl ::roslibrust_common::RosMessageType for Char { + impl ::roslibrust::RosMessageType for Char { const ROS_TYPE_NAME: &'static str = "std_msgs/Char"; const MD5SUM: &'static str = "1bf77f25acecdedba0e224b162199717"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6330,21 +6330,21 @@ char data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ColorRGBA { pub r#r: f32, pub r#g: f32, pub r#b: f32, pub r#a: f32, } - impl ::roslibrust_common::RosMessageType for ColorRGBA { + impl ::roslibrust::RosMessageType for ColorRGBA { const ROS_TYPE_NAME: &'static str = "std_msgs/ColorRGBA"; const MD5SUM: &'static str = "a29a96539573343b1310c73607334b00"; const DEFINITION: &'static str = r#"float32 r @@ -6354,34 +6354,34 @@ float32 a"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Empty {} - impl ::roslibrust_common::RosMessageType for Empty { + impl ::roslibrust::RosMessageType for Empty { const ROS_TYPE_NAME: &'static str = "std_msgs/Empty"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Float32 { pub r#data: f32, } - impl ::roslibrust_common::RosMessageType for Float32 { + impl ::roslibrust::RosMessageType for Float32 { const ROS_TYPE_NAME: &'static str = "std_msgs/Float32"; const MD5SUM: &'static str = "73fcbf46b49191e672908e50842a83d4"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6393,19 +6393,19 @@ float32 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Float32MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Float32MultiArray { + impl ::roslibrust::RosMessageType for Float32MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Float32MultiArray"; const MD5SUM: &'static str = "6a40e0ffa6a17a503ac3f8616991b1f6"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6474,18 +6474,18 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Float64 { pub r#data: f64, } - impl ::roslibrust_common::RosMessageType for Float64 { + impl ::roslibrust::RosMessageType for Float64 { const ROS_TYPE_NAME: &'static str = "std_msgs/Float64"; const MD5SUM: &'static str = "fdb28210bfa9d7c91146260178d9a584"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6497,19 +6497,19 @@ float64 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Float64MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Float64MultiArray { + impl ::roslibrust::RosMessageType for Float64MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Float64MultiArray"; const MD5SUM: &'static str = "4b7d974086d4060e7db4613a7e6c3ba4"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6578,19 +6578,19 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Header { - pub r#stamp: ::roslibrust_codegen::integral_types::Time, + pub r#stamp: ::roslibrust::codegen::integral_types::Time, pub r#frame_id: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for Header { + impl ::roslibrust::RosMessageType for Header { const ROS_TYPE_NAME: &'static str = "std_msgs/Header"; const MD5SUM: &'static str = "5ed6b5dd1ef879ffb9c2ac51bab61a63"; const DEFINITION: &'static str = r#"# Standard metadata for higher-level stamped data types. @@ -6605,18 +6605,18 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int16 { pub r#data: i16, } - impl ::roslibrust_common::RosMessageType for Int16 { + impl ::roslibrust::RosMessageType for Int16 { const ROS_TYPE_NAME: &'static str = "std_msgs/Int16"; const MD5SUM: &'static str = "8524586e34fbd7cb1c08c5f5f1ca0e57"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6628,19 +6628,19 @@ int16 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int16MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Int16MultiArray { + impl ::roslibrust::RosMessageType for Int16MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Int16MultiArray"; const MD5SUM: &'static str = "d9338d7f523fcb692fae9d0a0e9f067c"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6709,18 +6709,18 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int32 { pub r#data: i32, } - impl ::roslibrust_common::RosMessageType for Int32 { + impl ::roslibrust::RosMessageType for Int32 { const ROS_TYPE_NAME: &'static str = "std_msgs/Int32"; const MD5SUM: &'static str = "da5909fbe378aeaf85e547e830cc1bb7"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6732,19 +6732,19 @@ int32 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int32MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Int32MultiArray { + impl ::roslibrust::RosMessageType for Int32MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Int32MultiArray"; const MD5SUM: &'static str = "1d99f79f8b325b44fee908053e9c945b"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6813,18 +6813,18 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int64 { pub r#data: i64, } - impl ::roslibrust_common::RosMessageType for Int64 { + impl ::roslibrust::RosMessageType for Int64 { const ROS_TYPE_NAME: &'static str = "std_msgs/Int64"; const MD5SUM: &'static str = "34add168574510e6e17f5d23ecc077ef"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6836,19 +6836,19 @@ int64 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int64MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Int64MultiArray { + impl ::roslibrust::RosMessageType for Int64MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Int64MultiArray"; const MD5SUM: &'static str = "54865aa6c65be0448113a2afc6a49270"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6917,18 +6917,18 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int8 { pub r#data: i8, } - impl ::roslibrust_common::RosMessageType for Int8 { + impl ::roslibrust::RosMessageType for Int8 { const ROS_TYPE_NAME: &'static str = "std_msgs/Int8"; const MD5SUM: &'static str = "27ffa0c9c4b8fb8492252bcad9e5c57b"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -6940,19 +6940,19 @@ int8 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Int8MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for Int8MultiArray { + impl ::roslibrust::RosMessageType for Int8MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/Int8MultiArray"; const MD5SUM: &'static str = "d7c1af35a1b4781bbe79e03dd94b7c13"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7021,20 +7021,20 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiArrayDimension { pub r#label: ::std::string::String, pub r#size: u32, pub r#stride: u32, } - impl ::roslibrust_common::RosMessageType for MultiArrayDimension { + impl ::roslibrust::RosMessageType for MultiArrayDimension { const ROS_TYPE_NAME: &'static str = "std_msgs/MultiArrayDimension"; const MD5SUM: &'static str = "4cd0c83a8683deae40ecdac60e53bfa8"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7048,19 +7048,19 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiArrayLayout { pub r#dim: ::std::vec::Vec, pub r#data_offset: u32, } - impl ::roslibrust_common::RosMessageType for MultiArrayLayout { + impl ::roslibrust::RosMessageType for MultiArrayLayout { const ROS_TYPE_NAME: &'static str = "std_msgs/MultiArrayLayout"; const MD5SUM: &'static str = "0fed2a11c13e11c5571b4e2a995a91a3"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7107,18 +7107,18 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct String { pub r#data: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for String { + impl ::roslibrust::RosMessageType for String { const ROS_TYPE_NAME: &'static str = "std_msgs/String"; const MD5SUM: &'static str = "992ce8a1687cec8c8bd883ec73ca41d1"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7130,18 +7130,18 @@ string data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt16 { pub r#data: u16, } - impl ::roslibrust_common::RosMessageType for UInt16 { + impl ::roslibrust::RosMessageType for UInt16 { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt16"; const MD5SUM: &'static str = "1df79edf208b629fe6b81923a544552d"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7153,19 +7153,19 @@ uint16 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt16MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for UInt16MultiArray { + impl ::roslibrust::RosMessageType for UInt16MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt16MultiArray"; const MD5SUM: &'static str = "52f264f1c973c4b73790d384c6cb4484"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7234,18 +7234,18 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt32 { pub r#data: u32, } - impl ::roslibrust_common::RosMessageType for UInt32 { + impl ::roslibrust::RosMessageType for UInt32 { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt32"; const MD5SUM: &'static str = "304a39449588c7f8ce2df6e8001c5fce"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7257,19 +7257,19 @@ uint32 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt32MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for UInt32MultiArray { + impl ::roslibrust::RosMessageType for UInt32MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt32MultiArray"; const MD5SUM: &'static str = "4d6a180abc9be191b96a7eda6c8a233d"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7338,18 +7338,18 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt64 { pub r#data: u64, } - impl ::roslibrust_common::RosMessageType for UInt64 { + impl ::roslibrust::RosMessageType for UInt64 { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt64"; const MD5SUM: &'static str = "1b2a79973e8bf53d7b53acb71299cb57"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7361,19 +7361,19 @@ uint64 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt64MultiArray { pub r#layout: self::MultiArrayLayout, pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for UInt64MultiArray { + impl ::roslibrust::RosMessageType for UInt64MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt64MultiArray"; const MD5SUM: &'static str = "6088f127afb1d6c72927aa1247e945af"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7442,18 +7442,18 @@ uint32 stride # stride of given dimension"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt8 { pub r#data: u8, } - impl ::roslibrust_common::RosMessageType for UInt8 { + impl ::roslibrust::RosMessageType for UInt8 { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt8"; const MD5SUM: &'static str = "7c8164229e7d2c17eb95e9231617fdee"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7465,20 +7465,20 @@ uint8 data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UInt8MultiArray { pub r#layout: self::MultiArrayLayout, - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for UInt8MultiArray { + impl ::roslibrust::RosMessageType for UInt8MultiArray { const ROS_TYPE_NAME: &'static str = "std_msgs/UInt8MultiArray"; const MD5SUM: &'static str = "82373f1612381bb6ee473b5cd6f5d89c"; const DEFINITION: &'static str = r#"# This was originally provided as an example message. @@ -7561,39 +7561,39 @@ pub mod std_srvs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct EmptyRequest {} - impl ::roslibrust_common::RosMessageType for EmptyRequest { + impl ::roslibrust::RosMessageType for EmptyRequest { const ROS_TYPE_NAME: &'static str = "std_srvs/EmptyRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct EmptyResponse {} - impl ::roslibrust_common::RosMessageType for EmptyResponse { + impl ::roslibrust::RosMessageType for EmptyResponse { const ROS_TYPE_NAME: &'static str = "std_srvs/EmptyResponse"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(dead_code)] pub struct Empty {} - impl ::roslibrust_common::RosServiceType for Empty { + impl ::roslibrust::RosServiceType for Empty { const ROS_SERVICE_NAME: &'static str = "std_srvs/Empty"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; type Request = EmptyRequest; @@ -7601,37 +7601,37 @@ pub mod std_srvs { } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetBoolRequest { pub r#data: bool, } - impl ::roslibrust_common::RosMessageType for SetBoolRequest { + impl ::roslibrust::RosMessageType for SetBoolRequest { const ROS_TYPE_NAME: &'static str = "std_srvs/SetBoolRequest"; const MD5SUM: &'static str = "8b94c1b53db61fb6aed406028ad6332a"; const DEFINITION: &'static str = r#"bool data # e.g. for hardware enabling / disabling"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct SetBoolResponse { pub r#success: bool, pub r#message: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for SetBoolResponse { + impl ::roslibrust::RosMessageType for SetBoolResponse { const ROS_TYPE_NAME: &'static str = "std_srvs/SetBoolResponse"; const MD5SUM: &'static str = "937c9679a518e3a18d831e57125ea522"; const DEFINITION: &'static str = r#"bool success # indicate successful run of triggered service @@ -7639,7 +7639,7 @@ string message # informational, e.g. for error messages"#; } #[allow(dead_code)] pub struct SetBool {} - impl ::roslibrust_common::RosServiceType for SetBool { + impl ::roslibrust::RosServiceType for SetBool { const ROS_SERVICE_NAME: &'static str = "std_srvs/SetBool"; const MD5SUM: &'static str = "09fb03525b03e7ea1fd3992bafd87e16"; type Request = SetBoolRequest; @@ -7647,35 +7647,35 @@ string message # informational, e.g. for error messages"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TriggerRequest {} - impl ::roslibrust_common::RosMessageType for TriggerRequest { + impl ::roslibrust::RosMessageType for TriggerRequest { const ROS_TYPE_NAME: &'static str = "std_srvs/TriggerRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct TriggerResponse { pub r#success: bool, pub r#message: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for TriggerResponse { + impl ::roslibrust::RosMessageType for TriggerResponse { const ROS_TYPE_NAME: &'static str = "std_srvs/TriggerResponse"; const MD5SUM: &'static str = "937c9679a518e3a18d831e57125ea522"; const DEFINITION: &'static str = r#"bool success # indicate successful run of triggered service @@ -7683,7 +7683,7 @@ string message # informational, e.g. for error messages"#; } #[allow(dead_code)] pub struct Trigger {} - impl ::roslibrust_common::RosServiceType for Trigger { + impl ::roslibrust::RosServiceType for Trigger { const ROS_SERVICE_NAME: &'static str = "std_srvs/Trigger"; const MD5SUM: &'static str = "937c9679a518e3a18d831e57125ea522"; type Request = TriggerRequest; @@ -7705,14 +7705,14 @@ pub mod stereo_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct DisparityImage { pub r#header: std_msgs::Header, pub r#image: sensor_msgs::Image, @@ -7723,7 +7723,7 @@ pub mod stereo_msgs { pub r#max_disparity: f32, pub r#delta_d: f32, } - impl ::roslibrust_common::RosMessageType for DisparityImage { + impl ::roslibrust::RosMessageType for DisparityImage { const ROS_TYPE_NAME: &'static str = "stereo_msgs/DisparityImage"; const MD5SUM: &'static str = "cb0de8feef04280238c7b77d74b2beca"; const DEFINITION: &'static str = r#"# Separate header for compatibility with current TimeSynchronizer. @@ -7843,14 +7843,14 @@ pub mod test_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Defaults { #[default(42u8)] pub r#x: u8, @@ -7865,7 +7865,7 @@ pub mod test_msgs { #[default(_code = "[\"hello\", \"world\"].iter().map(|x| x.to_string()).collect()")] pub r#s_vec: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for Defaults { + impl ::roslibrust::RosMessageType for Defaults { const ROS_TYPE_NAME: &'static str = "test_msgs/Defaults"; const MD5SUM: &'static str = "43c441dc2b521c313f54affd982b5314"; const DEFINITION: &'static str = r#"# This message is specifically for testing generating of default values @@ -7901,20 +7901,20 @@ pub mod trajectory_msgs { use super::visualization_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct JointTrajectory { pub r#header: std_msgs::Header, pub r#joint_names: ::std::vec::Vec<::std::string::String>, pub r#points: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for JointTrajectory { + impl ::roslibrust::RosMessageType for JointTrajectory { const ROS_TYPE_NAME: &'static str = "trajectory_msgs/JointTrajectory"; const MD5SUM: &'static str = "d63e3b4556d9dbd9f48b5ab4a03f1fee"; const DEFINITION: &'static str = r#"# The header is used to specify the coordinate frame and the reference time for @@ -7970,22 +7970,22 @@ builtin_interfaces/Duration time_from_start"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct JointTrajectoryPoint { pub r#positions: ::std::vec::Vec, pub r#velocities: ::std::vec::Vec, pub r#accelerations: ::std::vec::Vec, pub r#effort: ::std::vec::Vec, - pub r#time_from_start: ::roslibrust_codegen::integral_types::Duration, + pub r#time_from_start: ::roslibrust::codegen::integral_types::Duration, } - impl ::roslibrust_common::RosMessageType for JointTrajectoryPoint { + impl ::roslibrust::RosMessageType for JointTrajectoryPoint { const ROS_TYPE_NAME: &'static str = "trajectory_msgs/JointTrajectoryPoint"; const MD5SUM: &'static str = "2c812f86aa886c93954e333721749ac5"; const DEFINITION: &'static str = r#"# Each trajectory point specifies either positions[, velocities[, accelerations]] @@ -8017,20 +8017,20 @@ builtin_interfaces/Duration time_from_start"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiDOFJointTrajectory { pub r#header: std_msgs::Header, pub r#joint_names: ::std::vec::Vec<::std::string::String>, pub r#points: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for MultiDOFJointTrajectory { + impl ::roslibrust::RosMessageType for MultiDOFJointTrajectory { const ROS_TYPE_NAME: &'static str = "trajectory_msgs/MultiDOFJointTrajectory"; const MD5SUM: &'static str = "d00d14d97bd70c5eb648278240cfb066"; const DEFINITION: &'static str = r#"# The header is used to specify the coordinate frame and the reference time for the trajectory durations @@ -8192,21 +8192,21 @@ float64 z"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MultiDOFJointTrajectoryPoint { pub r#transforms: ::std::vec::Vec, pub r#velocities: ::std::vec::Vec, pub r#accelerations: ::std::vec::Vec, - pub r#time_from_start: ::roslibrust_codegen::integral_types::Duration, + pub r#time_from_start: ::roslibrust::codegen::integral_types::Duration, } - impl ::roslibrust_common::RosMessageType for MultiDOFJointTrajectoryPoint { + impl ::roslibrust::RosMessageType for MultiDOFJointTrajectoryPoint { const ROS_TYPE_NAME: &'static str = "trajectory_msgs/MultiDOFJointTrajectoryPoint"; const MD5SUM: &'static str = "6731945e53cbc0fbc6e93c28f7416a71"; const DEFINITION: &'static str = r#"# Each multi-dof joint can specify a transform (up to 6 DOF). @@ -8298,14 +8298,14 @@ pub mod visualization_msgs { use super::trajectory_msgs; #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct ImageMarker { pub r#header: std_msgs::Header, pub r#ns: ::std::string::String, @@ -8317,11 +8317,11 @@ pub mod visualization_msgs { pub r#outline_color: std_msgs::ColorRGBA, pub r#filled: u8, pub r#fill_color: std_msgs::ColorRGBA, - pub r#lifetime: ::roslibrust_codegen::integral_types::Duration, + pub r#lifetime: ::roslibrust::codegen::integral_types::Duration, pub r#points: ::std::vec::Vec, pub r#outline_colors: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for ImageMarker { + impl ::roslibrust::RosMessageType for ImageMarker { const ROS_TYPE_NAME: &'static str = "visualization_msgs/ImageMarker"; const MD5SUM: &'static str = "829dd5d9ba39b8c3844252ebd8b47b96"; const DEFINITION: &'static str = r#"int32 CIRCLE=0 @@ -8396,14 +8396,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarker { pub r#header: std_msgs::Header, pub r#pose: geometry_msgs::Pose, @@ -8413,7 +8413,7 @@ string frame_id"#; pub r#menu_entries: ::std::vec::Vec, pub r#controls: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for InteractiveMarker { + impl ::roslibrust::RosMessageType for InteractiveMarker { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarker"; const MD5SUM: &'static str = "d71737fa44c5bdefd6bdb4fa9b2b86e5"; const DEFINITION: &'static str = r#"# Time/frame info. @@ -9164,14 +9164,14 @@ float32 v"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarkerControl { pub r#name: ::std::string::String, pub r#orientation: geometry_msgs::Quaternion, @@ -9182,7 +9182,7 @@ float32 v"#; pub r#independent_marker_orientation: bool, pub r#description: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for InteractiveMarkerControl { + impl ::roslibrust::RosMessageType for InteractiveMarkerControl { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarkerControl"; const MD5SUM: &'static str = "7b945e790a2d68f430a6eb79f33bf8df"; const DEFINITION: &'static str = r#"# Represents a control that is to be displayed together with an interactive marker @@ -9573,14 +9573,14 @@ float32 v"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarkerFeedback { pub r#header: std_msgs::Header, pub r#client_id: ::std::string::String, @@ -9592,7 +9592,7 @@ float32 v"#; pub r#mouse_point: geometry_msgs::Point, pub r#mouse_point_valid: bool, } - impl ::roslibrust_common::RosMessageType for InteractiveMarkerFeedback { + impl ::roslibrust::RosMessageType for InteractiveMarkerFeedback { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarkerFeedback"; const MD5SUM: &'static str = "880e5141421ed8d30906fad686bc17bd"; const DEFINITION: &'static str = r#"# Time/frame info. @@ -9694,20 +9694,20 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarkerInit { pub r#server_id: ::std::string::String, pub r#seq_num: u64, pub r#markers: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for InteractiveMarkerInit { + impl ::roslibrust::RosMessageType for InteractiveMarkerInit { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarkerInit"; const MD5SUM: &'static str = "5d275694a5cb7ea4627f917a9eb1b4cd"; const DEFINITION: &'static str = r#"# Identifying string. Must be unique in the topic namespace @@ -11193,20 +11193,20 @@ float32 v"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarkerPose { pub r#header: std_msgs::Header, pub r#pose: geometry_msgs::Pose, pub r#name: ::std::string::String, } - impl ::roslibrust_common::RosMessageType for InteractiveMarkerPose { + impl ::roslibrust::RosMessageType for InteractiveMarkerPose { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarkerPose"; const MD5SUM: &'static str = "b88540594a0f8e3fe46c720be41faa03"; const DEFINITION: &'static str = r#"# Time/frame info. @@ -11266,14 +11266,14 @@ string frame_id"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct InteractiveMarkerUpdate { pub r#server_id: ::std::string::String, pub r#seq_num: u64, @@ -11282,7 +11282,7 @@ string frame_id"#; pub r#poses: ::std::vec::Vec, pub r#erases: ::std::vec::Vec<::std::string::String>, } - impl ::roslibrust_common::RosMessageType for InteractiveMarkerUpdate { + impl ::roslibrust::RosMessageType for InteractiveMarkerUpdate { const ROS_TYPE_NAME: &'static str = "visualization_msgs/InteractiveMarkerUpdate"; const MD5SUM: &'static str = "8f52c675c849441ae87da82eaa4d6eb5"; const DEFINITION: &'static str = r#"# Identifying string. Must be unique in the topic namespace @@ -12846,14 +12846,14 @@ float32 v"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct Marker { pub r#header: std_msgs::Header, pub r#ns: ::std::string::String, @@ -12863,7 +12863,7 @@ float32 v"#; pub r#pose: geometry_msgs::Pose, pub r#scale: geometry_msgs::Vector3, pub r#color: std_msgs::ColorRGBA, - pub r#lifetime: ::roslibrust_codegen::integral_types::Duration, + pub r#lifetime: ::roslibrust::codegen::integral_types::Duration, pub r#frame_locked: bool, pub r#points: ::std::vec::Vec, pub r#colors: ::std::vec::Vec, @@ -12875,7 +12875,7 @@ float32 v"#; pub r#mesh_file: self::MeshFile, pub r#mesh_use_embedded_materials: bool, } - impl ::roslibrust_common::RosMessageType for Marker { + impl ::roslibrust::RosMessageType for Marker { const ROS_TYPE_NAME: &'static str = "visualization_msgs/Marker"; const MD5SUM: &'static str = "56c6324983a404ead7a426609371feed"; const DEFINITION: &'static str = r#"# See: @@ -13085,18 +13085,18 @@ float32 v"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MarkerArray { pub r#markers: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for MarkerArray { + impl ::roslibrust::RosMessageType for MarkerArray { const ROS_TYPE_NAME: &'static str = "visualization_msgs/MarkerArray"; const MD5SUM: &'static str = "11e38f15427197858cf46456867167bd"; const DEFINITION: &'static str = r#"Marker[] markers @@ -13395,14 +13395,14 @@ float32 v"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MenuEntry { pub r#id: u32, pub r#parent_id: u32, @@ -13410,7 +13410,7 @@ float32 v"#; pub r#command: ::std::string::String, pub r#command_type: u8, } - impl ::roslibrust_common::RosMessageType for MenuEntry { + impl ::roslibrust::RosMessageType for MenuEntry { const ROS_TYPE_NAME: &'static str = "visualization_msgs/MenuEntry"; const MD5SUM: &'static str = "b90ec63024573de83b57aa93eb39be2d"; const DEFINITION: &'static str = r#"# MenuEntry message. @@ -13476,20 +13476,20 @@ uint8 command_type"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct MeshFile { pub r#filename: ::std::string::String, - #[serde(with = "::roslibrust_codegen::serde_bytes")] + #[serde(with = "::roslibrust::codegen::serde_bytes")] pub r#data: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for MeshFile { + impl ::roslibrust::RosMessageType for MeshFile { const ROS_TYPE_NAME: &'static str = "visualization_msgs/MeshFile"; const MD5SUM: &'static str = "39f264648e441626a1045a7d9ef1ba17"; const DEFINITION: &'static str = r#"# Used to send raw mesh files. @@ -13503,19 +13503,19 @@ uint8[] data"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct UVCoordinate { pub r#u: f32, pub r#v: f32, } - impl ::roslibrust_common::RosMessageType for UVCoordinate { + impl ::roslibrust::RosMessageType for UVCoordinate { const ROS_TYPE_NAME: &'static str = "visualization_msgs/UVCoordinate"; const MD5SUM: &'static str = "4f5254e0e12914c461d4b17a0cd07f7f"; const DEFINITION: &'static str = r#"# Location of the pixel as a ratio of the width of a 2D texture. @@ -13525,35 +13525,35 @@ float32 v"#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetInteractiveMarkersRequest {} - impl ::roslibrust_common::RosMessageType for GetInteractiveMarkersRequest { + impl ::roslibrust::RosMessageType for GetInteractiveMarkersRequest { const ROS_TYPE_NAME: &'static str = "visualization_msgs/GetInteractiveMarkersRequest"; const MD5SUM: &'static str = "d41d8cd98f00b204e9800998ecf8427e"; const DEFINITION: &'static str = r#""#; } #[allow(non_snake_case)] #[derive( - :: roslibrust_codegen :: Deserialize, - :: roslibrust_codegen :: Serialize, - :: roslibrust_codegen :: SmartDefault, + :: roslibrust :: codegen :: Deserialize, + :: roslibrust :: codegen :: Serialize, + :: roslibrust :: codegen :: SmartDefault, Debug, Clone, PartialEq, )] - #[serde(crate = "::roslibrust_codegen::serde")] + #[serde(crate = "::roslibrust::codegen::serde")] pub struct GetInteractiveMarkersResponse { pub r#sequence_number: u64, pub r#markers: ::std::vec::Vec, } - impl ::roslibrust_common::RosMessageType for GetInteractiveMarkersResponse { + impl ::roslibrust::RosMessageType for GetInteractiveMarkersResponse { const ROS_TYPE_NAME: &'static str = "visualization_msgs/GetInteractiveMarkersResponse"; const MD5SUM: &'static str = "923b76ef2c497d4ff5f83a061d424d3b"; const DEFINITION: &'static str = r#"# Sequence number. @@ -15033,7 +15033,7 @@ float32 v"#; } #[allow(dead_code)] pub struct GetInteractiveMarkers {} - impl ::roslibrust_common::RosServiceType for GetInteractiveMarkers { + impl ::roslibrust::RosServiceType for GetInteractiveMarkers { const ROS_SERVICE_NAME: &'static str = "visualization_msgs/GetInteractiveMarkers"; const MD5SUM: &'static str = "923b76ef2c497d4ff5f83a061d424d3b"; type Request = GetInteractiveMarkersRequest; diff --git a/roslibrust_test/tests/ros1_codegen_tests.rs b/roslibrust_test/tests/ros1_codegen_tests.rs index 229d20fd..ab3aa963 100644 --- a/roslibrust_test/tests/ros1_codegen_tests.rs +++ b/roslibrust_test/tests/ros1_codegen_tests.rs @@ -1,4 +1,4 @@ -use roslibrust_common::*; +use roslibrust::{RosMessageType, RosServiceType}; use roslibrust_test::ros1::*; /// Ensures that associate constants are generated on the test_msgs correctly