Yes, turtlesim exists in both ROS 1 and ROS 2, but with some differences in implementation and usage. Here's a breakdown:

Turtlesim in ROS 1 vs. ROS 2

Feature ROS 1 Turtlesim ROS 2 Turtlesim
Purpose Basic 2D simulator for learning ROS 1 Updated 2D simulator for learning ROS 2
Node Structure Uses ROS 1 nodes (roscore required) Uses ROS 2 nodes (no central roscore)
CLI Commands rosrun turtlesim turtlesim_node ros2 run turtlesim turtlesim_node
Teleop rosrun turtlesim turtle_teleop_key ros2 run turtlesim turtle_teleop_key
Parameters Accessed via rosparam Managed with ros2 param commands
Actions Not natively supported Includes actions (e.g., rotate_absolute)
QoS N/A Configurable via DDS QoS policies
Domain ID N/A Uses domain IDs for network isolation

Key Similarities

Key Differences

  1. Architecture:
  2. Advanced Features:
  3. CLI Tools:

Example Workflows

ROS 1

bash*# Start simulator* roscore & rosrun turtlesim turtlesim_node rosrun turtlesim turtle_teleop_key

ROS 2

`bash*# Start simulator* ros2 run turtlesim turtlesim_node ros2 run turtlesim turtle_teleop_key

# Rotate turtle using an action ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 1.57}" --feedback`

Why Turtlesim Exists in Both