Bird
Raised Fist0
ROSframework~20 mins

Setting navigation goals in ROS - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Navigation Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What happens when a navigation goal is sent with an unreachable position?
Consider a ROS node sending a navigation goal to a robot using the move_base action. The goal position is outside the known map boundaries. What will the robot's navigation stack most likely do?
ROS
action_client.send_goal(goal_pose);
AThe robot immediately reports failure and cancels the goal.
BThe robot teleports to the goal position without path planning.
CThe robot ignores the goal and continues its current task without any feedback.
DThe robot attempts to navigate but eventually times out and reports failure.
Attempts:
2 left
💡 Hint
Think about how the navigation stack handles unreachable goals and timeouts.
❓ state_output
intermediate
1:30remaining
What is the state of the action client after sending a valid navigation goal?
After sending a valid navigation goal using the ROS action client, what is the expected state of the client before the robot reaches the goal?
ROS
action_client.send_goal(goal_pose);
current_state = action_client.get_state();
APREEMPTED
BACTIVE
CSUCCEEDED
DLOST
Attempts:
2 left
💡 Hint
Consider the action client states during goal execution.
📝 Syntax
advanced
2:30remaining
Which code snippet correctly sets a navigation goal using ROS Python API?
Select the code snippet that correctly creates and sends a navigation goal to move_base using ROS Python.
A
goal = MoveBaseGoal()
goal.target_pose.header.frame_id = 'map'
goal.target_pose.pose.position.x = 1.0
client.send_goal(goal)
B
goal = MoveBaseGoal()
goal.pose.position.x = 1.0
client.send_goal(goal)
C
goal = MoveBaseGoal()
goal.target_pose.position.x = 1.0
client.send_goal(goal)
D
goal = MoveBaseGoal()
goal.target_pose.header.frame = 'map'
goal.target_pose.pose.position.x = 1.0
client.send_goal(goal)
Attempts:
2 left
💡 Hint
Check the correct attribute names for setting the frame and pose.
🔧 Debug
advanced
2:30remaining
Why does the robot never reach the navigation goal?
A ROS navigation node sends a goal to move_base, but the robot never reaches it and the goal status stays ACTIVE indefinitely. What is the most likely cause?
ROS
goal.target_pose.header.frame_id = 'map'
goal.target_pose.pose.position.x = 5.0
goal.target_pose.pose.position.y = 5.0
client.send_goal(goal)
AThe robot's localization is lost, so it cannot plan a path.
BThe move_base node is not running, so the goal is ignored.
CThe goal frame_id is incorrect and does not match the robot's map frame.
DThe goal position is inside an obstacle, so the robot cannot move.
Attempts:
2 left
💡 Hint
Think about what happens if the robot does not know where it is on the map.
🧠 Conceptual
expert
3:00remaining
What is the effect of setting the 'planner_frequency' parameter too low in ROS navigation?
In the ROS navigation stack, the 'planner_frequency' parameter controls how often the global planner runs. What happens if this frequency is set too low while the robot is moving towards a goal?
AThe robot will plan paths more frequently, causing high CPU usage but better responsiveness.
BThe robot will ignore the global planner and rely only on the local planner.
CThe robot may follow outdated paths and react slowly to changes in the environment.
DThe robot will stop moving until a new plan is generated.
Attempts:
2 left
💡 Hint
Consider how often the robot updates its path to avoid obstacles.

Practice

(1/5)
1. What is the main purpose of setting a navigation goal in ROS?
easy
A. To tell the robot where to move using coordinates and orientation
B. To change the robot's color
C. To update the robot's software version
D. To stop the robot immediately

Solution

  1. Step 1: Understand navigation goals

    Navigation goals specify a target position and orientation for the robot to reach.
  2. Step 2: Identify the purpose

    Setting a navigation goal directs the robot where to move in its environment.
  3. Final Answer:

    To tell the robot where to move using coordinates and orientation -> Option A
  4. Quick Check:

    Navigation goal = target position [OK]
Hint: Navigation goals set robot's target position and direction [OK]
Common Mistakes:
  • Confusing navigation goals with software updates
  • Thinking navigation goals change robot appearance
  • Assuming navigation goals stop the robot
