Crate ros2_client

Source
Expand description

ROS 2 client library, similar to the rclcpp or rclpy libraries, in native Rust. The underlying DDS implementation, RustDDS, is also native Rust.

§Example

use futures::StreamExt;
use ros2_client::*;

  let context = Context::new().unwrap();
  let mut node = context
    .new_node(
      NodeName::new("/rustdds", "rustdds_listener").unwrap(),
      NodeOptions::new().enable_rosout(true),
    )
    .unwrap();

  let chatter_topic = node
    .create_topic(
      &Name::new("/","topic").unwrap(),
      MessageTypeName::new("std_msgs", "String"),
      &ros2_client::DEFAULT_SUBSCRIPTION_QOS,
    )
    .unwrap();
  let chatter_subscription = node
    .create_subscription::<String>(&chatter_topic, None)
    .unwrap();

  let subscription_stream = chatter_subscription
    .async_stream()
    .for_each(|result| async {
      match result {
        Ok((msg, _)) => println!("I heard: {msg}"),
        Err(e) => eprintln!("Receive request error: {:?}", e),
      }
    });

  // Since we enabled rosout, let's log something
  rosout!(
    node,
    ros2::LogLevel::Info,
    "wow. very listening. such topics. much subscribe."
  );

  // Uncomment this to execute until interrupted.
  // --> smol::block_on( subscription_stream );

Modules§

action
ROS 2 Action machinery
builtin_interfaces
Some builtin interfaces for ROS2 communication Defines message types Duration and Time. See builtin_interfaces
builtin_topics
Some builtin datatypes needed for ROS2 communication Some convenience topic infos for ROS2 communication
entities_info
Message types for ROS 2 Discovery
log
rosout logging data types
message
Defines Message trait, which defines data that is to be sent over Topics.
message_info
Metadata for received Messages, such as Timestamps and publisher id.
names
This module defines types to represent ROS 2 names for
parameters
Rust-like representation of ROS2 Parameters
rcl_interfaces
Corresponds to package rcl_interfaces. Defines message types for Parameter manipulation.
ros2
Module for stuff we do not want to export from top level;
ros_time
ROS timing abstractions ROSTime and SystemTime
rosout
Helpers for rosout logging
service
Implementation of ROS 2 Services
steady_time
Steady time has an arbitrary origin, but is guaranteed to run monotonically (i.e. non-decreasing), regardless of clock corrections or timezones.

Macros§

rosout
Macro for writing to rosout topic.

Structs§

AService
AService is a means of constructing a descriptor for a Service on the fly. This allows generic code to construct a Service from the types of request and response.
Action
This is used to construct an ActionType implementation from pre-existing component types.
ActionTypeName
Similar to MessageTypeName, but names an Action type.
Client
Client end of a ROS2 Service
Context
Context communicates with other participants information in ROS2 network. It keeps track of NodeEntitiesInfos. Also acts as a wrapper for a RustDDS instance.
ContextOptions
Builder for configuring a Context
DEFAULT_PUBLISHER_QOS
Basic Reliable QoS for publishing.
DEFAULT_SUBSCRIPTION_QOS
Basic BestEffort QoS for subscribers
MessageInfo
Message metadata
MessageTypeName
Name for .msg type, or a data type carried over a Topic.
Name
Names for Topics, Services
Node
Node in ROS2 network. Holds necessary readers and writers for rosout and parameter events topics internally.
NodeLoggingHandle
A handle to log from any node without moving it between threads.
NodeName
Names for Nodes
NodeOptions
Configuration of Node This is a builder-like struct.
Parameter
Named parameter
Publisher
A ROS2 Publisher
ROSTime
ROS Time with nanosecond precision
Server
Server end of a ROS2 Service
ServiceTypeName
Similar to MessageTypeName, but names a Service type.
Spinner
Spinner implements Node’s background event loop.
Subscription
A ROS2 Subscription
SystemTime
Same as ROSTime, except this one cannot be simulated.
WString
UTF-16 strings, as required by the ROS type system.

Enums§

NodeCreateError
What went wrong in Node creation
NodeEvent
DDS or ROS 2 Discovery events.
ParameterError
Error when setting Parameters
ParameterValue
Rust-like representation of ROS2 ParameterValue
ReaderWait
Future type for waiting Readers to appear over ROS2 Topic.
ServiceMapping
Selects how Service Requests and Responses are to be mapped to DDS.
WriterWait
Future type for waiting Writers to appear over ROS2 Topic.

Statics§

DEFAULT_PUBLISHER_QOS
DEFAULT_SUBSCRIPTION_QOS

Traits§

ActionTypes
A trait to define an Action type
Message
Trait to ensure Messages can be (de)serialized
RosoutRaw
Ability to write to rosout log.
Service
Service trait pairs the Request and Response types together. Additionally, it ensures that Response and Request are Messages (Serializable), and we have a means to name the types.