Bird
Raised Fist0
ROSframework~10 mins

ROS workspace and package structure - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to create a ROS workspace directory named my_ws.

ROS
mkdir -p ~/[1]/src
Drag options to blanks, or click blank then click option'
Aros_ws
Bmy_ws
Cworkspace
Dcatkin_ws
Attempts:
3 left
💡 Hint
Common Mistakes
Using a folder name without the _ws suffix
Creating the src folder outside the workspace
2fill in blank
medium

Complete the command to initialize a catkin workspace inside the src folder.

ROS
cd ~/my_ws/src && [1]
Drag options to blanks, or click blank then click option'
Acatkin_make
Broslaunch
Crosrun
Dcatkin_init_workspace
Attempts:
3 left
💡 Hint
Common Mistakes
Using catkin_make instead of catkin_init_workspace here
Using rosrun or roslaunch which are for running nodes
3fill in blank
hard

Fix the error in the package.xml file by completing the missing tag for the package name.

ROS
<package format="2">
  <[1]>my_package</[1]>
  <version>0.0.1</version>
  <description>Example package</description>
</package>
Drag options to blanks, or click blank then click option'
Apackage
Btitle
Cname
Dproject
Attempts:
3 left
💡 Hint
Common Mistakes
Using package or project tags which are invalid
Omitting the name tag entirely
4fill in blank
hard

Fill both blanks to complete the CMakeLists.txt command that finds the catkin package and declares dependencies.

ROS
find_package([1] REQUIRED)
catkin_package(
  CATKIN_DEPENDS [2]
)
Drag options to blanks, or click blank then click option'
Acatkin
Broscpp
Cstd_msgs
Dcmake
Attempts:
3 left
💡 Hint
Common Mistakes
Using cmake instead of catkin in find_package
Listing build system in CATKIN_DEPENDS instead of message packages
5fill in blank
hard

Fill all three blanks to complete the command that builds the workspace, sources the setup file, and runs a node.

ROS
cd ~/my_ws && [1]
source devel/setup.bash
rosrun [2] [3]
Drag options to blanks, or click blank then click option'
Acatkin_make
Bmy_package
Ctalker
Droslaunch
Attempts:
3 left
💡 Hint
Common Mistakes
Using roslaunch instead of catkin_make to build
Mixing up package and node names

Practice

(1/5)
1. What is the main purpose of a ROS workspace?
easy
A. To organize multiple ROS packages and build them together
B. To store robot hardware components physically
C. To run ROS nodes directly without packages
D. To replace the operating system for robots

Solution

  1. Step 1: Understand what a ROS workspace is

    A ROS workspace is a directory where you keep your ROS packages organized and ready to build.
  2. Step 2: Identify the workspace role

    The workspace allows you to build all packages together and manage dependencies easily.
  3. Final Answer:

    To organize multiple ROS packages and build them together -> Option A
  4. Quick Check:

    Workspace = Organize and build packages [OK]
Hint: Workspace groups packages for building and management [OK]
Common Mistakes:
  • Confusing workspace with physical robot parts
  • Thinking workspace runs nodes directly
  • Assuming workspace replaces OS
2. Which file must every ROS package contain to define its metadata?
easy
A. package.xml
B. CMakeLists.txt
C. README.md
D. setup.py

Solution

  1. Step 1: Identify metadata files in ROS packages

    Every ROS package must have a package.xml file that describes the package name, version, dependencies, and other metadata.
  2. Step 2: Differentiate from build files

    CMakeLists.txt is for build instructions, not metadata. README.md is documentation, and setup.py is for Python packages but not mandatory in ROS.
  3. Final Answer:

    package.xml -> Option A
  4. Quick Check:

    Metadata file = package.xml [OK]
Hint: Metadata always in package.xml file [OK]
Common Mistakes:
  • Confusing CMakeLists.txt with metadata
  • Thinking README.md defines package info
  • Assuming setup.py is mandatory for all packages
3. Given a ROS workspace with packages pkg1 and pkg2, what happens after running colcon build and then source install/setup.bash?
medium
A. The packages are deleted from the workspace
B. Only pkg1 is built and pkg2 is ignored
C. The workspace is built and environment is set to use the packages
D. The ROS master node starts automatically

Solution

  1. Step 1: Understand colcon build role

    This command builds all packages in the workspace, compiling code and preparing install files.
  2. Step 2: Understand source install/setup.bash role

    This command sets environment variables so ROS can find and use the newly built packages.
  3. Final Answer:

    The workspace is built and environment is set to use the packages -> Option C
  4. Quick Check:

    Build + source = ready to use packages [OK]
Hint: Build then source to use packages in ROS [OK]
Common Mistakes:
  • Thinking only one package builds
  • Assuming packages get deleted after build
  • Believing ROS master starts automatically
4. You created a new package inside your ROS workspace but forgot to run colcon build. What problem will you face?
medium
A. The package will run but with errors
B. The package will build automatically when you run any node
C. The package will be deleted from the workspace
D. ROS will not recognize the new package when you try to use it

Solution

  1. Step 1: Understand build necessity

    ROS requires running colcon build to compile and register new packages in the workspace environment.
  2. Step 2: Consequence of skipping build

    If you skip building, ROS environment does not know about the new package, so it cannot find or use it.
  3. Final Answer:

    ROS will not recognize the new package when you try to use it -> Option D
  4. Quick Check:

    Build missing = package not recognized [OK]
Hint: Always build after adding new packages [OK]
Common Mistakes:
  • Assuming packages build automatically
  • Thinking package deletion happens without build
  • Believing package runs with errors without build
5. You want to add a new ROS package that depends on an existing package std_msgs. Which steps correctly update your workspace to include this dependency?
hard
A. Run rosdep install std_msgs without modifying any files
B. Add std_msgs to package.xml dependencies, update CMakeLists.txt, then run colcon build
C. Delete package.xml and create a new one with std_msgs listed
D. Only add std_msgs to README.md and run colcon build

Solution

  1. Step 1: Add dependency in package.xml

    You must declare std_msgs as a dependency in package.xml so ROS knows your package needs it.
  2. Step 2: Update CMakeLists.txt for build

    Modify CMakeLists.txt to find and link std_msgs during build.
  3. Step 3: Build workspace

    Run colcon build to compile your package with the new dependency.
  4. Final Answer:

    Add std_msgs to package.xml dependencies, update CMakeLists.txt, then run colcon build -> Option B
  5. Quick Check:

    Declare dependency + update build + build workspace [OK]
Hint: Declare dependencies in package.xml and CMakeLists.txt before build [OK]
Common Mistakes:
  • Only updating README.md without build changes
  • Deleting package.xml unnecessarily
  • Relying on rosdep without declaring dependencies
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