Submission#

Pre-Submission Checklist#

Work through every item below before packaging your ZIP. Items that fail at submission time typically also fail at grading time.

Functionality

  • ☐ Both packages are registered in final_project_meta/package.xml and the full stack builds: colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-up-to final_project_meta

  • ☐ Both service interfaces are visible: ros2 interface show group<N>_final_interfaces/srv/DetectSurvivor ros2 interface show group<N>_final_interfaces/srv/ReportSurvivor

  • ☐ The full system launches: ros2 launch group<N>_final search_and_rescue.launch.py

  • ☐ The robot visits all search zones sequentially.

  • ☐ Detection service is called at each zone.

  • ☐ Survivors are detected and TF frames are broadcast (verify with ros2 run tf2_ros tf2_echo map survivor_1).

  • ☐ Report service is called for each found survivor.

  • ☐ After every zone is visited, the robot drives back to the base station.

  • ☐ Launch arguments work: --show-args and override.

  • ☐ Parameters load from mission_params.yaml.

  • maps/final_project_map.pgm and maps/final_project_map.yaml (built with slam_toolbox) are present inside group<N>_final/ and Nav2 launches cleanly against them.

  • setup.py installs maps/, config/, and launch/ via data_files – verify with ls install/group<N>_final/share/group<N>_final/ after a colcon build and confirm all three directories appear. Without this, get_package_share_directory() returns a path that does not contain your map / params / launch files at runtime.

Documentation

  • README.md lists each group member and their contributions.

  • README.md includes a brief BT design description (memory choices).

Code Quality

  • ☐ Type hints on all methods.

  • ☐ Google-style docstrings on all classes and methods.

  • ☐ Comments explain non-obvious logic.

  • ☐ No linting errors (Ruff).

Packaging

  • ☐ Removed __pycache__/, *.pyc, .ruff_cache/, .vscode/, etc

  • ☐ ZIP file is named group<N>_final_project.zip.

  • ☐ ZIP contains the final_project/ folder with both group<N>_final_interfaces/ and group<N>_final/ inside it.

How to Submit#

  1. Zip the ~/enpm605_ws/src/final_project/ folder and submit it on Canvas, renamed to group<N>_final_project.zip (e.g., group3_final_project.zip).

  2. The ZIP must contain the final_project/ folder, with both package folders inside it: final_project/group<N>_final_interfaces/ and final_project/group<N>_final/.

  3. The ZIP must not contain build/, install/, log/, __pycache__/, .pyc, .ruff_cache/, and any other artifacts.

  4. Only one submission per group.