GP 2: Action-Based Goal Navigation#
Overview#
Due Date |
April 24, 2026, 11:59 PM EST |
Total Points |
50 points |
Submission |
Canvas (zip the |
Collaboration |
Groups of 2 (or 3). |
Late Policy |
10% deduction per calendar day, up to 3 days. Zero after 3 days. |
Peer Review |
Final grade: 60% assignment grade + 40% peer review score. |
Description
This is a group project (2 or 3 students per group). You will
wrap the two-phase proportional controller from Lecture 11
inside a ROS 2 action server, and drive a simulated rosbot
to three goals sequentially using an action client. The
controller logic (position + orientation, 20 Hz control loop) is
already written for you in
~/enpm605_ws/src/lecture11/robot_control_demo. Your job is
to port it into an action server, wire it to a client, and submit
the result.
Learning Objectives
Define a .action file with goal, feedback, and result
sections. Generate Python bindings via
rosidl_generate_interfaces in a CMake package.
Implement a long-running goal with an
ActionServer: accept/reject logic, cancellation
support, periodic feedback publishing, and a final result
on success or failure.
Use an ActionClient to send goals asynchronously,
handle goal-response, feedback, and result callbacks, and
chain multiple goals sequentially (wait for each result
before sending the next).
Port the two-phase proportional controller (position then orientation) into the action server’s execution callback so that goal progress and tolerance checks drive the feedback/result lifecycle.
Load three goal poses (x, y, final_heading)
from a YAML parameter file at launch time, organized as
named blocks (goal1, goal2, goal3) and
accessed via dot-namespaced parameter names.
Write a Python launch file that starts the action server and the action client together, loads the goals YAML file into the client node, and exposes launch arguments for the controller gains and tolerances.
Suggested Timeline
You have one week (April 16 → April 23). The schedule below is a suggestion; adjust based on your group’s pace.
Period |
Duration |
Tasks |
|---|---|---|
Days 1 to 2 |
2 days |
Read the assignment carefully. Review Lecture 10
( |
Days 3 to 4 |
2 days |
Implement the action server: port the two-phase P-controller
into the |
Days 5 to 6 |
2 days |
Implement the action client: read goals from parameters, send goals sequentially, handle feedback and results. Write the launch file. Test the full pipeline end to end. |
Day 7 |
1 day |
Write |