2. Which ROS frame is commonly used to set navigation goals relative to the environment?
easy
A. "base_link" frame
B. "odom" frame
C. "map" frame
D. "camera" frame

Solution

  1. Step 1: Identify common frames in ROS navigation

    Frames like "base_link", "odom", and "map" represent different coordinate systems.
  2. Step 2: Choose the frame for environment-relative goals

    The "map" frame is fixed to the environment and used for global navigation goals.
  3. Final Answer:

    "map" frame -> Option C
  4. Quick Check:

    Environment-relative goals use "map" frame [OK]
Hint: "map" frame is fixed to environment, perfect for goals [OK]
Common Mistakes:
  • Using "base_link" which is robot-centered
  • Choosing "odom" which drifts over time
  • Selecting "camera" which is unrelated to navigation
3. Given this ROS Python snippet to send a navigation goal:
goal.target_pose.header.frame_id = "map"
goal.target_pose.pose.position.x = 2.0
goal.target_pose.pose.position.y = 3.0
goal.target_pose.pose.orientation.w = 1.0
client.send_goal(goal)
client.wait_for_result()
What will the robot do?
medium
A. Throw an error due to missing orientation x, y, z
B. Move to position (3.0, 2.0) on the map facing backward
C. Stay still because orientation is incomplete
D. Move to position (2.0, 3.0) on the map facing forward

Solution

  1. Step 1: Analyze position and orientation values

    Position is set to x=2.0, y=3.0; orientation.w=1.0 means no rotation (facing forward).
  2. Step 2: Understand client commands

    Sending goal and waiting for result commands the robot to move to the specified pose.
  3. Final Answer:

    Move to position (2.0, 3.0) on the map facing forward -> Option D
  4. Quick Check:

    Goal pose = (2.0,3.0), orientation forward [OK]
Hint: Orientation w=1 means facing forward, position sets location [OK]
Common Mistakes:
  • Mixing up x and y coordinates
  • Assuming missing orientation x,y,z causes error
  • Thinking orientation.w=1 means backward
4. What is wrong with this ROS Python code snippet for setting a navigation goal?
goal.target_pose.header.frame_id = "map"
goal.target_pose.pose.position.x = 1.0
goal.target_pose.pose.position.y = 2.0
client.send_goal(goal)
client.wait_for_result()
medium
A. frame_id should be "odom" instead of "map"
B. Missing orientation in goal.pose causes navigation failure
C. Position values must be integers, not floats
D. client.wait_for_result() must come before send_goal()

Solution

  1. Step 1: Check completeness of goal pose

    Orientation is not set, which is required for a valid navigation goal.
  2. Step 2: Verify other parts

    frame_id "map" is correct; position floats are allowed; wait_for_result() must follow send_goal().
  3. Final Answer:

    Missing orientation in goal.pose causes navigation failure -> Option B
  4. Quick Check:

    Orientation required for goal [OK]
Hint: Always set orientation when sending navigation goals [OK]
Common Mistakes:
  • Ignoring missing orientation
  • Changing frame_id unnecessarily
  • Misordering wait_for_result and send_goal
5. You want the robot to navigate to two different points sequentially using ROS move_base. Which approach correctly sets and sends these goals?
hard
A. Send first goal, wait for result, then send second goal and wait again
B. Send both goals at the same time without waiting
C. Send second goal first, then send first goal after completion
D. Only send the last goal; the robot will visit both automatically

Solution

  1. Step 1: Understand sequential goal sending

    To visit points in order, send one goal and wait for it to finish before sending the next.
  2. Step 2: Evaluate options

    Sending both simultaneously confuses the robot; sending second first breaks order; last goal alone ignores first.
  3. Final Answer:

    Send first goal, wait for result, then send second goal and wait again -> Option A
  4. Quick Check:

    Sequential goals need wait between sends [OK]
Hint: Wait for each goal to finish before sending next [OK]
Common Mistakes:
  • Sending multiple goals simultaneously
  • Assuming robot queues goals automatically
  • Sending goals in wrong order
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