9 releases

0.7.4 Dec 3, 2023
0.7.3 Oct 31, 2023
0.6.0 Sep 30, 2023
0.4.0 Jul 2, 2023

#49 in Robotics

Download history 15/week @ 2024-09-04 30/week @ 2024-09-11 29/week @ 2024-09-18 24/week @ 2024-09-25 7/week @ 2024-10-02 1/week @ 2024-10-09 7/week @ 2024-10-16 8/week @ 2024-10-23 19/week @ 2024-10-30 22/week @ 2024-11-06 22/week @ 2024-11-13 20/week @ 2024-11-20 32/week @ 2024-11-27

98 downloads per month

Apache-2.0

9.5MB
205K SLoC

Rust 173K SLoC // 0.1% comments C++ 31K SLoC // 0.2% comments Bazel 1K SLoC // 0.1% comments Python 313 SLoC // 0.4% comments Shell 72 SLoC // 0.5% comments

gz

crates.io

This crate contains following crates and re-exports them.

  • gz-msgs: Rust implementation of Gazebo Messages
  • gz-transport: Rust wrapper of Gazebo Transport

Gazebo version

This crate is supporting following versions of Gazebo.

  • Fortress
  • Garden
  • Harmonic

Gazebo version can be specified by a feature flag (fortress, garden or harmonic). If not specified, the version is determined by using pkg-config. When multiple versions are installed, the newer version takes precedence. If you want to use an older version, set the feature flag as above.

[dependencies]
gz = { version = "0.7.4", features = ["garden"] }

Dependencies

  • Gazebo
    • gz-msgs
    • gz-transport
  • pkg-config

Examples

Example: Publish

use gz::{msgs::stringmsg::StringMsg, transport::Node};

let mut node = Node::new().unwrap();
let mut publisher = node.advertise("topic_name").unwrap();

let topic = StringMsg {
    data: "Hello, world!".to_string(),
    ..Default::default()
};

assert!(publisher.publish(&topic));

Example: Subscribe (callback)

use gz::{msgs::stringmsg::StringMsg, transport::Node};

let mut node = Node::new().unwrap();
node.subscribe("topic_name", |msg: StringMsg| {
    println!("Subscribed: {}", msg.data);
});

gz::transport::wait_for_shutdown();

Example: Subscribe (channel)

subscribe_channel also uses callbacks internally. However, subscribe_channel may be easier to use when ownership is involved.

use gz::{msgs::stringmsg::StringMsg, transport::Node};

let mut node = Node::new().unwrap();
let rx = node.subscribe_channel::<StringMsg>("topic_name", 10).unwrap();

for msg in rx {
    println!("Received: {}", msg.data);
}

Dependencies