Bird
Raised Fist0
ROSframework~3 mins

ROS 1 vs ROS 2 overview - When to Use Which

Choose your learning style10 modes available
The Big Idea

Discover why ROS 2 is the game-changer that makes robot programming easier and more powerful!

The Scenario

Imagine building a robot where every sensor and motor needs to talk to each other by manually writing code to send and receive messages between devices.

The Problem

Manually managing communication between many parts is confusing, slow to develop, and easy to break when you add new sensors or change hardware.

The Solution

ROS 1 and ROS 2 provide a ready-made system that handles messaging, device control, and coordination so you can focus on building robot behaviors instead of wiring communication.

Before vs After
✗ Before
sendMessage(sensorData);
receiveMessage(motorCommand);
✓ After
ros::Publisher pub = node.advertise<std_msgs::String>("sensor_topic");
ros::Subscriber sub = node.subscribe("motor_topic", 1000, callback);
What It Enables

It enables easy, reliable communication between robot parts so developers can build complex robots faster and safer.

Real Life Example

A delivery robot using ROS 2 can smoothly combine sensors, cameras, and motors to navigate busy streets without the developer worrying about low-level message passing.

Key Takeaways

Manual communication between robot parts is complex and error-prone.

ROS 1 and ROS 2 provide frameworks to simplify messaging and control.

ROS 2 improves on ROS 1 with better performance, security, and support for modern systems.

Practice

(1/5)
1. Which statement best describes the main difference between ROS 1 and ROS 2?
easy
A. ROS 1 is older and simpler, while ROS 2 supports real-time and better scalability.
B. ROS 1 supports real-time better than ROS 2.
C. ROS 2 is older and less flexible than ROS 1.
D. ROS 1 and ROS 2 have the same features and design.

Solution

  1. Step 1: Understand ROS 1 characteristics

    ROS 1 is the original version, simpler but limited in real-time and scalability.
  2. Step 2: Understand ROS 2 improvements

    ROS 2 was designed to fix these limits, adding real-time support and better scalability.
  3. Final Answer:

    ROS 1 is older and simpler, while ROS 2 supports real-time and better scalability. -> Option A
  4. Quick Check:

    ROS 1 simpler, ROS 2 modern and scalable = A [OK]
Hint: Remember ROS 2 is the newer, more advanced version [OK]
Common Mistakes:
  • Thinking ROS 2 is older than ROS 1
  • Believing ROS 1 has better real-time support
  • Assuming both versions have identical features
2. Which of the following is a correct way to describe ROS 2's communication middleware?
easy
A. ROS 2 does not support middleware communication.
B. ROS 2 uses DDS (Data Distribution Service) for flexible communication.
C. ROS 2 uses TCP only for all communication.
D. ROS 2 uses HTTP protocol for message passing.

Solution

  1. Step 1: Identify ROS 2 communication method

    ROS 2 uses DDS, a middleware standard, for flexible and scalable communication.
  2. Step 2: Check other options

    TCP only or HTTP are not used as the main middleware in ROS 2.
  3. Final Answer:

    ROS 2 uses DDS (Data Distribution Service) for flexible communication. -> Option B
  4. Quick Check:

    ROS 2 middleware = DDS [OK]
Hint: DDS is the key middleware in ROS 2 communication [OK]
Common Mistakes:
  • Confusing TCP with DDS
  • Thinking ROS 2 lacks middleware
  • Assuming HTTP is used for ROS 2 messages
3. Consider this code snippet in ROS 1 and ROS 2:
node = Node('example_node')
node.create_publisher(String, 'topic', 10)

What is a key difference in how this code behaves in ROS 1 vs ROS 2?
medium
A. ROS 2 does not support publishers.
B. ROS 1 uses create_publisher with QoS settings; ROS 2 ignores QoS.
C. Both ROS 1 and ROS 2 use create_publisher identically.
D. ROS 1 does not support create_publisher method; ROS 2 does.

Solution

  1. Step 1: Check ROS 1 publisher creation

    ROS 1 uses rospy.Publisher or roscpp::Publisher, not create_publisher.
  2. Step 2: Check ROS 2 publisher creation

    ROS 2 uses create_publisher with QoS settings for flexible communication.
  3. Final Answer:

    ROS 1 does not support create_publisher method; ROS 2 does. -> Option D
  4. Quick Check:

    ROS 2 uses create_publisher, ROS 1 does not [OK]
Hint: Remember ROS 2 introduced create_publisher method [OK]
Common Mistakes:
  • Assuming ROS 1 has create_publisher method
  • Thinking QoS is ignored in ROS 2
  • Believing ROS 2 lacks publisher support
4. You try to run a ROS 2 node but get an error about missing rclcpp::init. What is the likely cause?
medium
A. The error means your topic name is invalid.
B. ROS 1 nodes require rclcpp::init but ROS 2 does not.
C. You forgot to initialize the ROS 2 client library before creating nodes.
D. You used ROS 1 syntax in a ROS 2 project.

Solution

  1. Step 1: Understand ROS 2 initialization

    ROS 2 requires calling rclcpp::init before creating nodes to set up communication.
  2. Step 2: Check error cause

    Missing rclcpp::init causes runtime errors when nodes try to start.
  3. Final Answer:

    You forgot to initialize the ROS 2 client library before creating nodes. -> Option C
  4. Quick Check:

    Missing rclcpp::init means no ROS 2 initialization [OK]
Hint: Always call rclcpp::init before node creation in ROS 2 [OK]
Common Mistakes:
  • Confusing ROS 1 and ROS 2 initialization steps
  • Assuming topic name causes this error
  • Ignoring the need for client library init
5. You want to build a robot system that requires real-time control and works on multiple platforms including Windows and Linux. Which ROS version should you choose and why?
hard
A. Choose ROS 2 because it supports real-time control and multi-platform compatibility.
B. Choose ROS 1 because it is simpler and supports all platforms equally.
C. Choose ROS 1 because ROS 2 does not support Windows.
D. Choose ROS 2 but only if you use Linux, not Windows.

Solution

  1. Step 1: Identify real-time and platform needs

    The project needs real-time control and multi-platform support including Windows and Linux.
  2. Step 2: Match requirements to ROS versions

    ROS 2 supports real-time features and runs on Windows and Linux, unlike ROS 1 which is limited.
  3. Final Answer:

    Choose ROS 2 because it supports real-time control and multi-platform compatibility. -> Option A
  4. Quick Check:

    Real-time + multi-platform = ROS 2 [OK]
Hint: ROS 2 is designed for real-time and multi-platform use [OK]
Common Mistakes:
  • Assuming ROS 1 supports Windows well
  • Thinking ROS 2 lacks real-time features
  • Believing ROS 2 only works on Linux
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard