# What is the hardest part of learning ROS 2 as a beginner

**URL:** <https://discourse.openrobotics.org/t/what-is-the-hardest-part-of-learning-ros-2-as-a-beginner/57917>\
**Category:** ROS General\
**Created:** [September 7, 2026, 2:31am UTC](https://discourse.openrobotics.org/t/what-is-the-hardest-part-of-learning-ros-2-as-a-beginner/57917 "2026-09-07T02:31:49Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Prasad\_Prabhu](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/prasad_prabhu/32/35323_2.png) [@Prasad\_Prabhu](https://discourse.openrobotics.org/u/Prasad_Prabhu)\
**Post date:** [September 7, 2026, 2:31am UTC](https://discourse.openrobotics.org/t/what-is-the-hardest-part-of-learning-ros-2-as-a-beginner/57917/1 "2026-09-07T02:31:49Z")

</div>

I teach a robotics lab and my students lose about a week each semester to  
workspace and sourcing problems before they write any robot code. I recorded  
the whole thing end to end on Jazzy, including the errors rather than a clean  
take: workspace, package, first node, entry points, --symlink-install, and  
why sourcing is per-terminal.

[![](https://us1.discourse-cdn.com/flex022/uploads/ros/original/3X/7/4/7440d7d64419ea65e2220645fa630a8c23ade8fa.jpeg "ROS 2 Workspace and Your First Node — and why "package not found" happens (Jazzy)") ](https://www.youtube.com/watch?v=Gl-4h24-dBg)

It’s aimed squarely at first-week beginners. Happy to take corrections —  
I’d rather fix a video than leave something wrong in front of students.

---

<div class="post-metadata">

**Author:** ![peci1](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/peci1/32/10145_2.png) [@peci1](https://discourse.openrobotics.org/u/peci1)\
**Post date:** [September 8, 2026, 6:53pm UTC](https://discourse.openrobotics.org/t/what-is-the-hardest-part-of-learning-ros-2-as-a-beginner/57917/2 "2026-09-08T18:53:48Z")

</div>

This is definitely a useful video!

In our robotics course, we have however decided to hide most of these things from the students. Our startup script autoruns colcon build, sources the correct file, changes the shell prompt and that’s how students know that “ROS works in this window” (it also runs everything in the correct Apptainer image).

Our students never try to create a ROS package, they never create a new file in the packages we provide, and they never write any file from scratch (so they can’t forget shebangs). All they do is fill in TODOs we’ve left them in the code and then run the code and debug its behavior.

I was long opposing this approach, but in the end I agree.

The things you describe in your video are beginner mistakes that are relatively easy to find answers for once students need them (although it takes some time). We try to focus on the more complex parts - writing and testing algorithms in real and in sim, finding out if a part of the system works as expected, hitting real-world limits and noise, or high-level behavior design.

Of course this is not a criticism of your course. It’s definitely great you care about your students in this way and you tech them ROS! I just wanted to add our point of view which (I hope) might be useful to others.

---

<div class="post-metadata">

**Author:** ![aaish](https://avatars.discourse-cdn.com/v4/letter/a/67e7ee/32.png) [@aaish](https://discourse.openrobotics.org/u/aaish)\
**Post date:** [September 23, 2026, 3:56pm UTC](https://discourse.openrobotics.org/t/what-is-the-hardest-part-of-learning-ros-2-as-a-beginner/57917/3 "2026-09-23T15:56:47Z")

</div>

Hello ,  
I recently switched to ROS2 Lyrical and for learning i cant find tutorials. I am learning through AI but its limited…  
Any suggestions?!

---

<div class="post-metadata">

**Author:** ![madsdyson](https://sea2.discourse-cdn.com/flex022/user_avatar/discourse.openrobotics.org/madsdyson/32/35787_2.png) [@madsdyson](https://discourse.openrobotics.org/u/madsdyson)\
**Post date:** [October 9, 2026, 6:15pm UTC](https://discourse.openrobotics.org/t/what-is-the-hardest-part-of-learning-ros-2-as-a-beginner/57917/4 "2026-10-09T18:15:11Z")

</div>

@aaish most Jazzy material still works on Lyrical. Nodes, topics, services, actions, params, launch, colcon, and workspaces haven’t changed in any way a beginner would notice. The official docs have a distro selector; set it to Lyrical and follow the beginner CLI + client library tutorials in order. Where something breaks, it’s usually at the package/API edges, not the concepts. For example, ros2\_control just removed APIs that had been deprecated since Jazzy, so older controller examples can fail on Lyrical.

on learning with AI, two things made it much less “limited” for me:

- give it the exact error plus your package.xml / CMakeLists / setup.py and say which distro you’re on. Most bad answers come from it guessing Humble.
- check against what’s actually installed, not what it remembers. `ros2 interface show`, `ros2 pkg prefix <pkg>`, and reading the installed headers/python will tell you the real API on your machine.

also +1 to both approaches above. Hiding the sourcing/build mess lets students get to robot behavior fast, but at some point you have to break it once on purpose. Delete your install/ folder, forget to source, and see what errors you get. After that, “package not found” stops being scary.
