Ros2Node#
Fully qualified name: isaacsim::ros2::bridge::Ros2Node
-
class Ros2Node : public isaacsim::core::includes::BaseResetNode#
Base class for ROS 2 bridge nodes.
This class provides the foundation for ROS 2 nodes in the Isaac Sim bridge. It handles node lifecycle management, initialization, and automatic cleanup of the internal ROS 2 node handle. Derived classes should implement specific node functionality while relying on this base class for core ROS 2 operations.
Public Functions
-
inline Ros2Node()#
Constructor for the ROS 2 node.
Initializes the node by retrieving necessary interfaces:
Core node framework interface
ROS 2 bridge interface
Settings interface for configuration
ROS 2 factory for node creation
The constructor also configures publishing verification settings based on the extension configuration.
-
inline virtual void reset()#
Resets the node handle.
Cleans up the ROS 2 node handle. Derived classes should call this method after cleaning up their own publishers/subscribers.
Note
This is a virtual method that can be overridden by derived classes
- inline bool initializeNodeHandle( )#
Initializes the ROS 2 node handle.
Creates and initializes the ROS 2 node handle with the specified name and namespace. This method should be called before performing any operations with the node. Node name changes are only applied after a Stop and Play cycle.
Note
The method sanitizes node names and validates them before initialization
- Parameters:
nodeName – [in] Name for the ROS 2 node
namespaceName – [in] Namespace for the ROS 2 node
contextHandleAddr – [in] Memory address of the context handler
- Returns:
bool True if initialization succeeded, false otherwise
-
inline bool isInitialized() const#
Checks if the node is initialized.
Verifies if the node handle has been properly created and initialized
- Returns:
bool True if the node handle exists, false otherwise
Public Static Functions
- static inline std::string addTopicPrefix( )#
Adds a prefix to a topic name.
Prepends the specified prefix to a topic name, ensuring proper separator character (/) placement between prefix and topic name.
Note
Returns empty string if input topic name is empty
- Parameters:
prefix – [in] Prefix to add to the topic name
topicName – [in] Original topic name
- Returns:
std::string The prefixed topic name
- static inline std::string collectNamespace(
- const std::string &namespaceInput,
- const PXR_NS::UsdPrim &startPrim,
- const bool tfNode = false,
Collects namespace information from USD stage.
Traverses up the USD stage hierarchy from the start prim, collecting namespace information from isaac:namespace attributes. For non-TF nodes, builds a hierarchical namespace. For TF nodes, only uses the highest-level namespace.
Note
Returns input namespace if not empty
- Parameters:
namespaceInput – [in] Initial namespace (if not empty, skips collection)
startPrim – [in] USD Prim to start namespace collection from
tfNode – [in] Whether collecting namespace for a TF node
- Returns:
std::string Collected namespace string
Protected Attributes
-
isaacsim::ros2::bridge::Ros2Bridge *m_ros2Bridge = nullptr#
Ros2Bridge (carb) interface.
-
std::shared_ptr<Ros2NodeHandle> m_nodeHandle = nullptr#
Node handler.
-
carb::settings::ISettings *m_settings = nullptr#
Settings (carb) interface.
-
bool m_publishWithoutVerification#
Whether to publish in a topic even if there are no subscription to it.
-
std::shared_ptr<Ros2ContextHandle> *m_contextHandle#
Context handler.
-
Ros2Factory *m_factory = nullptr#
Factory instance for creating ROS 2 related objects according to the sourced ROS 2 distribution.
-
inline Ros2Node()#