Available Now
Book a demo and get early access. Free trial!
Topics are named channels where one part of your robot sends data (a publisher), and another receives it (a subscriber). It’s a one-way, anonymous communication system—perfect for real-time streams like sensor readings or motor commands. Think of it like a radio:
📻 Publisher = DJ broadcasting on 98.7 FM
🎧 Subscriber = Your robot’s software tuned to that station
In ROS 2, a topic is a named bus over which nodes exchange messages using a publish/subscribe (pub/sub) model. This architecture enables real-time, one-way, asynchronous communication that is:
This decoupled architecture enables real-time data exchange without requiring nodes to be aware of each other. Each topic is bound to a specific message type (or interface), such as sensor_msgs/msg/Image
or geometry_msgs/msg/Twist
. The ROS 2 middleware (DDS) ensures automatic discovery and routing of messages. Multiple publishers and subscribers can use the same topic simultaneously, and advanced Quality of Service (QoS) settings allow for tuning communication reliability, latency, and history depth based on system constraints.
Isaac Sim uses ROS 2 topics as the communication bridge between simulated robots and the external ROS 2 ecosystem. Simulated sensors (like LiDARs or cameras) publish synthetic data on ROS 2 topics, while motion commands (like /cmd_vel
) are subscribed to by Isaac Sim and applied to the virtual robot. This enables realistic, closed-loop testing of robotics applications, where ROS-based software can be validated without physical hardware.
| Use Case | Isaac Sim Role | ROS 2 Topic | Message Type |
| ------------------- | ------------------------- | ----------------------- | ------------------------------------- |
| Simulated LiDAR | Publishes point cloud | `/scan` | `sensor_msgs/msg/LaserScan` |
| Differential Drive | Subscribes to velocity | `/cmd_vel` | `geometry_msgs/msg/Twist` |
| Robotic Arm | Publishes joint state | `/joint_states` | `sensor_msgs/msg/JointState` |
| Camera Sensor | Publishes RGB image | `/camera/image_raw` | `sensor_msgs/msg/Image` |
| Articulated Control | Subscribes to joint input | `/arm/joint_trajectory` | `trajectory_msgs/msg/JointTrajectory` |
ROS 2 allows multiple publishers and subscribers inside a single node. This pattern works best when:
When tasks are logically separate, split them into multiple nodes. This is great for:
📦 Example structure for a warehouse robot:
navigation_node
lidar_node
controller_node
battery_monitor_node
Each node handles its own job, and topics connect them.
ROS 2 timers let you schedule a function to run repeatedly (e.g., every 0.1s). Timers are essential for:
Timers are lightweight, event-driven, and fully integrated into the ROS 2 execution model.
Book a demo and get early access. Free trial!