==================================================== Expected Output ==================================================== .. |rarr| unicode:: U+2192 Nominal Run (Full Mission) ========================== The following shows an example of the expected log output when the full system is running correctly. The robot visits all four zones, detects survivors in zones A and C, broadcasts TF frames, reports findings, and completes the mission. Timestamps are abbreviated. Exact numeric values will vary. .. only:: html .. admonition:: Walkthrough video: nominal run :class: dropdown tip The video below shows a complete mission end-to-end: Gazebo, RViz, the launch terminal, and a filtered ``ros2 topic echo /rosout`` (only ``search_and_rescue``-prefixed log lines). Click the play button to start it -- the video does not autoplay. .. raw:: html .. code-block:: text [INFO] [detect_survivor_server]: DetectSurvivor service ready. [INFO] [report_survivor_server]: ReportSurvivor service ready. [INFO] [search_and_rescue]: Loaded 4 search zones from parameters. [INFO] [search_and_rescue]: Base station at (0.00, 0.00, yaw=0.00). [INFO] [basic_navigator]: Seeding AMCL with initial pose (0.00, 0.00, yaw=0.00)... [INFO] [basic_navigator]: Waiting for Nav2 (AMCL + BT navigator) to become active... [INFO] [basic_navigator]: Setting initial pose [INFO] [basic_navigator]: Waiting for amcl_pose to be received [INFO] [basic_navigator]: Nav2 is ready for use! [INFO] [search_and_rescue]: Nav2 is active. [INFO] [search_and_rescue]: --- Zone 1/4: zone_a (-3.00, 3.00) --- [INFO] [search_and_rescue]: Navigating to zone_a... [INFO] [search_and_rescue]: Reached zone_a. [INFO] [search_and_rescue]: Calling detect_survivor for zone_a... [INFO] [detect_survivor_server]: Detection request for zone_a: FOUND at (-2.50, 3.20) [INFO] [search_and_rescue]: Survivor detected at zone_a! [INFO] [search_and_rescue]: Broadcasting TF frame: survivor_1 at (-2.50, 3.20) in map frame. [INFO] [search_and_rescue]: Reporting survivor_1 to base... [INFO] [report_survivor_server]: Report received: survivor_1 at (-2.50, 3.20). Acknowledged. [INFO] [search_and_rescue]: Base acknowledged survivor_1. [INFO] [search_and_rescue]: --- Zone 2/4: zone_b (3.50, 3.00) --- [INFO] [search_and_rescue]: Navigating to zone_b... [INFO] [search_and_rescue]: Reached zone_b. [INFO] [search_and_rescue]: Calling detect_survivor for zone_b... [INFO] [detect_survivor_server]: Detection request for zone_b: NOT FOUND [INFO] [search_and_rescue]: No survivor found at zone_b. [INFO] [search_and_rescue]: --- Zone 3/4: zone_c (4.00, -3.00) --- [INFO] [search_and_rescue]: Navigating to zone_c... [INFO] [search_and_rescue]: Reached zone_c. [INFO] [search_and_rescue]: Calling detect_survivor for zone_c... [INFO] [detect_survivor_server]: Detection request for zone_c: FOUND at (4.10, -2.50) [INFO] [search_and_rescue]: Survivor detected at zone_c! [INFO] [search_and_rescue]: Broadcasting TF frame: survivor_2 at (4.10, -2.50) in map frame. [INFO] [search_and_rescue]: Reporting survivor_2 to base... [INFO] [report_survivor_server]: Report received: survivor_2 at (4.10, -2.50). Acknowledged. [INFO] [search_and_rescue]: Base acknowledged survivor_2. [INFO] [search_and_rescue]: --- Zone 4/4: zone_d (-3.50, -3.00) --- [INFO] [search_and_rescue]: Navigating to zone_d... [INFO] [search_and_rescue]: Reached zone_d. [INFO] [search_and_rescue]: Calling detect_survivor for zone_d... [INFO] [detect_survivor_server]: Detection request for zone_d: NOT FOUND [INFO] [search_and_rescue]: No survivor found at zone_d. [INFO] [search_and_rescue]: All zones visited. Returning to base. [INFO] [search_and_rescue]: Navigating to base station... [INFO] [search_and_rescue]: Reached base station. [INFO] [search_and_rescue]: Mission complete. Verification Commands ===================== Use these commands to test individual components. .. code-block:: console # 1. Launch the Gazebo simulation (terminal 1) ros2 launch rosbot_gazebo final_project_world.launch.py # 2. Launch the mission (terminal 2). This single launch file # brings up Nav2 (with your saved map under # group_final/maps/final_project_map.yaml), the two service # servers, and the BT node. ros2 launch group_final search_and_rescue.launch.py # 3. Check TF frames for discovered survivors ros2 run tf2_ros tf2_echo map survivor_1 ros2 run tf2_ros tf2_echo map survivor_2 # 4. List all static transforms ros2 topic echo /tf_static --once # 5. List available services ros2 service list | grep -E "detect|report" # 6. Test detection service manually ros2 service call /detect_survivor \ group_final_interfaces/srv/DetectSurvivor \ "{zone_id: 'zone_a'}" # 7. Show launch arguments ros2 launch group_final search_and_rescue.launch.py --show-args