├── .circleci ├── config.yml └── defaults.yaml ├── .devcontainer ├── caddy │ ├── Caddyfile │ └── srv │ │ ├── assets │ │ ├── foxglove │ │ │ ├── manifest.json │ │ │ └── nav2_layout.json │ │ ├── glances │ │ │ └── manifest.json │ │ ├── gzweb │ │ │ └── manifest.json │ │ └── nav2 │ │ │ └── manifest.json │ │ └── nav2 │ │ ├── github-markdown.css │ │ ├── index.html │ │ └── index.md ├── devcontainer.json ├── on-create-command.sh ├── post-create-command.sh └── update-content-command.sh ├── .dockerignore ├── .github ├── ISSUE_TEMPLATE.md ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── configuration-or-tuning-help.md │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE.md ├── dependabot.yml ├── mergify.yml └── workflows │ ├── build_main_against_distros.yml │ ├── lint.yml │ └── update_ci_image.yaml ├── .gitignore ├── .pre-commit-config.yaml ├── .vscode └── tasks.json ├── CONTRIBUTING.md ├── Dockerfile ├── Doxyfile ├── LICENSE ├── README.md ├── codecov.yml ├── doc ├── README.md ├── architecture │ └── Navigation-System.eap ├── design │ ├── CostmapFilters_design.pdf │ ├── NavigationSystemTasks.png │ └── Navigation_2_Overview.pdf ├── development │ └── codespaces.md ├── nav2_logo.png ├── process │ └── PreReleaseChecklist.md ├── requirements │ ├── _template_requirement.md │ ├── images │ │ ├── Command-Pipeline-Support.png │ │ ├── Command-Pipeline.png │ │ ├── Command-Pipeline.vsdx │ │ ├── Context.png │ │ ├── Mapping-Use-Cases.png │ │ ├── Mission-Execution-Use-Cases.png │ │ ├── Mission-Planning-Use-Cases.png │ │ ├── Navigation-System.png │ │ └── With-Support-Modules.png │ └── requirements.md ├── sponsors_feb_2024.png ├── sponsors_jan_2024.png ├── sponsors_jan_2025.png ├── sponsors_may_2023.png └── use_cases │ ├── README.md │ ├── _template_use_case.md │ ├── collision_avoidance_use_case.md │ ├── indoor_localization_use_case.md │ ├── indoor_navigation_use_case.md │ ├── keep_out_zones_use_case.md │ ├── multi-story-building_use_case.md │ ├── outdoor_localization_use_case.md │ └── outdoor_navigation_use_case.md ├── nav2_amcl ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_amcl │ │ ├── amcl_node.hpp │ │ ├── angleutils.hpp │ │ ├── map │ │ └── map.hpp │ │ ├── motion_model │ │ ├── differential_motion_model.hpp │ │ ├── motion_model.hpp │ │ └── omni_motion_model.hpp │ │ ├── pf │ │ ├── eig3.hpp │ │ ├── pf.hpp │ │ ├── pf_kdtree.hpp │ │ ├── pf_pdf.hpp │ │ └── pf_vector.hpp │ │ ├── portable_utils.hpp │ │ └── sensors │ │ └── laser │ │ └── laser.hpp ├── package.xml ├── plugins.xml └── src │ ├── amcl_node.cpp │ ├── main.cpp │ ├── map │ ├── map.c │ ├── map_cspace.cpp │ ├── map_draw.c │ └── map_range.c │ ├── motion_model │ ├── differential_motion_model.cpp │ └── omni_motion_model.cpp │ ├── pf │ ├── eig3.c │ ├── pf.c │ ├── pf_draw.c │ ├── pf_kdtree.c │ ├── pf_pdf.c │ └── pf_vector.c │ └── sensors │ └── laser │ ├── beam_model.cpp │ ├── laser.cpp │ ├── likelihood_field_model.cpp │ └── likelihood_field_model_prob.cpp ├── nav2_behavior_tree ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── doc │ ├── hierarchy.odg │ └── hierarchy.svg ├── groot_instructions.md ├── include │ └── nav2_behavior_tree │ │ ├── behavior_tree_engine.hpp │ │ ├── bt_action_node.hpp │ │ ├── bt_action_server.hpp │ │ ├── bt_action_server_impl.hpp │ │ ├── bt_cancel_action_node.hpp │ │ ├── bt_service_node.hpp │ │ ├── bt_utils.hpp │ │ ├── json_utils.hpp │ │ ├── plugins │ │ ├── action │ │ │ ├── append_goal_pose_to_goals_action.hpp │ │ │ ├── assisted_teleop_action.hpp │ │ │ ├── assisted_teleop_cancel_node.hpp │ │ │ ├── back_up_action.hpp │ │ │ ├── back_up_cancel_node.hpp │ │ │ ├── clear_costmap_service.hpp │ │ │ ├── compute_and_track_route_action.hpp │ │ │ ├── compute_and_track_route_cancel_node.hpp │ │ │ ├── compute_path_through_poses_action.hpp │ │ │ ├── compute_path_to_pose_action.hpp │ │ │ ├── compute_route_action.hpp │ │ │ ├── concatenate_paths_action.hpp │ │ │ ├── controller_cancel_node.hpp │ │ │ ├── controller_selector_node.hpp │ │ │ ├── drive_on_heading_action.hpp │ │ │ ├── drive_on_heading_cancel_node.hpp │ │ │ ├── extract_route_nodes_as_goals_action.hpp │ │ │ ├── follow_path_action.hpp │ │ │ ├── get_current_pose_action.hpp │ │ │ ├── get_next_few_goals_action.hpp │ │ │ ├── get_pose_from_path_action.hpp │ │ │ ├── goal_checker_selector_node.hpp │ │ │ ├── navigate_through_poses_action.hpp │ │ │ ├── navigate_to_pose_action.hpp │ │ │ ├── planner_selector_node.hpp │ │ │ ├── progress_checker_selector_node.hpp │ │ │ ├── reinitialize_global_localization_service.hpp │ │ │ ├── remove_in_collision_goals_action.hpp │ │ │ ├── remove_passed_goals_action.hpp │ │ │ ├── smooth_path_action.hpp │ │ │ ├── smoother_selector_node.hpp │ │ │ ├── spin_action.hpp │ │ │ ├── spin_cancel_node.hpp │ │ │ ├── truncate_path_action.hpp │ │ │ ├── truncate_path_local_action.hpp │ │ │ ├── wait_action.hpp │ │ │ └── wait_cancel_node.hpp │ │ ├── condition │ │ │ ├── are_error_codes_present_condition.hpp │ │ │ ├── are_poses_near_condition.hpp │ │ │ ├── distance_traveled_condition.hpp │ │ │ ├── globally_updated_goal_condition.hpp │ │ │ ├── goal_reached_condition.hpp │ │ │ ├── goal_updated_condition.hpp │ │ │ ├── initial_pose_received_condition.hpp │ │ │ ├── is_battery_charging_condition.hpp │ │ │ ├── is_battery_low_condition.hpp │ │ │ ├── is_path_valid_condition.hpp │ │ │ ├── is_stopped_condition.hpp │ │ │ ├── is_stuck_condition.hpp │ │ │ ├── path_expiring_timer_condition.hpp │ │ │ ├── time_expired_condition.hpp │ │ │ ├── transform_available_condition.hpp │ │ │ ├── would_a_controller_recovery_help_condition.hpp │ │ │ ├── would_a_planner_recovery_help_condition.hpp │ │ │ ├── would_a_route_recovery_help_condition.hpp │ │ │ └── would_a_smoother_recovery_help_condition.hpp │ │ ├── control │ │ │ ├── pipeline_sequence.hpp │ │ │ ├── recovery_node.hpp │ │ │ └── round_robin_node.hpp │ │ └── decorator │ │ │ ├── distance_controller.hpp │ │ │ ├── goal_updated_controller.hpp │ │ │ ├── goal_updater_node.hpp │ │ │ ├── path_longer_on_approach.hpp │ │ │ ├── rate_controller.hpp │ │ │ ├── single_trigger_node.hpp │ │ │ └── speed_controller.hpp │ │ ├── ros_topic_logger.hpp │ │ └── utils │ │ ├── loop_rate.hpp │ │ └── test_action_server.hpp ├── nav2_tree_nodes.xml ├── package.xml ├── plugins │ ├── action │ │ ├── append_goal_pose_to_goals_action.cpp │ │ ├── assisted_teleop_action.cpp │ │ ├── assisted_teleop_cancel_node.cpp │ │ ├── back_up_action.cpp │ │ ├── back_up_cancel_node.cpp │ │ ├── clear_costmap_service.cpp │ │ ├── compute_and_track_route_action.cpp │ │ ├── compute_and_track_route_cancel_node.cpp │ │ ├── compute_path_through_poses_action.cpp │ │ ├── compute_path_to_pose_action.cpp │ │ ├── compute_route_action.cpp │ │ ├── concatenate_paths_action.cpp │ │ ├── controller_cancel_node.cpp │ │ ├── controller_selector_node.cpp │ │ ├── drive_on_heading_action.cpp │ │ ├── drive_on_heading_cancel_node.cpp │ │ ├── extract_route_nodes_as_goals_action.cpp │ │ ├── follow_path_action.cpp │ │ ├── get_current_pose_action.cpp │ │ ├── get_next_few_goals_action.cpp │ │ ├── get_pose_from_path_action.cpp │ │ ├── goal_checker_selector_node.cpp │ │ ├── navigate_through_poses_action.cpp │ │ ├── navigate_to_pose_action.cpp │ │ ├── planner_selector_node.cpp │ │ ├── progress_checker_selector_node.cpp │ │ ├── reinitialize_global_localization_service.cpp │ │ ├── remove_in_collision_goals_action.cpp │ │ ├── remove_passed_goals_action.cpp │ │ ├── smooth_path_action.cpp │ │ ├── smoother_selector_node.cpp │ │ ├── spin_action.cpp │ │ ├── spin_cancel_node.cpp │ │ ├── truncate_path_action.cpp │ │ ├── truncate_path_local_action.cpp │ │ ├── wait_action.cpp │ │ └── wait_cancel_node.cpp │ ├── condition │ │ ├── are_error_codes_present_condition.cpp │ │ ├── are_poses_near_condition.cpp │ │ ├── distance_traveled_condition.cpp │ │ ├── globally_updated_goal_condition.cpp │ │ ├── goal_reached_condition.cpp │ │ ├── goal_updated_condition.cpp │ │ ├── initial_pose_received_condition.cpp │ │ ├── is_battery_charging_condition.cpp │ │ ├── is_battery_low_condition.cpp │ │ ├── is_path_valid_condition.cpp │ │ ├── is_stopped_condition.cpp │ │ ├── is_stuck_condition.cpp │ │ ├── path_expiring_timer_condition.cpp │ │ ├── time_expired_condition.cpp │ │ ├── transform_available_condition.cpp │ │ ├── would_a_controller_recovery_help_condition.cpp │ │ ├── would_a_planner_recovery_help_condition.cpp │ │ ├── would_a_route_recovery_help_condition.cpp │ │ └── would_a_smoother_recovery_help_condition.cpp │ ├── control │ │ ├── pipeline_sequence.cpp │ │ ├── recovery_node.cpp │ │ └── round_robin_node.cpp │ └── decorator │ │ ├── distance_controller.cpp │ │ ├── goal_updated_controller.cpp │ │ ├── goal_updater_node.cpp │ │ ├── path_longer_on_approach.cpp │ │ ├── rate_controller.cpp │ │ ├── single_trigger_node.cpp │ │ └── speed_controller.cpp ├── plugins_list.hpp.in ├── src │ ├── behavior_tree_engine.cpp │ └── generate_nav2_tree_nodes_xml.cpp └── test │ ├── CMakeLists.txt │ ├── plugins │ ├── action │ │ ├── CMakeLists.txt │ │ ├── test_append_goal_pose_to_goals_action.cpp │ │ ├── test_assisted_teleop_action.cpp │ │ ├── test_assisted_teleop_cancel_node.cpp │ │ ├── test_back_up_action.cpp │ │ ├── test_back_up_cancel_node.cpp │ │ ├── test_bt_action_node.cpp │ │ ├── test_clear_costmap_service.cpp │ │ ├── test_compute_and_track_route_action.cpp │ │ ├── test_compute_and_track_route_cancel_node.cpp │ │ ├── test_compute_path_through_poses_action.cpp │ │ ├── test_compute_path_to_pose_action.cpp │ │ ├── test_compute_route_action.cpp │ │ ├── test_concatenate_paths_action.cpp │ │ ├── test_controller_cancel_node.cpp │ │ ├── test_controller_selector_node.cpp │ │ ├── test_drive_on_heading_action.cpp │ │ ├── test_drive_on_heading_cancel_node.cpp │ │ ├── test_extract_route_nodes_as_goals_action.cpp │ │ ├── test_follow_path_action.cpp │ │ ├── test_get_current_pose_action.cpp │ │ ├── test_get_next_few_goals_action.cpp │ │ ├── test_get_pose_from_path_action.cpp │ │ ├── test_goal_checker_selector_node.cpp │ │ ├── test_navigate_through_poses_action.cpp │ │ ├── test_navigate_to_pose_action.cpp │ │ ├── test_planner_selector_node.cpp │ │ ├── test_progress_checker_selector_node.cpp │ │ ├── test_reinitialize_global_localization_service.cpp │ │ ├── test_remove_in_collision_goals_action.cpp │ │ ├── test_remove_passed_goals_action.cpp │ │ ├── test_smooth_path_action.cpp │ │ ├── test_smoother_selector_node.cpp │ │ ├── test_spin_action.cpp │ │ ├── test_spin_cancel_node.cpp │ │ ├── test_truncate_path_action.cpp │ │ ├── test_truncate_path_local_action.cpp │ │ ├── test_wait_action.cpp │ │ └── test_wait_cancel_node.cpp │ ├── condition │ │ ├── CMakeLists.txt │ │ ├── test_are_error_codes_present.cpp │ │ ├── test_are_poses_near.cpp │ │ ├── test_distance_traveled.cpp │ │ ├── test_globally_updated_goal.cpp │ │ ├── test_goal_reached.cpp │ │ ├── test_goal_updated.cpp │ │ ├── test_initial_pose_received.cpp │ │ ├── test_is_battery_charging.cpp │ │ ├── test_is_battery_low.cpp │ │ ├── test_is_path_valid.cpp │ │ ├── test_is_stopped.cpp │ │ ├── test_is_stuck.cpp │ │ ├── test_path_expiring_timer.cpp │ │ ├── test_time_expired.cpp │ │ ├── test_transform_available.cpp │ │ ├── test_would_a_controller_recovery_help.cpp │ │ ├── test_would_a_planner_recovery_help.cpp │ │ ├── test_would_a_route_recovery_help.cpp │ │ └── test_would_a_smoother_recovery_help.cpp │ ├── control │ │ ├── CMakeLists.txt │ │ ├── test_pipeline_sequence.cpp │ │ ├── test_recovery_node.cpp │ │ └── test_round_robin_node.cpp │ └── decorator │ │ ├── CMakeLists.txt │ │ ├── test_distance_controller.cpp │ │ ├── test_goal_updated_controller.cpp │ │ ├── test_goal_updater_node.cpp │ │ ├── test_path_longer_on_approach.cpp │ │ ├── test_rate_controller.cpp │ │ ├── test_single_trigger_node.cpp │ │ └── test_speed_controller.cpp │ ├── test_bt_utils.cpp │ ├── test_json_utils.cpp │ └── utils │ ├── test_behavior_tree_fixture.hpp │ ├── test_dummy_tree_node.hpp │ ├── test_service.hpp │ └── test_transform_handler.hpp ├── nav2_behaviors ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── behavior_plugin.xml ├── include │ └── nav2_behaviors │ │ ├── behavior_server.hpp │ │ ├── plugins │ │ ├── assisted_teleop.hpp │ │ ├── back_up.hpp │ │ ├── drive_on_heading.hpp │ │ ├── spin.hpp │ │ └── wait.hpp │ │ └── timed_behavior.hpp ├── package.xml ├── plugins │ ├── assisted_teleop.cpp │ ├── back_up.cpp │ ├── drive_on_heading.cpp │ ├── spin.cpp │ └── wait.cpp ├── src │ ├── behavior_server.cpp │ └── main.cpp └── test │ ├── CMakeLists.txt │ └── test_behaviors.cpp ├── nav2_bringup ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── graphs │ ├── depot_graph.geojson │ ├── turtlebot3_graph.geojson │ └── warehouse_graph.geojson ├── launch │ ├── bringup_launch.py │ ├── cloned_multi_tb3_simulation_launch.py │ ├── keepout_zone_launch.py │ ├── localization_launch.py │ ├── navigation_launch.py │ ├── rviz_launch.py │ ├── slam_launch.py │ ├── speed_zone_launch.py │ ├── tb3_loopback_simulation_launch.py │ ├── tb3_simulation_launch.py │ ├── tb4_loopback_simulation_launch.py │ ├── tb4_simulation_launch.py │ └── unique_multi_tb3_simulation_launch.py ├── maps │ ├── depot.pgm │ ├── depot.yaml │ ├── depot_keepout.pgm │ ├── depot_keepout.yaml │ ├── depot_speed.pgm │ ├── depot_speed.yaml │ ├── tb3_sandbox.pgm │ ├── tb3_sandbox.yaml │ ├── warehouse.pgm │ ├── warehouse.yaml │ ├── warehouse_keepout.pgm │ ├── warehouse_keepout.yaml │ ├── warehouse_speed.pgm │ └── warehouse_speed.yaml ├── package.xml ├── params │ └── nav2_params.yaml └── rviz │ └── nav2_default_view.rviz ├── nav2_bt_navigator ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── behavior_trees │ ├── follow_point.xml │ ├── nav_to_pose_with_consistent_replanning_and_if_path_becomes_invalid.xml │ ├── navigate_on_route_graph_w_recovery.xml │ ├── navigate_through_poses_w_replanning_and_recovery.xml │ ├── navigate_to_pose_w_replanning_and_recovery.xml │ ├── navigate_to_pose_w_replanning_goal_patience_and_recovery.xml │ ├── navigate_w_recovery_and_replanning_only_if_path_becomes_invalid.xml │ ├── navigate_w_replanning_distance.xml │ ├── navigate_w_replanning_only_if_goal_is_updated.xml │ ├── navigate_w_replanning_only_if_path_becomes_invalid.xml │ ├── navigate_w_replanning_speed.xml │ ├── navigate_w_replanning_time.xml │ ├── navigate_w_routing_global_planning_and_control_w_recovery.xml │ └── odometry_calibration.xml ├── doc │ ├── follow_point.png │ ├── legend.png │ ├── navigate_w_replanning_distance.png │ ├── navigate_w_replanning_time.png │ ├── parallel_w_goal_patience_and_recovery.png │ ├── parallel_w_recovery.png │ ├── recovery_node.png │ └── recovery_w_goal_updated.png ├── include │ └── nav2_bt_navigator │ │ ├── bt_navigator.hpp │ │ └── navigators │ │ ├── navigate_through_poses.hpp │ │ └── navigate_to_pose.hpp ├── navigator_plugins.xml ├── package.xml └── src │ ├── bt_navigator.cpp │ ├── main.cpp │ └── navigators │ ├── navigate_through_poses.cpp │ └── navigate_to_pose.cpp ├── nav2_collision_monitor ├── CMakeLists.txt ├── README.md ├── doc │ ├── HLD.png │ ├── cm_ros_devday.png │ ├── dexory_velocity_polygon.gif │ └── polygons.png ├── include │ └── nav2_collision_monitor │ │ ├── circle.hpp │ │ ├── collision_detector_node.hpp │ │ ├── collision_monitor_node.hpp │ │ ├── kinematics.hpp │ │ ├── pointcloud.hpp │ │ ├── polygon.hpp │ │ ├── polygon_source.hpp │ │ ├── range.hpp │ │ ├── scan.hpp │ │ ├── source.hpp │ │ ├── types.hpp │ │ └── velocity_polygon.hpp ├── launch │ ├── collision_detector_node.launch.py │ └── collision_monitor_node.launch.py ├── package.xml ├── params │ ├── collision_detector_params.yaml │ └── collision_monitor_params.yaml ├── src │ ├── circle.cpp │ ├── collision_detector_main.cpp │ ├── collision_detector_node.cpp │ ├── collision_monitor_main.cpp │ ├── collision_monitor_node.cpp │ ├── kinematics.cpp │ ├── pointcloud.cpp │ ├── polygon.cpp │ ├── polygon_source.cpp │ ├── range.cpp │ ├── scan.cpp │ ├── source.cpp │ └── velocity_polygon.cpp └── test │ ├── CMakeLists.txt │ ├── collision_detector_node_test.cpp │ ├── collision_monitor_node_test.cpp │ ├── kinematics_test.cpp │ ├── polygons_test.cpp │ ├── sources_test.cpp │ └── velocity_polygons_test.cpp ├── nav2_common ├── CMakeLists.txt ├── cmake │ └── nav2_package.cmake ├── nav2_common-extras.cmake ├── nav2_common │ ├── __init__.py │ └── launch │ │ ├── __init__.py │ │ ├── has_node_params.py │ │ ├── replace_string.py │ │ └── rewritten_yaml.py ├── package.xml └── test │ └── test_rewritten_yaml.py ├── nav2_constrained_smoother ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_constrained_smoother │ │ ├── constrained_smoother.hpp │ │ ├── options.hpp │ │ ├── smoother.hpp │ │ ├── smoother_cost_function.hpp │ │ └── utils.hpp ├── nav2_constrained_smoother.xml ├── package.xml ├── src │ └── constrained_smoother.cpp └── test │ ├── CMakeLists.txt │ ├── test_constrained_smoother.cpp │ └── test_smoother_cost_function.cpp ├── nav2_controller ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_controller │ │ ├── controller_server.hpp │ │ └── plugins │ │ ├── pose_progress_checker.hpp │ │ ├── position_goal_checker.hpp │ │ ├── simple_goal_checker.hpp │ │ ├── simple_progress_checker.hpp │ │ └── stopped_goal_checker.hpp ├── package.xml ├── plugins.xml ├── plugins │ ├── pose_progress_checker.cpp │ ├── position_goal_checker.cpp │ ├── simple_goal_checker.cpp │ ├── simple_progress_checker.cpp │ ├── stopped_goal_checker.cpp │ └── test │ │ ├── CMakeLists.txt │ │ ├── goal_checker.cpp │ │ └── progress_checker.cpp ├── src │ ├── controller_server.cpp │ └── main.cpp └── test │ ├── CMakeLists.txt │ └── test_dynamic_parameters.cpp ├── nav2_core ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_core │ │ ├── behavior.hpp │ │ ├── behavior_tree_navigator.hpp │ │ ├── controller.hpp │ │ ├── controller_exceptions.hpp │ │ ├── global_planner.hpp │ │ ├── goal_checker.hpp │ │ ├── planner_exceptions.hpp │ │ ├── progress_checker.hpp │ │ ├── route_exceptions.hpp │ │ ├── smoother.hpp │ │ ├── smoother_exceptions.hpp │ │ └── waypoint_task_executor.hpp └── package.xml ├── nav2_costmap_2d ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── costmap_plugins.xml ├── include │ └── nav2_costmap_2d │ │ ├── clear_costmap_service.hpp │ │ ├── cost_values.hpp │ │ ├── costmap_2d.hpp │ │ ├── costmap_2d_publisher.hpp │ │ ├── costmap_2d_ros.hpp │ │ ├── costmap_filters │ │ ├── binary_filter.hpp │ │ ├── costmap_filter.hpp │ │ ├── filter_values.hpp │ │ ├── keepout_filter.hpp │ │ └── speed_filter.hpp │ │ ├── costmap_layer.hpp │ │ ├── costmap_math.hpp │ │ ├── costmap_subscriber.hpp │ │ ├── costmap_topic_collision_checker.hpp │ │ ├── denoise │ │ ├── image.hpp │ │ └── image_processing.hpp │ │ ├── denoise_layer.hpp │ │ ├── exceptions.hpp │ │ ├── footprint.hpp │ │ ├── footprint_collision_checker.hpp │ │ ├── footprint_subscriber.hpp │ │ ├── inflation_layer.hpp │ │ ├── layer.hpp │ │ ├── layered_costmap.hpp │ │ ├── observation.hpp │ │ ├── observation_buffer.hpp │ │ ├── obstacle_layer.hpp │ │ ├── plugin_container_layer.hpp │ │ ├── range_sensor_layer.hpp │ │ ├── static_layer.hpp │ │ └── voxel_layer.hpp ├── package.xml ├── plugins │ ├── costmap_filters │ │ ├── binary_filter.cpp │ │ ├── costmap_filter.cpp │ │ ├── keepout_filter.cpp │ │ └── speed_filter.cpp │ ├── denoise_layer.cpp │ ├── inflation_layer.cpp │ ├── obstacle_layer.cpp │ ├── plugin_container_layer.cpp │ ├── range_sensor_layer.cpp │ ├── static_layer.cpp │ └── voxel_layer.cpp ├── src │ ├── clear_costmap_service.cpp │ ├── costmap_2d.cpp │ ├── costmap_2d_cloud.cpp │ ├── costmap_2d_markers.cpp │ ├── costmap_2d_node.cpp │ ├── costmap_2d_publisher.cpp │ ├── costmap_2d_ros.cpp │ ├── costmap_layer.cpp │ ├── costmap_math.cpp │ ├── costmap_subscriber.cpp │ ├── costmap_topic_collision_checker.cpp │ ├── footprint.cpp │ ├── footprint_collision_checker.cpp │ ├── footprint_subscriber.cpp │ ├── layer.cpp │ ├── layered_costmap.cpp │ └── observation_buffer.cpp └── test │ ├── CMakeLists.txt │ ├── costmap_params.yaml │ ├── integration │ ├── CMakeLists.txt │ ├── costmap_tester.cpp │ ├── costmap_tests_launch.py │ ├── dyn_params_tests.cpp │ ├── footprint_tests.cpp │ ├── inflation_tests.cpp │ ├── obstacle_tests.cpp │ ├── plugin_container_tests.cpp │ ├── range_tests.cpp │ ├── test_costmap_2d_publisher.cpp │ ├── test_costmap_subscriber.cpp │ └── test_costmap_topic_collision_checker.cpp │ ├── map │ ├── TenByTen.pgm │ └── TenByTen.yaml │ ├── module_tests.cpp │ ├── regression │ ├── CMakeLists.txt │ ├── costmap_bresenham_2d.cpp │ ├── order_layer.cpp │ ├── order_layer.hpp │ ├── order_layer.xml │ └── plugin_api_order.cpp │ ├── simple_driving_test.xml │ ├── test_launch_files │ └── costmap_map_server.launch.py │ ├── testing_helper.hpp │ └── unit │ ├── CMakeLists.txt │ ├── binary_filter_test.cpp │ ├── coordinate_transform_test.cpp │ ├── copy_window_test.cpp │ ├── costmap_conversion_test.cpp │ ├── costmap_cost_service_test.cpp │ ├── costmap_filter_service_test.cpp │ ├── costmap_filter_test.cpp │ ├── declare_parameter_test.cpp │ ├── denoise_layer_test.cpp │ ├── footprint_collision_checker_test.cpp │ ├── image_processing_test.cpp │ ├── image_test.cpp │ ├── image_tests_helper.hpp │ ├── keepout_filter_test.cpp │ ├── keepout_filter_test.jpg │ ├── lifecycle_test.cpp │ └── speed_filter_test.cpp ├── nav2_docking ├── LICENSE ├── README.md ├── docs │ ├── demo.gif │ └── nv_on.png ├── opennav_docking │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ │ └── opennav_docking │ │ │ ├── controller.hpp │ │ │ ├── dock_database.hpp │ │ │ ├── docking_server.hpp │ │ │ ├── navigator.hpp │ │ │ ├── pose_filter.hpp │ │ │ ├── simple_charging_dock.hpp │ │ │ ├── simple_non_charging_dock.hpp │ │ │ ├── types.hpp │ │ │ └── utils.hpp │ ├── package.xml │ ├── plugins.xml │ ├── src │ │ ├── controller.cpp │ │ ├── dock_database.cpp │ │ ├── docking_server.cpp │ │ ├── main.cpp │ │ ├── navigator.cpp │ │ ├── pose_filter.cpp │ │ ├── simple_charging_dock.cpp │ │ └── simple_non_charging_dock.cpp │ └── test │ │ ├── CMakeLists.txt │ │ ├── dock_files │ │ ├── test_dock_bad_conversion_file.yaml │ │ ├── test_dock_bad_pose_file.yaml │ │ ├── test_dock_file.yaml │ │ ├── test_dock_no_pose_file.yaml │ │ ├── test_dock_no_type_file.yaml │ │ └── test_no_docks_file.yaml │ │ ├── docking_params.yaml │ │ ├── test_controller.cpp │ │ ├── test_dock_database.cpp │ │ ├── test_docking_server.py │ │ ├── test_docking_server_unit.cpp │ │ ├── test_navigator.cpp │ │ ├── test_pose_filter.cpp │ │ ├── test_simple_charging_dock.cpp │ │ ├── test_simple_non_charging_dock.cpp │ │ ├── test_utils.cpp │ │ └── testing_dock.cpp ├── opennav_docking_bt │ ├── CMakeLists.txt │ ├── README.md │ ├── behavior_trees │ │ └── application_example.xml │ ├── include │ │ └── opennav_docking_bt │ │ │ ├── dock_robot.hpp │ │ │ └── undock_robot.hpp │ ├── package.xml │ ├── src │ │ ├── dock_robot.cpp │ │ └── undock_robot.cpp │ └── test │ │ ├── CMakeLists.txt │ │ ├── test_dock_robot.cpp │ │ └── test_undock_robot.cpp └── opennav_docking_core │ ├── CMakeLists.txt │ ├── README.md │ ├── include │ └── opennav_docking_core │ │ ├── charging_dock.hpp │ │ ├── docking_exceptions.hpp │ │ └── non_charging_dock.hpp │ └── package.xml ├── nav2_dwb_controller ├── README.md ├── costmap_queue │ ├── CMakeLists.txt │ ├── include │ │ └── costmap_queue │ │ │ ├── costmap_queue.hpp │ │ │ ├── limited_costmap_queue.hpp │ │ │ └── map_based_queue.hpp │ ├── package.xml │ ├── src │ │ ├── costmap_queue.cpp │ │ └── limited_costmap_queue.cpp │ └── test │ │ ├── mbq_test.cpp │ │ └── utest.cpp ├── dwb_core │ ├── CMakeLists.txt │ ├── include │ │ └── dwb_core │ │ │ ├── dwb_local_planner.hpp │ │ │ ├── exceptions.hpp │ │ │ ├── illegal_trajectory_tracker.hpp │ │ │ ├── publisher.hpp │ │ │ ├── trajectory_critic.hpp │ │ │ ├── trajectory_generator.hpp │ │ │ └── trajectory_utils.hpp │ ├── local_planner_plugin.xml │ ├── package.xml │ ├── src │ │ ├── dwb_local_planner.cpp │ │ ├── illegal_trajectory_tracker.cpp │ │ ├── publisher.cpp │ │ └── trajectory_utils.cpp │ └── test │ │ ├── CMakeLists.txt │ │ └── utils_test.cpp ├── dwb_critics │ ├── CMakeLists.txt │ ├── default_critics.xml │ ├── include │ │ └── dwb_critics │ │ │ ├── alignment_util.hpp │ │ │ ├── base_obstacle.hpp │ │ │ ├── goal_align.hpp │ │ │ ├── goal_dist.hpp │ │ │ ├── line_iterator.hpp │ │ │ ├── map_grid.hpp │ │ │ ├── obstacle_footprint.hpp │ │ │ ├── oscillation.hpp │ │ │ ├── path_align.hpp │ │ │ ├── path_dist.hpp │ │ │ ├── prefer_forward.hpp │ │ │ ├── rotate_to_goal.hpp │ │ │ └── twirling.hpp │ ├── package.xml │ ├── src │ │ ├── alignment_util.cpp │ │ ├── base_obstacle.cpp │ │ ├── goal_align.cpp │ │ ├── goal_dist.cpp │ │ ├── map_grid.cpp │ │ ├── obstacle_footprint.cpp │ │ ├── oscillation.cpp │ │ ├── path_align.cpp │ │ ├── path_dist.cpp │ │ ├── prefer_forward.cpp │ │ ├── rotate_to_goal.cpp │ │ └── twirling.cpp │ └── test │ │ ├── CMakeLists.txt │ │ ├── alignment_util_test.cpp │ │ ├── base_obstacle_test.cpp │ │ ├── obstacle_footprint_test.cpp │ │ ├── prefer_forward_test.cpp │ │ └── twirling_test.cpp ├── dwb_msgs │ ├── CMakeLists.txt │ ├── msg │ │ ├── CriticScore.msg │ │ ├── LocalPlanEvaluation.msg │ │ ├── Trajectory2D.msg │ │ └── TrajectoryScore.msg │ ├── package.xml │ └── srv │ │ ├── DebugLocalPlan.srv │ │ ├── GenerateTrajectory.srv │ │ ├── GenerateTwists.srv │ │ ├── GetCriticScore.srv │ │ └── ScoreTrajectory.srv ├── dwb_plugins │ ├── CMakeLists.txt │ ├── include │ │ └── dwb_plugins │ │ │ ├── kinematic_parameters.hpp │ │ │ ├── limited_accel_generator.hpp │ │ │ ├── one_d_velocity_iterator.hpp │ │ │ ├── standard_traj_generator.hpp │ │ │ ├── velocity_iterator.hpp │ │ │ └── xy_theta_iterator.hpp │ ├── package.xml │ ├── plugins.xml │ ├── src │ │ ├── kinematic_parameters.cpp │ │ ├── limited_accel_generator.cpp │ │ ├── standard_traj_generator.cpp │ │ └── xy_theta_iterator.cpp │ └── test │ │ ├── CMakeLists.txt │ │ ├── kinematic_parameters_test.cpp │ │ ├── speed_limit_test.cpp │ │ ├── twist_gen.cpp │ │ └── velocity_iterator_test.cpp ├── images │ ├── DWB_Structure_Simplified.svg │ └── LocalPlanner.svg ├── nav2_dwb_controller │ ├── CHANGELOG.rst │ ├── CMakeLists.txt │ └── package.xml ├── nav_2d_msgs │ ├── CMakeLists.txt │ ├── msg │ │ ├── Path2D.msg │ │ ├── Pose2D32.msg │ │ ├── Pose2DStamped.msg │ │ ├── Twist2D.msg │ │ ├── Twist2D32.msg │ │ └── Twist2DStamped.msg │ └── package.xml └── nav_2d_utils │ ├── CMakeLists.txt │ ├── include │ └── nav_2d_utils │ │ ├── conversions.hpp │ │ ├── odom_subscriber.hpp │ │ ├── parameters.hpp │ │ ├── path_ops.hpp │ │ └── tf_help.hpp │ ├── package.xml │ ├── src │ ├── conversions.cpp │ ├── path_ops.cpp │ └── tf_help.cpp │ └── test │ ├── 2d_utils_test.cpp │ ├── CMakeLists.txt │ ├── path_ops_test.cpp │ └── tf_help_test.cpp ├── nav2_graceful_controller ├── CMakeLists.txt ├── README.md ├── doc │ └── trajectories.png ├── graceful_controller_plugin.xml ├── include │ └── nav2_graceful_controller │ │ ├── ego_polar_coords.hpp │ │ ├── graceful_controller.hpp │ │ ├── parameter_handler.hpp │ │ ├── path_handler.hpp │ │ ├── smooth_control_law.hpp │ │ └── utils.hpp ├── package.xml ├── src │ ├── graceful_controller.cpp │ ├── parameter_handler.cpp │ ├── path_handler.cpp │ ├── smooth_control_law.cpp │ └── utils.cpp └── test │ ├── CMakeLists.txt │ ├── test_egopolar.cpp │ └── test_graceful_controller.cpp ├── nav2_lifecycle_manager ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── doc │ ├── diagram_lifecycle_manager.JPG │ └── uml_lifecycle_manager.JPG ├── include │ └── nav2_lifecycle_manager │ │ ├── lifecycle_manager.hpp │ │ └── lifecycle_manager_client.hpp ├── package.xml ├── src │ ├── lifecycle_manager.cpp │ ├── lifecycle_manager_client.cpp │ └── main.cpp └── test │ ├── CMakeLists.txt │ ├── launch_bond_test.py │ ├── launch_lifecycle_test.py │ ├── test_bond.cpp │ └── test_lifecycle_manager.cpp ├── nav2_loopback_sim ├── README.md ├── launch │ └── loopback_simulation.launch.py ├── nav2_loopback_sim │ ├── loopback_simulator.py │ └── utils.py ├── package.xml ├── pytest.ini ├── resource │ └── nav2_loopback_sim ├── setup.cfg ├── setup.py └── test │ ├── test_copyright.py │ ├── test_flake8.py │ └── test_pep257.py ├── nav2_map_server ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── cmake_modules │ └── FindGRAPHICSMAGICKCPP.cmake ├── include │ └── nav2_map_server │ │ ├── costmap_filter_info_server.hpp │ │ ├── map_io.hpp │ │ ├── map_mode.hpp │ │ ├── map_saver.hpp │ │ └── map_server.hpp ├── launch │ └── map_saver_server.launch.py ├── package.xml ├── src │ ├── costmap_filter_info │ │ ├── costmap_filter_info_server.cpp │ │ └── main.cpp │ ├── map_io.cpp │ ├── map_mode.cpp │ ├── map_saver │ │ ├── main_cli.cpp │ │ ├── main_server.cpp │ │ └── map_saver.cpp │ └── map_server │ │ ├── main.cpp │ │ └── map_server.cpp └── test │ ├── CMakeLists.txt │ ├── component │ ├── CMakeLists.txt │ ├── test_map_saver_launch.py │ ├── test_map_saver_node.cpp │ ├── test_map_saver_publisher.cpp │ ├── test_map_server_launch.py │ └── test_map_server_node.cpp │ ├── invalid_image.yaml │ ├── map_saver_cli │ ├── CMakeLists.txt │ └── test_map_saver_cli.cpp │ ├── map_saver_params.yaml │ ├── map_server_params.yaml │ ├── test_constants.cpp │ ├── test_constants │ └── test_constants.h │ ├── test_launch_files │ ├── map_saver_node.launch.py │ └── map_server_node.launch.py │ ├── testmap.bmp │ ├── testmap.pgm │ ├── testmap.png │ ├── testmap.yaml │ └── unit │ ├── CMakeLists.txt │ ├── test_costmap_filter_info_server.cpp │ └── test_map_io.cpp ├── nav2_mppi_controller ├── CMakeLists.txt ├── LICENSE.md ├── README.md ├── benchmark │ ├── CMakeLists.txt │ ├── controller_benchmark.cpp │ └── optimizer_benchmark.cpp ├── critics.xml ├── include │ └── nav2_mppi_controller │ │ ├── controller.hpp │ │ ├── critic_data.hpp │ │ ├── critic_function.hpp │ │ ├── critic_manager.hpp │ │ ├── critics │ │ ├── constraint_critic.hpp │ │ ├── cost_critic.hpp │ │ ├── goal_angle_critic.hpp │ │ ├── goal_critic.hpp │ │ ├── obstacles_critic.hpp │ │ ├── path_align_critic.hpp │ │ ├── path_angle_critic.hpp │ │ ├── path_follow_critic.hpp │ │ ├── prefer_forward_critic.hpp │ │ ├── twirling_critic.hpp │ │ └── velocity_deadband_critic.hpp │ │ ├── models │ │ ├── constraints.hpp │ │ ├── control_sequence.hpp │ │ ├── optimizer_settings.hpp │ │ ├── path.hpp │ │ ├── state.hpp │ │ └── trajectories.hpp │ │ ├── motion_models.hpp │ │ ├── optimizer.hpp │ │ └── tools │ │ ├── noise_generator.hpp │ │ ├── parameters_handler.hpp │ │ ├── path_handler.hpp │ │ ├── trajectory_visualizer.hpp │ │ └── utils.hpp ├── media │ └── demo.gif ├── mppic.xml ├── package.xml ├── src │ ├── controller.cpp │ ├── critic_manager.cpp │ ├── critics │ │ ├── constraint_critic.cpp │ │ ├── cost_critic.cpp │ │ ├── goal_angle_critic.cpp │ │ ├── goal_critic.cpp │ │ ├── obstacles_critic.cpp │ │ ├── path_align_critic.cpp │ │ ├── path_angle_critic.cpp │ │ ├── path_follow_critic.cpp │ │ ├── prefer_forward_critic.cpp │ │ ├── twirling_critic.cpp │ │ └── velocity_deadband_critic.cpp │ ├── noise_generator.cpp │ ├── optimizer.cpp │ ├── parameters_handler.cpp │ ├── path_handler.cpp │ └── trajectory_visualizer.cpp └── test │ ├── CMakeLists.txt │ ├── controller_state_transition_test.cpp │ ├── critic_manager_test.cpp │ ├── critics_tests.cpp │ ├── models_test.cpp │ ├── motion_model_tests.cpp │ ├── noise_generator_test.cpp │ ├── optimizer_smoke_test.cpp │ ├── optimizer_unit_tests.cpp │ ├── parameter_handler_test.cpp │ ├── path_handler_test.cpp │ ├── trajectory_visualizer_tests.cpp │ ├── utils │ ├── factory.hpp │ ├── models.hpp │ └── utils.hpp │ └── utils_test.cpp ├── nav2_msgs ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── action │ ├── AssistedTeleop.action │ ├── BackUp.action │ ├── ComputeAndTrackRoute.action │ ├── ComputePathThroughPoses.action │ ├── ComputePathToPose.action │ ├── ComputeRoute.action │ ├── DockRobot.action │ ├── DriveOnHeading.action │ ├── DummyBehavior.action │ ├── FollowGPSWaypoints.action │ ├── FollowPath.action │ ├── FollowWaypoints.action │ ├── NavigateThroughPoses.action │ ├── NavigateToPose.action │ ├── SmoothPath.action │ ├── Spin.action │ ├── UndockRobot.action │ ├── Wait.action │ └── __init__.py ├── msg │ ├── BehaviorTreeLog.msg │ ├── BehaviorTreeStatusChange.msg │ ├── CollisionDetectorState.msg │ ├── CollisionMonitorState.msg │ ├── Costmap.msg │ ├── CostmapFilterInfo.msg │ ├── CostmapMetaData.msg │ ├── CostmapUpdate.msg │ ├── EdgeCost.msg │ ├── Particle.msg │ ├── ParticleCloud.msg │ ├── Route.msg │ ├── RouteEdge.msg │ ├── RouteNode.msg │ ├── SpeedLimit.msg │ ├── Trajectory.msg │ ├── TrajectoryPoint.msg │ ├── VoxelGrid.msg │ ├── WaypointStatus.msg │ └── __init__.py ├── package.xml └── srv │ ├── ClearCostmapAroundRobot.srv │ ├── ClearCostmapExceptRegion.srv │ ├── ClearEntireCostmap.srv │ ├── DynamicEdges.srv │ ├── GetCostmap.srv │ ├── GetCosts.srv │ ├── IsPathValid.srv │ ├── LoadMap.srv │ ├── ManageLifecycleNodes.srv │ ├── ReloadDockDatabase.srv │ ├── SaveMap.srv │ ├── SetInitialPose.srv │ ├── SetRouteGraph.srv │ └── __init__.py ├── nav2_navfn_planner ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── global_planner_plugin.xml ├── include │ └── nav2_navfn_planner │ │ ├── navfn.hpp │ │ └── navfn_planner.hpp ├── package.xml ├── src │ ├── navfn.cpp │ └── navfn_planner.cpp └── test │ ├── CMakeLists.txt │ └── test_dynamic_parameters.cpp ├── nav2_planner ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_planner │ │ └── planner_server.hpp ├── package.xml ├── src │ ├── main.cpp │ └── planner_server.cpp └── test │ ├── CMakeLists.txt │ └── test_dynamic_parameters.cpp ├── nav2_regulated_pure_pursuit_controller ├── CMakeLists.txt ├── README.md ├── doc │ ├── circle-segment-intersection.ipynb │ └── lookahead_algorithm.png ├── include │ └── nav2_regulated_pure_pursuit_controller │ │ ├── collision_checker.hpp │ │ ├── parameter_handler.hpp │ │ ├── path_handler.hpp │ │ ├── regulated_pure_pursuit_controller.hpp │ │ └── regulation_functions.hpp ├── nav2_regulated_pure_pursuit_controller.xml ├── package.xml ├── src │ ├── collision_checker.cpp │ ├── parameter_handler.cpp │ ├── path_handler.cpp │ └── regulated_pure_pursuit_controller.cpp └── test │ ├── CMakeLists.txt │ ├── path_utils │ ├── path_utils.cpp │ ├── path_utils.hpp │ └── test_path_utils.cpp │ └── test_regulated_pp.cpp ├── nav2_rotation_shim_controller ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_rotation_shim_controller │ │ └── nav2_rotation_shim_controller.hpp ├── nav2_rotation_shim_controller.xml ├── package.xml ├── src │ └── nav2_rotation_shim_controller.cpp └── test │ ├── CMakeLists.txt │ └── test_shim_controller.cpp ├── nav2_route ├── CMakeLists.txt ├── README.md ├── graphs │ ├── aws_graph.geojson │ ├── sample_graph.geojson │ ├── scripts │ │ ├── README.md │ │ ├── export_shapefiles.py │ │ ├── generate_start_and_end_id.sql │ │ ├── increment_edge_id.json │ │ └── increment_node_id.json │ ├── turtlebot3_graph.geojson │ └── turtlebot4_graph.geojson ├── include │ └── nav2_route │ │ ├── edge_scorer.hpp │ │ ├── goal_intent_extractor.hpp │ │ ├── goal_intent_search.hpp │ │ ├── graph_loader.hpp │ │ ├── graph_saver.hpp │ │ ├── interfaces │ │ ├── edge_cost_function.hpp │ │ ├── graph_file_loader.hpp │ │ ├── graph_file_saver.hpp │ │ └── route_operation.hpp │ │ ├── node_spatial_tree.hpp │ │ ├── operations_manager.hpp │ │ ├── path_converter.hpp │ │ ├── plugins │ │ ├── edge_cost_functions │ │ │ ├── costmap_scorer.hpp │ │ │ ├── distance_scorer.hpp │ │ │ ├── dynamic_edges_scorer.hpp │ │ │ ├── goal_orientation_scorer.hpp │ │ │ ├── penalty_scorer.hpp │ │ │ ├── semantic_scorer.hpp │ │ │ ├── start_pose_orientation_scorer.hpp │ │ │ └── time_scorer.hpp │ │ ├── graph_file_loaders │ │ │ └── geojson_graph_file_loader.hpp │ │ ├── graph_file_savers │ │ │ └── geojson_graph_file_saver.hpp │ │ ├── route_operation_client.hpp │ │ └── route_operations │ │ │ ├── adjust_speed_limit.hpp │ │ │ ├── collision_monitor.hpp │ │ │ ├── rerouting_service.hpp │ │ │ ├── time_marker.hpp │ │ │ └── trigger_event.hpp │ │ ├── route_planner.hpp │ │ ├── route_server.hpp │ │ ├── route_tracker.hpp │ │ ├── types.hpp │ │ └── utils.hpp ├── media │ └── architecture.png ├── package.xml ├── plugins.xml ├── src │ ├── edge_scorer.cpp │ ├── goal_intent_extractor.cpp │ ├── graph_loader.cpp │ ├── graph_saver.cpp │ ├── main.cpp │ ├── node_spatial_tree.cpp │ ├── operations_manager.cpp │ ├── path_converter.cpp │ ├── plugins │ │ ├── edge_cost_functions │ │ │ ├── costmap_scorer.cpp │ │ │ ├── distance_scorer.cpp │ │ │ ├── dynamic_edges_scorer.cpp │ │ │ ├── goal_orientation_scorer.cpp │ │ │ ├── penalty_scorer.cpp │ │ │ ├── semantic_scorer.cpp │ │ │ ├── start_pose_orientation_scorer.cpp │ │ │ └── time_scorer.cpp │ │ ├── graph_file_loaders │ │ │ └── geojson_graph_file_loader.cpp │ │ ├── graph_file_savers │ │ │ └── geojson_graph_file_saver.cpp │ │ └── route_operations │ │ │ ├── adjust_speed_limit.cpp │ │ │ ├── collision_monitor.cpp │ │ │ ├── rerouting_service.cpp │ │ │ ├── time_marker.cpp │ │ │ └── trigger_event.cpp │ ├── route_planner.cpp │ ├── route_server.cpp │ └── route_tracker.cpp └── test │ ├── CMakeLists.txt │ ├── performance_benchmarking.cpp │ ├── test_collision_operation.cpp │ ├── test_edge_scorers.cpp │ ├── test_geojson_graph_file_loader.cpp │ ├── test_geojson_graph_file_saver.cpp │ ├── test_goal_intent_extractor.cpp │ ├── test_goal_intent_search.cpp │ ├── test_graph_loader.cpp │ ├── test_graph_saver.cpp │ ├── test_graphs │ ├── error_codes.geojson │ ├── invalid.json │ └── no_frame.json │ ├── test_operations.cpp │ ├── test_path_converter.cpp │ ├── test_route_planner.cpp │ ├── test_route_server.cpp │ ├── test_route_tracker.cpp │ ├── test_spatial_tree.cpp │ └── test_utils_and_types.cpp ├── nav2_rviz_plugins ├── CMakeLists.txt ├── icons │ └── classes │ │ ├── Docking.svg │ │ └── nav2_logo_small.png ├── include │ └── nav2_rviz_plugins │ │ ├── costmap_cost_tool.hpp │ │ ├── docking_panel.hpp │ │ ├── goal_common.hpp │ │ ├── goal_pose_updater.hpp │ │ ├── goal_tool.hpp │ │ ├── nav2_panel.hpp │ │ ├── particle_cloud_display │ │ ├── flat_weighted_arrows_array.hpp │ │ └── particle_cloud_display.hpp │ │ ├── ros_action_qevent.hpp │ │ ├── route_tool.hpp │ │ ├── selector.hpp │ │ └── utils.hpp ├── launch │ └── route_tool.launch.py ├── package.xml ├── plugins_description.xml ├── resource │ └── route_tool.ui ├── rviz │ └── route_tool.rviz └── src │ ├── costmap_cost_tool.cpp │ ├── docking_panel.cpp │ ├── goal_tool.cpp │ ├── nav2_panel.cpp │ ├── particle_cloud_display │ ├── flat_weighted_arrows_array.cpp │ └── particle_cloud_display.cpp │ ├── route_tool.cpp │ ├── selector.cpp │ └── utils.cpp ├── nav2_simple_commander ├── README.md ├── launch │ ├── assisted_teleop_example_launch.py │ ├── follow_path_example_launch.py │ ├── inspection_demo_launch.py │ ├── nav_through_poses_example_launch.py │ ├── nav_to_pose_example_launch.py │ ├── picking_demo_launch.py │ ├── recoveries_example_launch.py │ ├── route_example_launch.py │ ├── security_demo_launch.py │ └── waypoint_follower_example_launch.py ├── media │ └── readme.gif ├── nav2_simple_commander │ ├── __init__.py │ ├── costmap_2d.py │ ├── demo_inspection.py │ ├── demo_picking.py │ ├── demo_recoveries.py │ ├── demo_security.py │ ├── example_assisted_teleop.py │ ├── example_follow_path.py │ ├── example_nav_through_poses.py │ ├── example_nav_to_pose.py │ ├── example_route.py │ ├── example_waypoint_follower.py │ ├── footprint_collision_checker.py │ ├── line_iterator.py │ ├── robot_navigator.py │ └── utils.py ├── package.xml ├── pytest.ini ├── resource │ └── nav2_simple_commander ├── setup.cfg ├── setup.py └── test │ ├── test_copyright.py │ ├── test_flake8.py │ ├── test_footprint_collision_checker.py │ ├── test_line_iterator.py │ └── test_pep257.py ├── nav2_smac_planner ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_smac_planner │ │ ├── a_star.hpp │ │ ├── analytic_expansion.hpp │ │ ├── collision_checker.hpp │ │ ├── constants.hpp │ │ ├── costmap_downsampler.hpp │ │ ├── goal_manager.hpp │ │ ├── node_2d.hpp │ │ ├── node_basic.hpp │ │ ├── node_hybrid.hpp │ │ ├── node_lattice.hpp │ │ ├── smac_planner_2d.hpp │ │ ├── smac_planner_hybrid.hpp │ │ ├── smac_planner_lattice.hpp │ │ ├── smoother.hpp │ │ ├── thirdparty │ │ └── robin_hood.h │ │ ├── types.hpp │ │ └── utils.hpp ├── lattice_primitives │ ├── README.md │ ├── __init__.py │ ├── config.json │ ├── constants.py │ ├── docs │ │ ├── all_trajectories.png │ │ └── angle_discretization.png │ ├── generate_motion_primitives.py │ ├── helper.py │ ├── lattice_generator.py │ ├── py.typed │ ├── requirements.txt │ ├── sample_primitives │ │ ├── 5cm_resolution │ │ │ ├── 0.5m_turning_radius │ │ │ │ ├── ackermann │ │ │ │ │ └── output.json │ │ │ │ ├── all_trajectories.png │ │ │ │ ├── diff │ │ │ │ │ └── output.json │ │ │ │ └── omni │ │ │ │ │ └── output.json │ │ │ └── 1m_turning_radius │ │ │ │ ├── ackermann │ │ │ │ └── output.json │ │ │ │ ├── all_trajectories.png │ │ │ │ ├── diff │ │ │ │ └── output.json │ │ │ │ └── omni │ │ │ │ └── output.json │ │ └── test │ │ │ └── output.json │ ├── tests │ │ ├── test_lattice_generator.py │ │ ├── test_trajectory_generator.py │ │ └── trajectory_visualizer.py │ ├── trajectory.py │ └── trajectory_generator.py ├── media │ ├── A.png │ └── B.png ├── package.xml ├── smac_plugin_2d.xml ├── smac_plugin_hybrid.xml ├── smac_plugin_lattice.xml ├── src │ ├── a_star.cpp │ ├── analytic_expansion.cpp │ ├── collision_checker.cpp │ ├── costmap_downsampler.cpp │ ├── node_2d.cpp │ ├── node_basic.cpp │ ├── node_hybrid.cpp │ ├── node_lattice.cpp │ ├── smac_planner_2d.cpp │ ├── smac_planner_hybrid.cpp │ ├── smac_planner_lattice.cpp │ └── smoother.cpp └── test │ ├── 3planners.png │ ├── CMakeLists.txt │ ├── deprecated │ ├── options.hpp │ ├── smoother.hpp │ ├── smoother_cost_function.hpp │ ├── upsampler.hpp │ ├── upsampler_cost_function.hpp │ └── upsampler_cost_function_nlls.hpp │ ├── path.png │ ├── test_a_star.cpp │ ├── test_collision_checker.cpp │ ├── test_costmap_downsampler.cpp │ ├── test_goal_manager.cpp │ ├── test_node2d.cpp │ ├── test_nodebasic.cpp │ ├── test_nodehybrid.cpp │ ├── test_nodelattice.cpp │ ├── test_smac_2d.cpp │ ├── test_smac_hybrid.cpp │ ├── test_smac_lattice.cpp │ ├── test_smoother.cpp │ └── test_utils.cpp ├── nav2_smoother ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_smoother │ │ ├── nav2_smoother.hpp │ │ ├── savitzky_golay_smoother.hpp │ │ ├── simple_smoother.hpp │ │ └── smoother_utils.hpp ├── package.xml ├── plugins.xml ├── src │ ├── main.cpp │ ├── nav2_smoother.cpp │ ├── savitzky_golay_smoother.cpp │ └── simple_smoother.cpp └── test │ ├── CMakeLists.txt │ ├── test_savitzky_golay_smoother.cpp │ ├── test_simple_smoother.cpp │ └── test_smoother_server.cpp ├── nav2_system_tests ├── CMakeLists.txt ├── README.md ├── maps │ ├── empty_room.pgm │ ├── empty_room.png │ ├── empty_room.yaml │ ├── keepout_mask.pgm │ ├── keepout_mask.yaml │ ├── map.pgm │ ├── map.xcf │ ├── map_circular.pgm │ ├── map_circular.yaml │ ├── speed_mask.pgm │ └── speed_mask.yaml ├── models │ └── cardboard_box.sdf ├── package.xml ├── scripts │ └── ctest_loop.bash └── src │ ├── behavior_tree │ ├── CMakeLists.txt │ ├── dummy_action_server.hpp │ ├── dummy_service.hpp │ ├── server_handler.cpp │ ├── server_handler.hpp │ └── test_behavior_tree_node.cpp │ ├── behaviors │ ├── README.md │ ├── assisted_teleop │ │ ├── CMakeLists.txt │ │ ├── assisted_teleop_behavior_tester.cpp │ │ ├── assisted_teleop_behavior_tester.hpp │ │ ├── test_assisted_teleop_behavior_launch.py │ │ └── test_assisted_teleop_behavior_node.cpp │ ├── backup │ │ ├── CMakeLists.txt │ │ ├── backup_tester.py │ │ └── test_backup_behavior.launch.py │ ├── drive_on_heading │ │ ├── CMakeLists.txt │ │ ├── drive_tester.py │ │ └── test_drive_on_heading_behavior.launch.py │ ├── spin │ │ ├── CMakeLists.txt │ │ ├── spin_tester.py │ │ └── test_spin_behavior.launch.py │ └── wait │ │ ├── CMakeLists.txt │ │ ├── test_wait_behavior_launch.py │ │ ├── test_wait_behavior_node.cpp │ │ ├── wait_behavior_tester.cpp │ │ └── wait_behavior_tester.hpp │ ├── costmap_filters │ ├── CMakeLists.txt │ ├── keepout_params.yaml │ ├── keepout_plan.png │ ├── speed_global_params.yaml │ ├── speed_local_params.yaml │ ├── test_keepout_launch.py │ ├── test_speed_launch.py │ └── tester_node.py │ ├── dummy_controller │ ├── CMakeLists.txt │ ├── dummy_controller.cpp │ ├── dummy_controller.hpp │ └── main.cpp │ ├── dummy_planner │ ├── CMakeLists.txt │ ├── dummy_planner.cpp │ ├── dummy_planner.hpp │ └── main.cpp │ ├── error_codes │ ├── CMakeLists.txt │ ├── controller │ │ ├── controller_error_plugins.cpp │ │ └── controller_error_plugins.hpp │ ├── controller_plugins.xml │ ├── error_code_param.yaml │ ├── planner │ │ ├── planner_error_plugin.cpp │ │ └── planner_error_plugin.hpp │ ├── planner_plugins.xml │ ├── smoother │ │ ├── smoother_error_plugin.cpp │ │ └── smoother_error_plugin.hpp │ ├── smoother_plugins.xml │ ├── test_error_codes.py │ └── test_error_codes_launch.py │ ├── gps_navigation │ ├── CMakeLists.txt │ ├── dual_ekf_navsat.launch.py │ ├── dual_ekf_navsat_params.yaml │ ├── nav2_no_map_params.yaml │ ├── test_case_py.launch.py │ └── tester.py │ ├── localization │ ├── CMakeLists.txt │ ├── README.md │ ├── test_localization_launch.py │ └── test_localization_node.cpp │ ├── planning │ ├── CMakeLists.txt │ ├── README.md │ ├── example_result.png │ ├── planner_tester.cpp │ ├── planner_tester.hpp │ ├── test_planner_costmaps_launch.py │ ├── test_planner_costmaps_node.cpp │ ├── test_planner_is_path_valid.cpp │ ├── test_planner_plugins.cpp │ ├── test_planner_random_launch.py │ └── test_planner_random_node.cpp │ ├── route │ ├── CMakeLists.txt │ ├── README.md │ ├── test_route_launch.py │ └── tester_node.py │ ├── system │ ├── CMakeLists.txt │ ├── README.md │ ├── nav2_system_params.yaml │ ├── nav_through_poses_tester_error_msg_node.py │ ├── nav_through_poses_tester_node.py │ ├── nav_to_pose_tester_node.py │ ├── test_multi_robot_launch.py │ ├── test_system_launch.py │ ├── test_system_with_obstacle_launch.py │ └── test_wrong_init_pose_launch.py │ ├── system_failure │ ├── CMakeLists.txt │ ├── README.md │ ├── test_system_failure_launch.py │ └── tester_node.py │ ├── updown │ ├── CMakeLists.txt │ ├── README.md │ ├── start_nav2 │ ├── test_updown.cpp │ ├── test_updown_launch.py │ ├── test_updown_reliability │ └── updownresults.py │ └── waypoint_follower │ ├── CMakeLists.txt │ ├── README.md │ ├── test_case_launch.py │ └── tester.py ├── nav2_theta_star_planner ├── CMakeLists.txt ├── README.md ├── img │ └── 00-37.png ├── include │ └── nav2_theta_star_planner │ │ ├── theta_star.hpp │ │ └── theta_star_planner.hpp ├── package.xml ├── src │ ├── theta_star.cpp │ └── theta_star_planner.cpp ├── test │ └── test_theta_star.cpp └── theta_star_planner.xml ├── nav2_util ├── CHANGELOG.rst ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_util │ │ ├── array_parser.hpp │ │ ├── clear_entirely_costmap_service_client.hpp │ │ ├── costmap.hpp │ │ ├── execution_timer.hpp │ │ ├── geometry_utils.hpp │ │ ├── lifecycle_node.hpp │ │ ├── lifecycle_service_client.hpp │ │ ├── lifecycle_utils.hpp │ │ ├── line_iterator.hpp │ │ ├── node_thread.hpp │ │ ├── node_utils.hpp │ │ ├── occ_grid_values.hpp │ │ ├── odometry_utils.hpp │ │ ├── robot_utils.hpp │ │ ├── service_client.hpp │ │ ├── service_server.hpp │ │ ├── simple_action_server.hpp │ │ ├── string_utils.hpp │ │ ├── twist_publisher.hpp │ │ ├── twist_subscriber.hpp │ │ └── validate_messages.hpp ├── package.xml ├── src │ ├── CMakeLists.txt │ ├── array_parser.cpp │ ├── base_footprint_publisher.cpp │ ├── base_footprint_publisher.hpp │ ├── costmap.cpp │ ├── lifecycle_bringup_commandline.cpp │ ├── lifecycle_node.cpp │ ├── lifecycle_service_client.cpp │ ├── lifecycle_utils.cpp │ ├── node_thread.cpp │ ├── node_utils.cpp │ ├── odometry_utils.cpp │ ├── robot_utils.cpp │ └── string_utils.cpp └── test │ ├── CMakeLists.txt │ ├── test_actions.cpp │ ├── test_array_parser.cpp │ ├── test_base_footprint_publisher.cpp │ ├── test_execution_timer.cpp │ ├── test_geometry_utils.cpp │ ├── test_lifecycle_cli_node.cpp │ ├── test_lifecycle_node.cpp │ ├── test_lifecycle_utils.cpp │ ├── test_node_utils.cpp │ ├── test_odometry_utils.cpp │ ├── test_robot_utils.cpp │ ├── test_service_client.cpp │ ├── test_service_server.cpp │ ├── test_string_utils.cpp │ ├── test_twist_publisher.cpp │ ├── test_twist_subscriber.cpp │ └── test_validation_messages.cpp ├── nav2_velocity_smoother ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_velocity_smoother │ │ └── velocity_smoother.hpp ├── package.xml ├── src │ ├── main.cpp │ └── velocity_smoother.cpp └── test │ ├── CMakeLists.txt │ └── test_velocity_smoother.cpp ├── nav2_voxel_grid ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_voxel_grid │ │ └── voxel_grid.hpp ├── package.xml ├── src │ └── voxel_grid.cpp └── test │ ├── CMakeLists.txt │ ├── voxel_grid_bresenham_3d.cpp │ └── voxel_grid_tests.cpp ├── nav2_waypoint_follower ├── CMakeLists.txt ├── README.md ├── include │ └── nav2_waypoint_follower │ │ ├── plugins │ │ ├── input_at_waypoint.hpp │ │ ├── photo_at_waypoint.hpp │ │ └── wait_at_waypoint.hpp │ │ └── waypoint_follower.hpp ├── package.xml ├── plugins.xml ├── plugins │ ├── input_at_waypoint.cpp │ ├── photo_at_waypoint.cpp │ └── wait_at_waypoint.cpp ├── src │ ├── main.cpp │ └── waypoint_follower.cpp └── test │ ├── CMakeLists.txt │ ├── test_dynamic_parameters.cpp │ └── test_task_executors.cpp ├── navigation2 ├── CHANGELOG.rst ├── CMakeLists.txt └── package.xml └── tools ├── .codespell_ignore_words ├── bt2img.py ├── code_coverage_report.bash ├── ctest_retry.bash ├── distro.Dockerfile ├── planner_benchmarking ├── 100by100_10.pgm ├── 100by100_10.yaml ├── 100by100_15.pgm ├── 100by100_15.yaml ├── 100by100_20.pgm ├── 100by100_20.yaml ├── README.md ├── metrics.py ├── planning_benchmark_bringup.py └── process_data.py ├── pyproject.toml ├── run_sanitizers ├── run_test_suite.bash ├── skip_keys.txt ├── smoother_benchmarking ├── README.md ├── maps │ ├── smoothers_world.pgm │ └── smoothers_world.yaml ├── metrics.py ├── process_data.py └── smoother_benchmark_bringup.py ├── source.Dockerfile ├── underlay.repos ├── update_bt_diagrams.bash └── update_readme_table.py /.circleci/defaults.yaml: -------------------------------------------------------------------------------- 1 | _common: &common 2 | "test-result-base": "test_results" 3 | 4 | "clean.packages": 5 | <<: *common 6 | "build": 7 | <<: *common 8 | "executor": "parallel" 9 | "parallel-workers": 4 10 | "symlink-install": true 11 | "test": 12 | <<: *common 13 | "executor": "parallel" 14 | "parallel-workers": 1 15 | "test-result": 16 | <<: *common 17 | -------------------------------------------------------------------------------- /.devcontainer/caddy/srv/assets/gzweb/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Gzweb: {{placeholder "http.vars.ReqHost"}}", 3 | "short_name": "Gzweb: {{placeholder "http.vars.ReqHost"}}", 4 | "icons": [ 5 | { 6 | "src": "/media/icons/gzweb/any_icon_x512.webp", 7 | "sizes": "512x512", 8 | "type": "image/webp", 9 | "purpose": "any" 10 | }, 11 | { 12 | "src": "/media/icons/gzweb/maskable_icon_x512.webp", 13 | "sizes": "512x512", 14 | "type": "image/webp", 15 | "purpose": "maskable" 16 | } 17 | ], 18 | "id": "/gzweb/", 19 | "start_url": "/gzweb/", 20 | "theme_color": "#ffffff", 21 | "background_color": "#ffffff", 22 | "display": "fullscreen" 23 | } 24 | -------------------------------------------------------------------------------- /.devcontainer/caddy/srv/assets/nav2/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Nav2: {{placeholder "http.vars.ReqHost"}}", 3 | "short_name": "Nav2: {{placeholder "http.vars.ReqHost"}}", 4 | "icons": [ 5 | { 6 | "src": "/media/icons/nav2/any_icon_x512.webp", 7 | "sizes": "512x512", 8 | "type": "image/webp", 9 | "purpose": "any" 10 | }, 11 | { 12 | "src": "/media/icons/nav2/maskable_icon_x512.webp", 13 | "sizes": "512x512", 14 | "type": "image/webp", 15 | "purpose": "maskable" 16 | } 17 | ], 18 | "id": "/nav2/", 19 | "start_url": "/nav2/", 20 | "theme_color": "#ffffff", 21 | "background_color": "#ffffff", 22 | "display": "standalone" 23 | } 24 | -------------------------------------------------------------------------------- /.devcontainer/caddy/srv/nav2/index.html: -------------------------------------------------------------------------------- 1 | {{$pathParts := splitList "/" .OriginalReq.URL.Path}} 2 | {{$markdownFilename := default "index" (slice $pathParts 2 | join "/")}} 3 | {{$markdownFilePath := printf "/%s.md" $markdownFilename}} 4 | {{if not (fileExists $markdownFilePath)}}{{httpError 404}}{{end}} 5 | {{$markdownFile := (include $markdownFilePath | splitFrontMatter)}} 6 | {{$title := default $markdownFilename $markdownFile.Meta.title}} 7 | 8 | 9 | 10 | 11 | 12 | {{$title}} 13 | 14 | 15 | 16 | 17 | 32 | 33 | 34 |
{{markdown $markdownFile.Body}}
35 | 36 | 37 | -------------------------------------------------------------------------------- /.devcontainer/on-create-command.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Immediately catch all errors 4 | set -eo pipefail 5 | 6 | # Uncomment for debugging 7 | # set -x 8 | # env 9 | 10 | git config --global --add safe.directory "*" 11 | 12 | .devcontainer/update-content-command.sh 13 | -------------------------------------------------------------------------------- /.devcontainer/post-create-command.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Immediately catch all errors 4 | set -eo pipefail 5 | 6 | # Uncomment for debugging 7 | # set -x 8 | # env 9 | 10 | # Enable autocomplete for user 11 | cp /etc/skel/.bashrc ~/ 12 | 13 | # Check if srv folder exists 14 | if [ -d "$ROOT_SRV" ]; then 15 | # Setup Nav2 web app 16 | for dir in $OVERLAY_WS/src/navigation2/.devcontainer/caddy/srv/*; \ 17 | do if [ -d "$dir" ]; then ln -s "$dir" $ROOT_SRV; fi done 18 | fi 19 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # Repo 3 | 4 | .circleci/ 5 | .devcontainer/ 6 | .dockerignore 7 | .git/ 8 | .github/ 9 | .gitignore 10 | **.Dockerfile 11 | **Dockerfile 12 | doc/ 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Feature request 11 | 12 | #### Feature description 13 | 14 | 15 | #### Implementation considerations 16 | 17 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "docker" 4 | directory: "/" 5 | schedule: 6 | interval: "daily" 7 | commit-message: 8 | prefix: "🐳" 9 | - package-ecosystem: "github-actions" 10 | directory: "/" 11 | schedule: 12 | interval: "daily" 13 | commit-message: 14 | prefix: "🛠️" 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Compiled Dynamic libraries 12 | *.so 13 | *.dylib 14 | *.dll 15 | 16 | # Fortran module files 17 | *.mod 18 | *.smod 19 | 20 | # Compiled Static libraries 21 | *.lai 22 | *.la 23 | *.a 24 | *.lib 25 | 26 | # Executables 27 | *.exe 28 | *.out 29 | *.app 30 | 31 | # Colcon output 32 | build 33 | log 34 | install 35 | 36 | # Visual Studio Code files 37 | .vscode 38 | 39 | # Eclipse project files 40 | .cproject 41 | .project 42 | .pydevproject 43 | 44 | # Python artifacts 45 | __pycache__/ 46 | *.py[cod] 47 | .ipynb_checkpoints 48 | .pytest_cache/ 49 | 50 | sphinx_doc/_build 51 | 52 | # CLion artifacts 53 | .idea 54 | cmake-build-debug/ 55 | 56 | # doxygen docs 57 | doc/html/ 58 | # Vim Swap 59 | [._]*.s[a-v][a-z] 60 | [._]*.sw[a-p] 61 | [._]s[a-rt-v][a-z] 62 | [._]ss[a-gi-z] 63 | [._]sw[a-p] 64 | 65 | # Vim Persistent undo 66 | [._]*.un~ 67 | 68 | # Vim Session 69 | Session.vim 70 | 71 | # Vim Temporary 72 | .netrwhist 73 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Any contribution that you make to this repository will 2 | be under the Apache 2 License, as dictated by that 3 | [license](http://www.apache.org/licenses/LICENSE-2.0.html): 4 | 5 | ~~~ 6 | 5. Submission of Contributions. Unless You explicitly state otherwise, 7 | any Contribution intentionally submitted for inclusion in the Work 8 | by You to the Licensor shall be under the terms and conditions of 9 | this License, without any additional terms or conditions. 10 | Notwithstanding the above, nothing herein shall supersede or modify 11 | the terms of any separate license agreement you may have executed 12 | with Licensor regarding such Contributions. 13 | ~~~ 14 | 15 | Contributors must sign-off each commit by adding a `Signed-off-by: ...` 16 | line to commit messages to certify that they have the right to submit 17 | the code they are contributing to the project according to the 18 | [Developer Certificate of Origin (DCO)](https://developercertificate.org/). 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Portions of this repository are available under one of the following licenses 2 | 3 | SPDX-ID: 4 | * LGPL-2.1-or-later 5 | * Apache-2.0 6 | * BSD-3-Clause 7 | * Apache-2.0 AND BSD-3-Clause 8 | 9 | Please see the package.xml file for each package to see the specific license for 10 | that package. 11 | 12 | Contributions to existing files should be made under the license of that file. 13 | New files should be made under the first license listed in the appropriate 14 | package.xml file 15 | 16 | For files that are not otherwise marked, they are provided under the Apache-2.0 17 | license. 18 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | fixes: 2 | - "src/navigation2/::" 3 | - "install/::" 4 | 5 | ignore: 6 | - "*/**/test/*" # ignore package test directories, e.g. nav2_dwb_controller/costmap_queue/tests 7 | - "*/test/**/*" # ignore package test directories, e.g. nav2_costmap_2d/tests 8 | - "**/test_*.*" # ignore files starting with test_ e.g. nav2_map_server/test/test_constants.cpp 9 | - "**/*_tests.*" # ignore files ending with _tests e.g. nav2_voxel_grid/test/voxel_grid_tests.cpp 10 | - "*/**/benchmark/*" # ignore package test directories, e.g. nav2_dwb_controller/costmap_queue/tests 11 | - "*/benchmark/**/*" # ignore package test directories, e.g. nav2_costmap_2d/tests 12 | - "**/benchmark_*.*" # ignore files starting with test_ e.g. nav2_map_server/test/test_constants.cpp 13 | - "**/*_benchmark.*" # ignore files ending with _tests e.g. nav2_voxel_grid/test/voxel_grid_tests.cpp 14 | -------------------------------------------------------------------------------- /doc/README.md: -------------------------------------------------------------------------------- 1 | # ROS2 Navigation System Documentation 2 | This is where the ROS2 Navigation System documentation is being collected and vetted. 3 | 4 | # Use Cases 5 | See the [Use Cases README](use_cases/README.md) for info on our target use cases. 6 | 7 | # Requirements 8 | See the [Requirements document](requirements/requirements.md) for the current list of requirements. 9 | 10 | # Design Overview 11 | See the [Navigation 2 Overview](design/Navigation_2_Overview.pdf) file for the current design / architecture 12 | 13 | # Differences from ROS Navigation 14 | See the [ROS_COMPARISON](design/ROS_COMPARISON.md) file for an overview of the differences between this design and ROS1 Navigation (move_base) 15 | 16 | # Contributing 17 | To propose additions or changes to the design or requirements, please file an issue to initiate a discussion of the topic. Then, once the discussion has completed and the group has agreed to move forward on the item, you can submit a pull request and link to the issue. 18 | -------------------------------------------------------------------------------- /doc/architecture/Navigation-System.eap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/architecture/Navigation-System.eap -------------------------------------------------------------------------------- /doc/design/CostmapFilters_design.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/design/CostmapFilters_design.pdf -------------------------------------------------------------------------------- /doc/design/NavigationSystemTasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/design/NavigationSystemTasks.png -------------------------------------------------------------------------------- /doc/design/Navigation_2_Overview.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/design/Navigation_2_Overview.pdf -------------------------------------------------------------------------------- /doc/development/codespaces.md: -------------------------------------------------------------------------------- 1 | # Codespaces 2 | 3 | TODO: welcome and introduction 4 | 5 | # Overview 6 | 7 | TODO: document devcontainer 8 | TODO: reference extensions 9 | TODO: use of dockercompose and services 10 | 11 | # Terminal 12 | 13 | TODO: link to vscode terminal 14 | 15 | # Graphics and Simulations 16 | 17 | TODO: vnc options 18 | TODO: foxglove example 19 | TODO: gazebo example with gzweb 20 | 21 | # References 22 | 23 | TODO: links to more info 24 | -------------------------------------------------------------------------------- /doc/nav2_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/nav2_logo.png -------------------------------------------------------------------------------- /doc/requirements/_template_requirement.md: -------------------------------------------------------------------------------- 1 | # Requirement Title 2 | The \ should be able to \ \ 3 | 4 | ## More details 5 | - Why is this needed? 6 | - What is the expected user interaction? 7 | - What use case does this map to? 8 | - Are there any non-functional requirements (build system, tools, performance, etc) 9 | 10 | 11 | # Example: 12 | 13 | # Warehouse Navigation 14 | The navigation system should include a modular collision avoidance algorithm that can be replaced with a new algorithm at run time 15 | 16 | ## More details 17 | - I want to be able to write or use my own collision avoidance algorithm without having to re-compile the entire stack from source 18 | - Ideally I can just change out a node using a custom launch file 19 | - This maps to the "Collision Avoidance" use case 20 | -------------------------------------------------------------------------------- /doc/requirements/images/Command-Pipeline-Support.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/requirements/images/Command-Pipeline-Support.png -------------------------------------------------------------------------------- /doc/requirements/images/Command-Pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/requirements/images/Command-Pipeline.png -------------------------------------------------------------------------------- /doc/requirements/images/Command-Pipeline.vsdx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/requirements/images/Command-Pipeline.vsdx -------------------------------------------------------------------------------- /doc/requirements/images/Context.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/requirements/images/Context.png -------------------------------------------------------------------------------- /doc/requirements/images/Mapping-Use-Cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/requirements/images/Mapping-Use-Cases.png -------------------------------------------------------------------------------- /doc/requirements/images/Mission-Execution-Use-Cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/requirements/images/Mission-Execution-Use-Cases.png -------------------------------------------------------------------------------- /doc/requirements/images/Mission-Planning-Use-Cases.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/requirements/images/Mission-Planning-Use-Cases.png -------------------------------------------------------------------------------- /doc/requirements/images/Navigation-System.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/requirements/images/Navigation-System.png -------------------------------------------------------------------------------- /doc/requirements/images/With-Support-Modules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/requirements/images/With-Support-Modules.png -------------------------------------------------------------------------------- /doc/sponsors_feb_2024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/sponsors_feb_2024.png -------------------------------------------------------------------------------- /doc/sponsors_jan_2024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/sponsors_jan_2024.png -------------------------------------------------------------------------------- /doc/sponsors_jan_2025.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/sponsors_jan_2025.png -------------------------------------------------------------------------------- /doc/sponsors_may_2023.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/doc/sponsors_may_2023.png -------------------------------------------------------------------------------- /doc/use_cases/README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Target Use Cases 4 | The Nav2 system is targeting the following use cases: 5 | 6 | [2D Indoor Navigation](indoor_navigation_use_case.md) - example: Warehouse / Logistics robot 7 | 8 | 2D Navigation with Elevation - example: rescue robot navigating building with ramps and stairways 9 | 10 | 2D Navigation with Elevators - example: Room service robot 11 | 12 | [Outdoor Navigation](outdoor_navigation_use_case.md) 13 | 14 | ## Stretch Target 15 | 3D Navigation - Drones 16 | -------------------------------------------------------------------------------- /doc/use_cases/_template_use_case.md: -------------------------------------------------------------------------------- 1 | # Use Case Title 2 | As a \ I want the robot to \ so that \ can \ 3 | 4 | ## More details 5 | - Why is this needed? 6 | - What is the expected user interaction? 7 | - Are there any non-functional requirements? (build system, tools, performance, etc) 8 | 9 | # Example: 10 | 11 | # Collision Avoidance 12 | As a robot user, I want the robot to navigate without colliding into people or objects so that it doesn't hurt anyone or damage anything 13 | 14 | ## More details 15 | - Why is this needed? 16 | - I want this so that I know the robot won't damage itself, damage property or hurt anyone 17 | - Example: a logistics robot in a warehouse must avoid shelves, people, forklifts, and other robots 18 | - What is the expected user interaction? 19 | - I shouldn't have to interact with the robot to prevent it from crashing into people or things 20 | - Are there any non-functional requirements? (build system, tools, performance, etc) 21 | - The performance needs to be fast enough to avoid moving objects such as people walking or other moving robots 22 | -------------------------------------------------------------------------------- /doc/use_cases/collision_avoidance_use_case.md: -------------------------------------------------------------------------------- 1 | # Collision Avoidance 2 | As a Robot user I want to my robot to avoid colliding with people or objects so that it won't damage anything or hurt anyone 3 | 4 | ## More details 5 | - Why is this needed? 6 | - This is needed for indoor and outdoor robot navigation in most (all?) cases 7 | - Example: a robot in a warehouse should avoid colliding into the walls or shelving, and dynamically avoid people that cross its path 8 | 9 | - What is the expected user interaction? 10 | - The user should be able to walk in front of a robot and it should avoid crashing into that person 11 | 12 | - Are there any non-functional requirements? (build system, tools, performance, etc) 13 | -------------------------------------------------------------------------------- /doc/use_cases/indoor_localization_use_case.md: -------------------------------------------------------------------------------- 1 | # Indoor Localization 2 | As a Robot user I want my robot to know its location on a given map of an indoor area so that it can move around the area 3 | 4 | ## More details 5 | - Why is this needed? 6 | - This is needed for indoor robot navigation in most (all?) cases 7 | - Example: a courier robot in a logistics warehouse 8 | 9 | - What is the expected user interaction? 10 | - The user should be able to specify a map to use and a location on that map for the robot 11 | - The robot should be able to deduce it's own position on a map autonomously 12 | 13 | - Are there any non-functional requirements? (build system, tools, performance, etc) 14 | -------------------------------------------------------------------------------- /doc/use_cases/indoor_navigation_use_case.md: -------------------------------------------------------------------------------- 1 | # Indoor Navigation 2 | As a Robot user I want my robot to autonomously navigate to a given location on a given map so that it can help me at that location 3 | 4 | ## More details 5 | - Why is this needed? 6 | - This is needed for indoor robot navigation in most (all?) cases 7 | - Example: a courier robot in a logistics warehouse 8 | 9 | - What is the expected user interaction? 10 | - The user should be able to specify a map to use and a location on that map for the robot to move to. 11 | 12 | - Are there any non-functional requirements? (build system, tools, performance, etc) 13 | -------------------------------------------------------------------------------- /doc/use_cases/keep_out_zones_use_case.md: -------------------------------------------------------------------------------- 1 | # Keep Out Zones 2 | As a Robot user I want to be able to designate keep-out zones or areas on a map so that my robot will go around those areas instead of through them 3 | 4 | ## More details 5 | - Why is this needed? 6 | - This is needed for indoor/outdoor robot navigation in areas where there may be safety issues or hazards 7 | - Example: a courier robot in a logistics warehouse may be required to avoid areas where the forklift is unloading pallets from trucks 8 | 9 | - What is the expected user interaction? 10 | - The user should be able to specify keep out zones for the robot to avoid 11 | 12 | - Are there any non-functional requirements? (build system, tools, performance, etc) 13 | -------------------------------------------------------------------------------- /doc/use_cases/multi-story-building_use_case.md: -------------------------------------------------------------------------------- 1 | # Multi-story Building Navigation (2D+) 2 | As a Robot user I want my robot to be able to navigate stairways, ramps or elevators to move to another portion of the multi-story building so that it can do something useful 3 | 4 | ## More details 5 | - Why is this needed? 6 | - Example: a delivery robot in an office building 7 | 8 | - What is the expected user interaction? 9 | - The user should be able to specify stairways, ramps and elevators on a map for a robot to use or not use 10 | - via a GUI 11 | - via a config file or API so that it can be done by another program 12 | 13 | - Are there any non-functional requirements? (build system, tools, performance, etc) 14 | -------------------------------------------------------------------------------- /doc/use_cases/outdoor_localization_use_case.md: -------------------------------------------------------------------------------- 1 | # Outdoor Localization 2 | As a Robot user I want my robot to know its location on a given map of an outdoor area, such as a street or college campus, so that it can move around the area 3 | 4 | ## More details 5 | - Why is this needed? 6 | - This is needed for outdoor robot navigation in most (all?) cases 7 | - Example: a delivery robot on a college campus 8 | 9 | - What is the expected user interaction? 10 | - The user should be able to specify a map to use and a location on that map for the robot 11 | - The robot should be able to deduce it's own position on a map autonomously 12 | 13 | - Are there any non-functional requirements? (build system, tools, performance, etc) 14 | -------------------------------------------------------------------------------- /doc/use_cases/outdoor_navigation_use_case.md: -------------------------------------------------------------------------------- 1 | # Outdoor Navigation 2 | As a Robot user I want my robot to autonomously navigate to a given location on a given outdoor map, such as a college campus or street, so that it can do something useful at that location 3 | 4 | ## More details 5 | - Why is this needed? 6 | - This is needed for outdoor robot navigation in most (all?) cases 7 | - Example: a delivery robot on a college campus 8 | 9 | - What is the expected user interaction? 10 | - The user should be able to specify a map to use and a location on that map for the robot to move to. 11 | 12 | - Are there any non-functional requirements? (build system, tools, performance, etc) 13 | -------------------------------------------------------------------------------- /nav2_amcl/README.md: -------------------------------------------------------------------------------- 1 | # AMCL 2 | Adaptive Monte Carlo Localization (AMCL) is a probabilistic localization module which estimates the position and orientation (i.e. Pose) of a robot in a given known map using a 2D laser scanner. This is largely a refactored port from ROS 1 without any algorithmic changes. 3 | 4 | See the [Configuration Guide Page](https://docs.nav2.org/configuration/packages/configuring-amcl.html) for more details about configurable settings and their meanings. 5 | -------------------------------------------------------------------------------- /nav2_amcl/plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | This is a diff plugin. 4 | 5 | 6 | This is a omni plugin. 7 | 8 | 9 | -------------------------------------------------------------------------------- /nav2_amcl/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Intel Corporation 2 | // 3 | // This library is free software; you can redistribute it and/or 4 | // modify it under the terms of the GNU Lesser General Public 5 | // License as published by the Free Software Foundation; either 6 | // version 2.1 of the License, or (at your option) any later version. 7 | // 8 | // This library is distributed in the hope that it will be useful, 9 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 | // Lesser General Public License for more details. 12 | // 13 | // You should have received a copy of the GNU Lesser General Public 14 | // License along with this library; if not, write to the Free Software 15 | // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 16 | 17 | #include 18 | 19 | #include "nav2_amcl/amcl_node.hpp" 20 | #include "rclcpp/rclcpp.hpp" 21 | 22 | int main(int argc, char ** argv) 23 | { 24 | rclcpp::init(argc, argv); 25 | auto node = std::make_shared(); 26 | rclcpp::spin(node->get_node_base_interface()); 27 | rclcpp::shutdown(); 28 | 29 | return 0; 30 | } 31 | -------------------------------------------------------------------------------- /nav2_behavior_tree/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_behavior_tree/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_behavior_tree/doc/hierarchy.odg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_behavior_tree/doc/hierarchy.odg -------------------------------------------------------------------------------- /nav2_behavior_tree/groot_instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions on using Groot 2 | [Groot](https://github.com/BehaviorTree/Groot) is the companion application of [BehaviorTree.CPP](https://github.com/BehaviorTree/BehaviorTree.CPP) to create, edit, and monitor behavior trees. 3 | 4 | ##### Note: Currently fully supports visualization of the behavior trees. It also supports the creation of custom nodes except control flow nodes. Support for custom control flow nodes and real-time monitoring is under development. 5 | 6 | ### BehaviorTree visualization 7 | To visualize the behavior trees using Groot: 8 | 1. Open Groot in editor mode 9 | 2. Select the `Load palette from file` option (import button) near the top left corner. 10 | 3. Open the file `/path/to/nav2/nav2_behavior_tree/nav2_tree_nodes.xml` to import all the behavior tree nodes used for navigation. 11 | 4. Select `Load tree` option near the top left corner 12 | 5. Browse the tree you want to visualize the select ok. 13 | -------------------------------------------------------------------------------- /nav2_behavior_tree/plugins/condition/are_error_codes_present_condition.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2023 Joshua Wallace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include "nav2_behavior_tree/plugins/condition/are_error_codes_present_condition.hpp" 16 | 17 | #include "behaviortree_cpp/bt_factory.h" 18 | BT_REGISTER_NODES(factory) 19 | { 20 | factory.registerNodeType( 21 | "AreErrorCodesPresent"); 22 | } 23 | -------------------------------------------------------------------------------- /nav2_behavior_tree/plugins_list.hpp.in: -------------------------------------------------------------------------------- 1 | 2 | // This was automativally generated by cmake 3 | namespace nav2::details 4 | { 5 | const char* BT_BUILTIN_PLUGINS = "@plugin_libs@"; 6 | } 7 | -------------------------------------------------------------------------------- /nav2_behavior_tree/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(test_bt_utils test_bt_utils.cpp) 2 | target_link_libraries(test_bt_utils 3 | ${library_name} 4 | ${geometry_msgs_TARGETS} 5 | ) 6 | 7 | ament_add_gtest(test_json_utils test_json_utils.cpp) 8 | target_link_libraries(test_json_utils 9 | ${library_name} 10 | ${geometry_msgs_TARGETS} 11 | ) 12 | 13 | function(plugin_add_test target filename plugin) 14 | ament_add_gtest(${target} ${filename}) 15 | target_link_libraries(${target} 16 | ${geometry_msgs_TARGETS} 17 | nav2_util::nav2_util_core 18 | behaviortree_cpp::behaviortree_cpp 19 | ${library_name} 20 | ${plugin} 21 | ) 22 | target_include_directories(${target} 23 | PRIVATE 24 | "$") 25 | endfunction() 26 | 27 | add_subdirectory(plugins/condition) 28 | add_subdirectory(plugins/decorator) 29 | add_subdirectory(plugins/control) 30 | add_subdirectory(plugins/action) 31 | -------------------------------------------------------------------------------- /nav2_behavior_tree/test/plugins/control/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | plugin_add_test(test_control_recovery_node test_recovery_node.cpp nav2_recovery_node_bt_node) 2 | 3 | plugin_add_test(test_control_pipeline_sequence test_pipeline_sequence.cpp nav2_pipeline_sequence_bt_node) 4 | 5 | plugin_add_test(test_control_round_robin_node test_round_robin_node.cpp nav2_round_robin_node_bt_node) 6 | -------------------------------------------------------------------------------- /nav2_behavior_tree/test/plugins/decorator/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | plugin_add_test(test_decorator_distance_controller test_distance_controller.cpp nav2_distance_controller_bt_node) 2 | 3 | plugin_add_test(test_decorator_speed_controller test_speed_controller.cpp nav2_speed_controller_bt_node) 4 | 5 | plugin_add_test(test_decorator_rate_controller test_rate_controller.cpp nav2_rate_controller_bt_node) 6 | 7 | plugin_add_test(test_goal_updater_node test_goal_updater_node.cpp nav2_goal_updater_node_bt_node) 8 | 9 | plugin_add_test(test_single_trigger_node test_single_trigger_node.cpp nav2_single_trigger_bt_node) 10 | 11 | plugin_add_test(test_goal_updated_controller test_goal_updated_controller.cpp nav2_goal_updated_controller_bt_node) 12 | 13 | plugin_add_test(test_decorator_path_longer_on_approach test_path_longer_on_approach.cpp nav2_path_longer_on_approach_bt_node) 14 | -------------------------------------------------------------------------------- /nav2_behaviors/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_behaviors/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_behaviors/behavior_plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /nav2_behaviors/plugins/drive_on_heading.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Intel Corporation 2 | // Copyright (c) 2022 Joshua Wallace 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | #include 17 | #include "nav2_behaviors/plugins/drive_on_heading.hpp" 18 | 19 | #include "pluginlib/class_list_macros.hpp" 20 | PLUGINLIB_EXPORT_CLASS(nav2_behaviors::DriveOnHeading<>, nav2_core::Behavior) 21 | -------------------------------------------------------------------------------- /nav2_behaviors/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Intel Corporation 2 | // Copyright (c) 2019 Samsung Research America 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. Reserved. 15 | 16 | #include 17 | 18 | #include "nav2_behaviors/behavior_server.hpp" 19 | #include "rclcpp/rclcpp.hpp" 20 | 21 | int main(int argc, char ** argv) 22 | { 23 | rclcpp::init(argc, argv); 24 | auto recoveries_node = std::make_shared(); 25 | 26 | rclcpp::spin(recoveries_node->get_node_base_interface()); 27 | rclcpp::shutdown(); 28 | 29 | return 0; 30 | } 31 | -------------------------------------------------------------------------------- /nav2_behaviors/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(test_behaviors 2 | test_behaviors.cpp 3 | ) 4 | target_link_libraries(test_behaviors rclcpp::rclcpp rclcpp_action::rclcpp_action ${nav2_msgs_TARGETS} ${library_name}) 5 | -------------------------------------------------------------------------------- /nav2_bringup/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bringup/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_bringup/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(nav2_bringup) 3 | 4 | find_package(ament_cmake REQUIRED) 5 | find_package(nav2_common REQUIRED) 6 | find_package(navigation2 REQUIRED) 7 | 8 | nav2_package() 9 | 10 | install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}) 11 | install(DIRECTORY maps DESTINATION share/${PROJECT_NAME}) 12 | install(DIRECTORY graphs DESTINATION share/${PROJECT_NAME}) 13 | install(DIRECTORY rviz DESTINATION share/${PROJECT_NAME}) 14 | install(DIRECTORY params DESTINATION share/${PROJECT_NAME}) 15 | 16 | if(BUILD_TESTING) 17 | find_package(ament_lint_auto REQUIRED) 18 | ament_lint_auto_find_test_dependencies() 19 | endif() 20 | 21 | ament_package() 22 | -------------------------------------------------------------------------------- /nav2_bringup/maps/depot.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bringup/maps/depot.pgm -------------------------------------------------------------------------------- /nav2_bringup/maps/depot.yaml: -------------------------------------------------------------------------------- 1 | image: depot.pgm 2 | mode: trinary 3 | resolution: 0.05 4 | origin: [0.0, 0.0, 0] 5 | negate: 0 6 | occupied_thresh: 0.65 7 | free_thresh: 0.25 8 | -------------------------------------------------------------------------------- /nav2_bringup/maps/depot_keepout.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bringup/maps/depot_keepout.pgm -------------------------------------------------------------------------------- /nav2_bringup/maps/depot_keepout.yaml: -------------------------------------------------------------------------------- 1 | image: depot_keepout.pgm 2 | mode: trinary 3 | resolution: 0.05 4 | origin: [0.0, 0.0, 0] 5 | negate: 0 6 | occupied_thresh: 0.65 7 | free_thresh: 0.25 8 | -------------------------------------------------------------------------------- /nav2_bringup/maps/depot_speed.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bringup/maps/depot_speed.pgm -------------------------------------------------------------------------------- /nav2_bringup/maps/depot_speed.yaml: -------------------------------------------------------------------------------- 1 | image: depot_speed.pgm 2 | mode: scale 3 | resolution: 0.05 4 | origin: [0.0, 0.0, 0] 5 | negate: 0 6 | occupied_thresh: 1.0 7 | free_thresh: 0.0 8 | -------------------------------------------------------------------------------- /nav2_bringup/maps/tb3_sandbox.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bringup/maps/tb3_sandbox.pgm -------------------------------------------------------------------------------- /nav2_bringup/maps/tb3_sandbox.yaml: -------------------------------------------------------------------------------- 1 | image: tb3_sandbox.pgm 2 | resolution: 0.050000 3 | origin: [-10.000000, -10.000000, 0.000000] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | -------------------------------------------------------------------------------- /nav2_bringup/maps/warehouse.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bringup/maps/warehouse.pgm -------------------------------------------------------------------------------- /nav2_bringup/maps/warehouse.yaml: -------------------------------------------------------------------------------- 1 | image: warehouse.pgm 2 | mode: trinary 3 | resolution: 0.03 4 | origin: [-15.1, -25, 0] 5 | negate: 0 6 | occupied_thresh: 0.65 7 | free_thresh: 0.1 8 | -------------------------------------------------------------------------------- /nav2_bringup/maps/warehouse_keepout.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bringup/maps/warehouse_keepout.pgm -------------------------------------------------------------------------------- /nav2_bringup/maps/warehouse_keepout.yaml: -------------------------------------------------------------------------------- 1 | image: warehouse_keepout.pgm 2 | mode: trinary 3 | resolution: 0.03 4 | origin: [-15.1, -25, 0] 5 | negate: 0 6 | occupied_thresh: 0.65 7 | free_thresh: 0.1 8 | -------------------------------------------------------------------------------- /nav2_bringup/maps/warehouse_speed.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bringup/maps/warehouse_speed.pgm -------------------------------------------------------------------------------- /nav2_bringup/maps/warehouse_speed.yaml: -------------------------------------------------------------------------------- 1 | image: warehouse_speed.pgm 2 | mode: scale 3 | resolution: 0.03 4 | origin: [-15.1, -25, 0] 5 | negate: 0 6 | occupied_thresh: 1.0 7 | free_thresh: 0.0 8 | -------------------------------------------------------------------------------- /nav2_bt_navigator/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bt_navigator/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_bt_navigator/behavior_trees/navigate_w_replanning_distance.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /nav2_bt_navigator/behavior_trees/navigate_w_replanning_only_if_goal_is_updated.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /nav2_bt_navigator/behavior_trees/navigate_w_replanning_speed.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /nav2_bt_navigator/behavior_trees/navigate_w_replanning_time.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /nav2_bt_navigator/doc/follow_point.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bt_navigator/doc/follow_point.png -------------------------------------------------------------------------------- /nav2_bt_navigator/doc/legend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bt_navigator/doc/legend.png -------------------------------------------------------------------------------- /nav2_bt_navigator/doc/navigate_w_replanning_distance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bt_navigator/doc/navigate_w_replanning_distance.png -------------------------------------------------------------------------------- /nav2_bt_navigator/doc/navigate_w_replanning_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bt_navigator/doc/navigate_w_replanning_time.png -------------------------------------------------------------------------------- /nav2_bt_navigator/doc/parallel_w_goal_patience_and_recovery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bt_navigator/doc/parallel_w_goal_patience_and_recovery.png -------------------------------------------------------------------------------- /nav2_bt_navigator/doc/parallel_w_recovery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bt_navigator/doc/parallel_w_recovery.png -------------------------------------------------------------------------------- /nav2_bt_navigator/doc/recovery_node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bt_navigator/doc/recovery_node.png -------------------------------------------------------------------------------- /nav2_bt_navigator/doc/recovery_w_goal_updated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_bt_navigator/doc/recovery_w_goal_updated.png -------------------------------------------------------------------------------- /nav2_bt_navigator/navigator_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | Navigate to Pose Navigator 7 | 8 | 9 | 10 | 13 | Navigate through Poses Navigator 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /nav2_bt_navigator/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav2_bt_navigator 5 | 1.4.0 6 | Nav2 BT Navigator Server 7 | Michael Jeronimo 8 | Apache-2.0 9 | 10 | ament_cmake 11 | nav2_common 12 | 13 | ament_index_cpp 14 | geometry_msgs 15 | nav2_behavior_tree 16 | nav2_core 17 | nav2_msgs 18 | nav2_util 19 | nav_msgs 20 | pluginlib 21 | rclcpp 22 | rclcpp_action 23 | rclcpp_components 24 | rclcpp_lifecycle 25 | tf2_ros 26 | 27 | ament_lint_common 28 | ament_lint_auto 29 | 30 | 31 | ament_cmake 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /nav2_bt_navigator/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Intel Corporation 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "nav2_bt_navigator/bt_navigator.hpp" 18 | #include "rclcpp/rclcpp.hpp" 19 | 20 | int main(int argc, char ** argv) 21 | { 22 | rclcpp::init(argc, argv); 23 | auto node = std::make_shared(); 24 | rclcpp::spin(node->get_node_base_interface()); 25 | rclcpp::shutdown(); 26 | 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /nav2_collision_monitor/doc/HLD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_collision_monitor/doc/HLD.png -------------------------------------------------------------------------------- /nav2_collision_monitor/doc/cm_ros_devday.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_collision_monitor/doc/cm_ros_devday.png -------------------------------------------------------------------------------- /nav2_collision_monitor/doc/dexory_velocity_polygon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_collision_monitor/doc/dexory_velocity_polygon.gif -------------------------------------------------------------------------------- /nav2_collision_monitor/doc/polygons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_collision_monitor/doc/polygons.png -------------------------------------------------------------------------------- /nav2_collision_monitor/params/collision_detector_params.yaml: -------------------------------------------------------------------------------- 1 | collision_detector: 2 | ros__parameters: 3 | frequency: 10.0 4 | base_frame_id: "base_footprint" 5 | odom_frame_id: "odom" 6 | transform_tolerance: 0.5 7 | source_timeout: 5.0 8 | base_shift_correction: True 9 | polygons: ["PolygonFront"] 10 | PolygonFront: 11 | type: "polygon" 12 | points: "[[0.3, 0.3], [0.3, -0.3], [0.0, -0.3], [0.0, 0.3]]" 13 | action_type: "none" 14 | min_points: 4 15 | visualize: True 16 | polygon_pub_topic: "polygon_front" 17 | enabled: True 18 | observation_sources: ["scan"] 19 | scan: 20 | type: "scan" 21 | topic: "scan" 22 | enabled: True 23 | pointcloud: 24 | type: "pointcloud" 25 | topic: "/intel_realsense_r200_depth/points" 26 | min_height: 0.1 27 | max_height: 0.5 28 | enabled: True 29 | -------------------------------------------------------------------------------- /nav2_collision_monitor/src/collision_detector_main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2023 Pixel Robotics GmbH 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "rclcpp/rclcpp.hpp" 18 | 19 | #include "nav2_collision_monitor/collision_detector_node.hpp" 20 | 21 | int main(int argc, char * argv[]) 22 | { 23 | rclcpp::init(argc, argv); 24 | auto node = std::make_shared(); 25 | rclcpp::spin(node->get_node_base_interface()); 26 | rclcpp::shutdown(); 27 | 28 | return 0; 29 | } 30 | -------------------------------------------------------------------------------- /nav2_collision_monitor/src/collision_monitor_main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 Samsung R&D Institute Russia 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "rclcpp/rclcpp.hpp" 18 | 19 | #include "nav2_collision_monitor/collision_monitor_node.hpp" 20 | 21 | int main(int argc, char * argv[]) 22 | { 23 | rclcpp::init(argc, argv); 24 | auto node = std::make_shared(); 25 | rclcpp::spin(node->get_node_base_interface()); 26 | rclcpp::shutdown(); 27 | 28 | return 0; 29 | } 30 | -------------------------------------------------------------------------------- /nav2_common/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | 3 | project(nav2_common NONE) 4 | 5 | find_package(ament_cmake_core REQUIRED) 6 | find_package(ament_cmake_python REQUIRED) 7 | 8 | ament_python_install_package(nav2_common) 9 | 10 | ament_package( 11 | CONFIG_EXTRAS "nav2_common-extras.cmake" 12 | ) 13 | 14 | install( 15 | DIRECTORY cmake 16 | DESTINATION share/${PROJECT_NAME} 17 | ) 18 | 19 | install( 20 | DIRECTORY test 21 | DESTINATION share/${PROJECT_NAME} 22 | ) 23 | 24 | if(BUILD_TESTING) 25 | find_package(ament_cmake_test REQUIRED) 26 | find_package(ament_cmake_pytest REQUIRED) 27 | 28 | ament_add_pytest_test(test_rewritten_yaml test/test_rewritten_yaml.py 29 | ) 30 | endif() 31 | -------------------------------------------------------------------------------- /nav2_common/nav2_common-extras.cmake: -------------------------------------------------------------------------------- 1 | # Copyright 2019 Intel Corporation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | set(AMENT_BUILD_CONFIGURATION_KEYWORD_SEPARATOR ":") 16 | 17 | include("${nav2_common_DIR}/nav2_package.cmake") 18 | -------------------------------------------------------------------------------- /nav2_common/nav2_common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_common/nav2_common/__init__.py -------------------------------------------------------------------------------- /nav2_common/nav2_common/launch/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2019 Intel Corporation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from .has_node_params import HasNodeParams 16 | from .replace_string import ReplaceString 17 | from .rewritten_yaml import RewrittenYaml 18 | 19 | __all__ = [ 20 | 'HasNodeParams', 21 | 'RewrittenYaml', 22 | 'ReplaceString', 23 | ] 24 | -------------------------------------------------------------------------------- /nav2_common/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav2_common 5 | 1.4.0 6 | Common support functionality used throughout the navigation 2 stack 7 | Carl Delsey 8 | Apache-2.0 9 | 10 | launch 11 | launch_ros 12 | osrf_pycommon 13 | rclpy 14 | python3-yaml 15 | python3-types-pyyaml 16 | 17 | ament_cmake_core 18 | 19 | ament_cmake_python 20 | 21 | ament_cmake_core 22 | 23 | ament_cmake_test 24 | ament_cmake_pytest 25 | python3-pytest 26 | 27 | 28 | ament_cmake 29 | 30 | 31 | -------------------------------------------------------------------------------- /nav2_constrained_smoother/nav2_constrained_smoother.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Increases smoothness and distance from obstacles of a path using Ceres solver optimization 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /nav2_constrained_smoother/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(test_constrained_smoother 2 | test_constrained_smoother.cpp 3 | ) 4 | target_link_libraries(test_constrained_smoother 5 | ${library_name} 6 | angles::angles 7 | ${geometry_msgs_TARGETS} 8 | nav2_costmap_2d::nav2_costmap_2d_client 9 | nav2_costmap_2d::nav2_costmap_2d_core 10 | nav2_util::nav2_util_core 11 | rclcpp::rclcpp 12 | tf2_ros::tf2_ros 13 | ) 14 | 15 | ament_add_gtest(test_smoother_cost_function 16 | test_smoother_cost_function.cpp 17 | ) 18 | target_link_libraries(test_smoother_cost_function 19 | ${library_name} 20 | rclcpp::rclcpp 21 | ) 22 | -------------------------------------------------------------------------------- /nav2_controller/plugins/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(pctest progress_checker.cpp) 2 | target_link_libraries(pctest simple_progress_checker pose_progress_checker nav_2d_utils::conversions) 3 | 4 | ament_add_gtest(gctest goal_checker.cpp) 5 | target_link_libraries(gctest simple_goal_checker stopped_goal_checker nav_2d_utils::conversions) 6 | -------------------------------------------------------------------------------- /nav2_controller/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Intel Corporation 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "nav2_controller/controller_server.hpp" 18 | #include "rclcpp/rclcpp.hpp" 19 | 20 | int main(int argc, char ** argv) 21 | { 22 | rclcpp::init(argc, argv); 23 | auto node = std::make_shared(); 24 | rclcpp::spin(node->get_node_base_interface()); 25 | rclcpp::shutdown(); 26 | 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /nav2_controller/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Test dynamic parameters 2 | ament_add_gtest(test_dynamic_parameters 3 | test_dynamic_parameters.cpp 4 | ) 5 | target_link_libraries(test_dynamic_parameters 6 | ${library_name} 7 | nav2_util::nav2_util_core 8 | rclcpp::rclcpp 9 | ) 10 | -------------------------------------------------------------------------------- /nav2_core/README.md: -------------------------------------------------------------------------------- 1 | # Nav2 Core 2 | 3 | This package hosts the abstract interface (virtual base classes) for plugins to be used with the following: 4 | - navigators (e.g., `navigate_to_pose`) 5 | - global planner (e.g., `nav2_navfn_planner`) 6 | - controller (e.g., path execution controller, e.g `nav2_dwb_controller`) 7 | - smoother (e.g., `nav2_ceres_costaware_smoother`) 8 | - goal checker (e.g. `simple_goal_checker`) 9 | - behaviors (e.g. `drive_on_heading`) 10 | - progress checker (e.g. `simple_progress_checker`) 11 | - waypoint task executor (e.g. `take_pictures`) 12 | - exceptions in planning and control 13 | 14 | The purposes of these plugin interfaces are to create a separation of concern from the system software engineers and the researcher / algorithm designers. Each plugin type is hosted in a "task server" (e.g. planner, recovery, control servers) which handles requests and multiple algorithm plugin instances. The plugins are used to compute a value back to the server without having to worry about ROS 2 actions, topics, or other software utilities. A plugin designer can simply use the tools provided in the API to do their work, or create new ones if they like internally to gain additional information or capabilities. 15 | -------------------------------------------------------------------------------- /nav2_core/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav2_core 5 | 1.4.0 6 | A set of headers for plugins core to the Nav2 stack 7 | Steve Macenski 8 | Carl Delsey 9 | Apache-2.0 10 | 11 | ament_cmake 12 | nav2_common 13 | 14 | geometry_msgs 15 | nav2_behavior_tree 16 | nav2_costmap_2d 17 | nav2_util 18 | nav_msgs 19 | pluginlib 20 | rclcpp 21 | rclcpp_lifecycle 22 | tf2_ros 23 | 24 | ament_lint_common 25 | ament_lint_auto 26 | 27 | 28 | ament_cmake 29 | 30 | 31 | -------------------------------------------------------------------------------- /nav2_costmap_2d/CHANGELOG.rst: -------------------------------------------------------------------------------- 1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2 | Changelog for package nav2_costmap_2d 3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 4 | 5 | (2018-10-9) 6 | ------------------- 7 | * Port nav2_costmap_2d from costmap_2d version 1.16.2 (2018-07-31) 8 | -------------------------------------------------------------------------------- /nav2_costmap_2d/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(TEST_MAP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/map) 2 | set(TEST_LAUNCH_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test_launch_files) 3 | 4 | add_subdirectory(unit) 5 | add_subdirectory(integration) 6 | add_subdirectory(regression) 7 | -------------------------------------------------------------------------------- /nav2_costmap_2d/test/costmap_params.yaml: -------------------------------------------------------------------------------- 1 | global_frame: map 2 | robot_base_frame: base_link 3 | update_frequency: 5.0 4 | publish_frequency: 0.0 5 | static_map: true 6 | rolling_window: false 7 | 8 | #START VOXEL STUFF 9 | map_type: voxel 10 | origin_z: 0.0 11 | z_resolution: 0.2 12 | z_voxels: 10 13 | unknown_threshold: 10 14 | mark_threshold: 0 15 | #END VOXEL STUFF 16 | 17 | transform_tolerance: 0.3 18 | obstacle_max_range: 2.5 19 | obstacle_min_range: 0.0 20 | max_obstacle_height: 2.0 21 | raytrace_max_range: 3.0 22 | raytrace_min_range: 0.0 23 | footprint: [[-0.325, -0.325], [-0.325, 0.325], [0.325, 0.325], [0.46, 0.0], [0.325, -0.325]] 24 | #robot_radius: 0.46 25 | footprint_padding: 0.01 26 | inflation_radius: 0.55 27 | cost_scaling_factor: 10.0 28 | lethal_cost_threshold: 100 29 | observation_sources: base_scan 30 | base_scan: {data_type: LaserScan, expected_update_rate: 0.4, 31 | observation_persistence: 0.0, marking: true, clearing: true, max_obstacle_height: 0.4, min_obstacle_height: 0.08} 32 | -------------------------------------------------------------------------------- /nav2_costmap_2d/test/map/TenByTen.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_costmap_2d/test/map/TenByTen.pgm -------------------------------------------------------------------------------- /nav2_costmap_2d/test/map/TenByTen.yaml: -------------------------------------------------------------------------------- 1 | image: TenByTen.pgm 2 | resolution: 1.0 3 | origin: [0,0,0] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | -------------------------------------------------------------------------------- /nav2_costmap_2d/test/regression/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Bresenham2D corner cases test 2 | ament_add_gtest(costmap_bresenham_2d costmap_bresenham_2d.cpp) 3 | target_link_libraries(costmap_bresenham_2d 4 | nav2_costmap_2d_core 5 | ) 6 | 7 | # OrderLayer for checking Costmap2D plugins API calling order 8 | add_library(order_layer SHARED order_layer.cpp) 9 | target_link_libraries(order_layer PUBLIC 10 | nav2_costmap_2d_core 11 | ) 12 | install(TARGETS 13 | order_layer 14 | ARCHIVE DESTINATION lib 15 | LIBRARY DESTINATION lib 16 | RUNTIME DESTINATION bin 17 | ) 18 | 19 | # Costmap2D plugins API calling order test 20 | ament_add_gtest(plugin_api_order plugin_api_order.cpp) 21 | target_link_libraries(plugin_api_order 22 | nav2_costmap_2d_core 23 | ) 24 | -------------------------------------------------------------------------------- /nav2_costmap_2d/test/regression/order_layer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Plugin checking order of activate() and updateBounds()/updateCosts() calls 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /nav2_costmap_2d/test/simple_driving_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /nav2_costmap_2d/test/unit/keepout_filter_test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_costmap_2d/test/unit/keepout_filter_test.jpg -------------------------------------------------------------------------------- /nav2_docking/docs/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_docking/docs/demo.gif -------------------------------------------------------------------------------- /nav2_docking/docs/nv_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_docking/docs/nv_on.png -------------------------------------------------------------------------------- /nav2_docking/opennav_docking/README.md: -------------------------------------------------------------------------------- 1 | # Open Navigation's Nav2 Docking Server 2 | 3 | This package contains the docking server 4 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking/plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | A simple charging dock plugin. 5 | 6 | 7 | 8 | 9 | A simple non-charging dock plugin. 10 | 11 | 12 | 13 | 15 | Test dock plugin for failures in unit testing. 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2024 Open Navigation LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "opennav_docking/docking_server.hpp" 18 | #include "rclcpp/rclcpp.hpp" 19 | 20 | int main(int argc, char ** argv) 21 | { 22 | rclcpp::init(argc, argv); 23 | auto node = std::make_shared(); 24 | rclcpp::spin(node->get_node_base_interface()); 25 | rclcpp::shutdown(); 26 | 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking/test/dock_files/test_dock_bad_conversion_file.yaml: -------------------------------------------------------------------------------- 1 | docks: 2 | dock1: 3 | type: "dockv3" 4 | frame: "map" 5 | pose: [0.3, map, 0.0] 6 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking/test/dock_files/test_dock_bad_pose_file.yaml: -------------------------------------------------------------------------------- 1 | docks: 2 | dock1: 3 | type: "dockv3" 4 | frame: "mapA" 5 | pose: [0.3, 0.3] 6 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking/test/dock_files/test_dock_file.yaml: -------------------------------------------------------------------------------- 1 | docks: 2 | dock1: 3 | type: "dockv3" 4 | frame: "mapA" 5 | pose: [0.3, 0.3, 0.0] 6 | dock2: 7 | type: "dockv1" 8 | pose: [0.0, 0.0, 0.4] 9 | id: "2" 10 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking/test/dock_files/test_dock_no_pose_file.yaml: -------------------------------------------------------------------------------- 1 | docks: 2 | dock1: 3 | type: "dockv3" 4 | frame: "mapA" 5 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking/test/dock_files/test_dock_no_type_file.yaml: -------------------------------------------------------------------------------- 1 | docks: 2 | dock1: 3 | frame: "mapA" 4 | pose: [0.3, 0.3, 0.0] 5 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking/test/dock_files/test_no_docks_file.yaml: -------------------------------------------------------------------------------- 1 | no_docks: 2 | dock1: 3 | type: "dockv3" 4 | frame: "mapA" 5 | pose: [0.3, 0.3, 0.0] 6 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking/test/docking_params.yaml: -------------------------------------------------------------------------------- 1 | docking_server: 2 | ros__parameters: 3 | wait_charge_timeout: 1.0 4 | controller: 5 | use_collision_detection: False 6 | transform_tolerance: 0.5 7 | dock_plugins: [test_dock_plugin] 8 | test_dock_plugin: 9 | plugin: opennav_docking::SimpleChargingDock 10 | use_battery_status: True 11 | dock_direction: forward 12 | rotate_to_dock: False 13 | staging_yaw_offset: 0.0 14 | docks: [test_dock] 15 | test_dock: 16 | type: test_dock_plugin 17 | frame: odom 18 | pose: [10.0, 0.0, 0.0] 19 | tolerance: 0.5 20 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking_bt/README.md: -------------------------------------------------------------------------------- 1 | # Open Navigation's Docking BT Nodes & Examples 2 | 3 | Example BT XML files using the docking / undocking BT nodes 4 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking_bt/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | opennav_docking_bt 5 | 1.4.0 6 | A set of BT nodes and XMLs for docking 7 | Steve Macenski 8 | Apache-2.0 9 | 10 | ament_cmake 11 | nav2_common 12 | 13 | behaviortree_cpp 14 | geometry_msgs 15 | nav2_behavior_tree 16 | nav2_core 17 | nav2_msgs 18 | nav2_util 19 | nav_msgs 20 | rclcpp 21 | rclcpp_action 22 | 23 | ament_lint_common 24 | ament_lint_auto 25 | 26 | 27 | ament_cmake 28 | 29 | 30 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking_bt/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Cancel test 2 | ament_add_gtest(test_dock_robot test_dock_robot.cpp) 3 | target_link_libraries(test_dock_robot 4 | behaviortree_cpp::behaviortree_cpp 5 | ${geometry_msgs_TARGETS} 6 | ${nav2_msgs_TARGETS} 7 | opennav_dock_action_bt_node 8 | rclcpp::rclcpp 9 | rclcpp_action::rclcpp_action 10 | ) 11 | 12 | # Make command test 13 | ament_add_gtest(test_undock_robot test_undock_robot.cpp) 14 | target_link_libraries(test_undock_robot 15 | behaviortree_cpp::behaviortree_cpp 16 | ${geometry_msgs_TARGETS} 17 | ${nav2_msgs_TARGETS} 18 | opennav_undock_action_bt_node 19 | rclcpp::rclcpp 20 | rclcpp_action::rclcpp_action 21 | ) 22 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking_core/README.md: -------------------------------------------------------------------------------- 1 | # Open Navigation's Docking Plugin Headers 2 | 3 | The plugin interfaces for the docking framework 4 | -------------------------------------------------------------------------------- /nav2_docking/opennav_docking_core/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | opennav_docking_core 5 | 1.4.0 6 | A set of headers for plugins core to the opennav docking framework 7 | Steve Macenski 8 | Apache-2.0 9 | 10 | ament_cmake 11 | nav2_common 12 | 13 | geometry_msgs 14 | rclcpp_lifecycle 15 | tf2_ros 16 | 17 | ament_lint_common 18 | ament_lint_auto 19 | 20 | 21 | ament_cmake 22 | 23 | 24 | -------------------------------------------------------------------------------- /nav2_dwb_controller/costmap_queue/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | costmap_queue 4 | 1.4.0 5 | The costmap_queue package 6 | David V. Lu!! 7 | BSD-3-Clause 8 | 9 | ament_cmake 10 | nav2_common 11 | 12 | nav2_costmap_2d 13 | 14 | ament_cmake_gtest 15 | ament_lint_common 16 | ament_lint_auto 17 | rclcpp 18 | 19 | 20 | ament_cmake 21 | 22 | 23 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_core/local_planner_plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_core/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(utils_test utils_test.cpp) 2 | target_link_libraries(utils_test 3 | dwb_core 4 | ${dwb_msgs_TARGETS} 5 | ) 6 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_critics/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | dwb_critics 4 | 1.4.0 5 | The dwb_critics package 6 | David V. Lu!! 7 | BSD-3-Clause 8 | 9 | ament_cmake 10 | nav2_common 11 | 12 | angles 13 | costmap_queue 14 | dwb_core 15 | dwb_msgs 16 | geometry_msgs 17 | nav2_costmap_2d 18 | nav2_util 19 | nav_2d_msgs 20 | nav_2d_utils 21 | pluginlib 22 | rclcpp 23 | 24 | ament_cmake_gtest 25 | ament_lint_common 26 | ament_lint_auto 27 | 28 | 29 | ament_cmake 30 | 31 | 32 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_critics/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(prefer_forward_tests prefer_forward_test.cpp) 2 | target_link_libraries(prefer_forward_tests 3 | dwb_critics 4 | nav2_costmap_2d::nav2_costmap_2d_core 5 | nav2_util::nav2_util_core 6 | rclcpp::rclcpp 7 | ) 8 | 9 | ament_add_gtest(base_obstacle_tests base_obstacle_test.cpp) 10 | target_link_libraries(base_obstacle_tests 11 | dwb_critics 12 | dwb_core::dwb_core 13 | rclcpp::rclcpp 14 | ) 15 | 16 | ament_add_gtest(obstacle_footprint_tests obstacle_footprint_test.cpp) 17 | target_link_libraries(obstacle_footprint_tests 18 | dwb_critics 19 | dwb_core::dwb_core 20 | rclcpp::rclcpp 21 | ) 22 | 23 | ament_add_gtest(alignment_util_tests alignment_util_test.cpp) 24 | target_link_libraries(alignment_util_tests 25 | dwb_critics 26 | dwb_core::dwb_core 27 | rclcpp::rclcpp 28 | ) 29 | 30 | ament_add_gtest(twirling_tests twirling_test.cpp) 31 | target_link_libraries(twirling_tests 32 | dwb_critics 33 | dwb_core::dwb_core 34 | rclcpp::rclcpp 35 | ) 36 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(dwb_msgs) 3 | 4 | find_package(builtin_interfaces REQUIRED) 5 | find_package(geometry_msgs REQUIRED) 6 | find_package(nav_2d_msgs REQUIRED) 7 | find_package(nav_msgs REQUIRED) 8 | find_package(std_msgs REQUIRED) 9 | find_package(rosidl_default_generators REQUIRED) 10 | 11 | rosidl_generate_interfaces(dwb_msgs 12 | "msg/CriticScore.msg" 13 | "msg/LocalPlanEvaluation.msg" 14 | "msg/Trajectory2D.msg" 15 | "msg/TrajectoryScore.msg" 16 | "srv/DebugLocalPlan.srv" 17 | "srv/GenerateTrajectory.srv" 18 | "srv/GenerateTwists.srv" 19 | "srv/GetCriticScore.srv" 20 | "srv/ScoreTrajectory.srv" 21 | DEPENDENCIES geometry_msgs std_msgs nav_2d_msgs nav_msgs builtin_interfaces 22 | ) 23 | 24 | ament_export_dependencies(rosidl_default_runtime) 25 | 26 | ament_package() 27 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/msg/CriticScore.msg: -------------------------------------------------------------------------------- 1 | # The result from one critic scoring a Twist. 2 | # Name of the critic 3 | string name 4 | # Score for the critic, not multiplied by the scale 5 | float32 raw_score 6 | # Scale for the critic, multiplied by the raw_score and added to the total score 7 | float32 scale 8 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/msg/LocalPlanEvaluation.msg: -------------------------------------------------------------------------------- 1 | # Full Scoring for running the local planner 2 | 3 | # Header, used for timestamp 4 | std_msgs/Header header 5 | # All the trajectories evaluated and their scores 6 | TrajectoryScore[] twists 7 | # Convenience index of the best (lowest) score in the twists array 8 | uint16 best_index 9 | # Convenience index of the worst (highest) score in the twists array. Useful for scaling. 10 | uint16 worst_index 11 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/msg/Trajectory2D.msg: -------------------------------------------------------------------------------- 1 | # For a given velocity command, the poses that the robot will go to in the allotted time. 2 | 3 | # Input Velocity 4 | nav_2d_msgs/Twist2D velocity 5 | # Time difference between first and last poses 6 | builtin_interfaces/Duration[] time_offsets 7 | # Poses the robot will go to, given our kinematic model 8 | geometry_msgs/Pose2D[] poses 9 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/msg/TrajectoryScore.msg: -------------------------------------------------------------------------------- 1 | # Complete scoring for a given twist. 2 | 3 | # The trajectory being scored 4 | Trajectory2D traj 5 | # The Scores for each of the critics employed 6 | CriticScore[] scores 7 | # Convenience member that totals the critic scores 8 | float32 total 9 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | dwb_msgs 5 | 1.4.0 6 | Message/Service definitions specifically for the dwb_core 7 | David V. Lu!! 8 | BSD-3-Clause 9 | 10 | ament_cmake 11 | 12 | builtin_interfaces 13 | geometry_msgs 14 | nav_2d_msgs 15 | std_msgs 16 | nav_msgs 17 | rosidl_default_runtime 18 | 19 | rosidl_interface_packages 20 | 21 | 22 | ament_cmake 23 | 24 | 25 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/srv/DebugLocalPlan.srv: -------------------------------------------------------------------------------- 1 | # For a given pose velocity and global_plan, run the local planner and return full results 2 | nav_2d_msgs/Pose2DStamped pose 3 | nav_2d_msgs/Twist2D velocity 4 | nav_2d_msgs/Path2D global_plan 5 | --- 6 | LocalPlanEvaluation results 7 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/srv/GenerateTrajectory.srv: -------------------------------------------------------------------------------- 1 | # For a given start pose, velocity and desired velocity, generate which poses will be visited 2 | geometry_msgs/Pose2D start_pose 3 | nav_2d_msgs/Twist2D start_vel 4 | nav_2d_msgs/Twist2D cmd_vel 5 | --- 6 | Trajectory2D traj 7 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/srv/GenerateTwists.srv: -------------------------------------------------------------------------------- 1 | # For a given velocity, generate which twist commands will be evaluated 2 | nav_2d_msgs/Twist2D current_vel 3 | --- 4 | nav_2d_msgs/Twist2D[] twists 5 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/srv/GetCriticScore.srv: -------------------------------------------------------------------------------- 1 | nav_2d_msgs/Pose2DStamped pose 2 | nav_2d_msgs/Twist2D velocity 3 | nav_2d_msgs/Path2D global_plan 4 | Trajectory2D traj 5 | string critic_name 6 | --- 7 | CriticScore score 8 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_msgs/srv/ScoreTrajectory.srv: -------------------------------------------------------------------------------- 1 | nav_2d_msgs/Pose2DStamped pose 2 | nav_2d_msgs/Twist2D velocity 3 | nav_2d_msgs/Path2D global_plan 4 | Trajectory2D traj 5 | --- 6 | TrajectoryScore score 7 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_plugins/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | dwb_plugins 4 | 1.4.0 5 | 6 | Standard implementations of the GoalChecker 7 | and TrajectoryGenerators for dwb_core 8 | 9 | David V. Lu!! 10 | BSD-3-Clause 11 | 12 | ament_cmake 13 | nav2_common 14 | 15 | dwb_core 16 | dwb_msgs 17 | geometry_msgs 18 | nav2_util 19 | nav_2d_msgs 20 | nav_2d_utils 21 | pluginlib 22 | rclcpp 23 | rcl_interfaces 24 | 25 | ament_cmake_gtest 26 | ament_lint_common 27 | ament_lint_auto 28 | nav2_costmap_2d 29 | rclcpp_lifecycle 30 | 31 | 32 | ament_cmake 33 | 34 | 35 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_plugins/plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /nav2_dwb_controller/dwb_plugins/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(vtest velocity_iterator_test.cpp) 2 | target_link_libraries(vtest standard_traj_generator) 3 | 4 | ament_add_gtest(twist_gen_test twist_gen.cpp) 5 | target_link_libraries(twist_gen_test 6 | standard_traj_generator 7 | dwb_core::dwb_core 8 | ${dwb_msgs_TARGETS} 9 | ${geometry_msgs_TARGETS} 10 | nav2_util::nav2_util_core 11 | ${nav_2d_msgs_TARGETS} 12 | rclcpp::rclcpp 13 | rclcpp_lifecycle::rclcpp_lifecycle 14 | ) 15 | 16 | ament_add_gtest(kinematic_parameters_test kinematic_parameters_test.cpp) 17 | target_link_libraries(kinematic_parameters_test 18 | standard_traj_generator 19 | rclcpp::rclcpp 20 | ${rcl_interfaces_TARGETS} 21 | ) 22 | 23 | ament_add_gtest(speed_limit_test speed_limit_test.cpp) 24 | target_link_libraries(speed_limit_test 25 | standard_traj_generator 26 | nav2_costmap_2d::nav2_costmap_2d_core 27 | nav2_util::nav2_util_core 28 | rclcpp::rclcpp 29 | ) 30 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav2_dwb_controller/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_dwb_controller/nav2_dwb_controller/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_dwb_controller/nav2_dwb_controller/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(nav2_dwb_controller) 3 | 4 | find_package(ament_cmake REQUIRED) 5 | find_package(nav2_common REQUIRED) 6 | 7 | nav2_package() 8 | 9 | ament_package() 10 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav2_dwb_controller/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav2_dwb_controller 5 | 1.4.0 6 | 7 | ROS2 controller (DWB) metapackage 8 | 9 | Carl Delsey 10 | Steve Macenski 11 | Apache-2.0 12 | 13 | ament_cmake 14 | nav2_common 15 | 16 | costmap_queue 17 | dwb_core 18 | dwb_critics 19 | dwb_msgs 20 | dwb_plugins 21 | nav_2d_msgs 22 | nav_2d_utils 23 | 24 | 25 | ament_cmake 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav_2d_msgs/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(nav_2d_msgs) 3 | 4 | find_package(geometry_msgs REQUIRED) 5 | find_package(std_msgs REQUIRED) 6 | find_package(rosidl_default_generators REQUIRED) 7 | 8 | rosidl_generate_interfaces(nav_2d_msgs 9 | "msg/Path2D.msg" 10 | "msg/Pose2D32.msg" 11 | "msg/Pose2DStamped.msg" 12 | "msg/Twist2D.msg" 13 | "msg/Twist2D32.msg" 14 | "msg/Twist2DStamped.msg" 15 | DEPENDENCIES geometry_msgs std_msgs 16 | ) 17 | 18 | ament_export_dependencies(rosidl_default_runtime) 19 | 20 | ament_package() 21 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav_2d_msgs/msg/Path2D.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | geometry_msgs/Pose2D[] poses 3 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav_2d_msgs/msg/Pose2D32.msg: -------------------------------------------------------------------------------- 1 | float32 x 2 | float32 y 3 | float32 theta 4 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav_2d_msgs/msg/Pose2DStamped.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | geometry_msgs/Pose2D pose 3 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav_2d_msgs/msg/Twist2D.msg: -------------------------------------------------------------------------------- 1 | float64 x 2 | float64 y 3 | float64 theta 4 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav_2d_msgs/msg/Twist2D32.msg: -------------------------------------------------------------------------------- 1 | float32 x 2 | float32 y 3 | float32 theta 4 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav_2d_msgs/msg/Twist2DStamped.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | Twist2D velocity 3 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav_2d_msgs/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav_2d_msgs 5 | 1.4.0 6 | Basic message types for two dimensional navigation, extending from geometry_msgs::Pose2D. 7 | David V. Lu!! 8 | BSD-3-Clause 9 | 10 | rosidl_default_runtime 11 | 12 | ament_cmake 13 | 14 | geometry_msgs 15 | std_msgs 16 | rosidl_default_generators 17 | 18 | rosidl_interface_packages 19 | 20 | 21 | ament_cmake 22 | 23 | 24 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav_2d_utils/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav_2d_utils 5 | 1.4.0 6 | A handful of useful utility functions for nav_2d packages. 7 | David V. Lu!! 8 | BSD-3-Clause 9 | 10 | ament_cmake 11 | nav2_common 12 | 13 | geometry_msgs 14 | nav_2d_msgs 15 | nav_msgs 16 | nav2_msgs 17 | nav2_util 18 | rclcpp 19 | tf2 20 | tf2_geometry_msgs 21 | tf2_ros 22 | 23 | ament_lint_common 24 | ament_lint_auto 25 | ament_cmake_gtest 26 | 27 | 28 | ament_cmake 29 | 30 | 31 | -------------------------------------------------------------------------------- /nav2_dwb_controller/nav_2d_utils/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(2d_utils_tests 2d_utils_test.cpp) 2 | target_link_libraries(2d_utils_tests conversions) 3 | 4 | ament_add_gtest(path_ops_tests path_ops_test.cpp) 5 | target_link_libraries(path_ops_tests path_ops) 6 | 7 | ament_add_gtest(tf_help_tests tf_help_test.cpp) 8 | target_link_libraries(tf_help_tests tf_help conversions) 9 | -------------------------------------------------------------------------------- /nav2_graceful_controller/doc/trajectories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_graceful_controller/doc/trajectories.png -------------------------------------------------------------------------------- /nav2_graceful_controller/graceful_controller_plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Graceful controller for Nav2 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /nav2_graceful_controller/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_package(nav2_controller REQUIRED) 2 | 3 | # Tests for Graceful Controller 4 | ament_add_gtest(test_graceful_controller 5 | test_graceful_controller.cpp 6 | ) 7 | target_link_libraries(test_graceful_controller 8 | ${library_name} 9 | ${geometry_msgs_TARGETS} 10 | nav2_controller::simple_goal_checker 11 | nav2_core::nav2_core 12 | nav2_costmap_2d::nav2_costmap_2d_core 13 | nav2_util::nav2_util_core 14 | ${nav_msgs_TARGETS} 15 | rclcpp::rclcpp 16 | tf2_ros::tf2_ros 17 | ${visualization_msgs_TARGETS} 18 | ) 19 | 20 | # Egopolar test 21 | ament_add_gtest(test_egopolar 22 | test_egopolar.cpp 23 | ) 24 | target_link_libraries(test_egopolar 25 | ${library_name} 26 | ${geometry_msgs_TARGETS} 27 | rclcpp::rclcpp 28 | tf2_geometry_msgs::tf2_geometry_msgs 29 | ) 30 | -------------------------------------------------------------------------------- /nav2_lifecycle_manager/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_lifecycle_manager/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_lifecycle_manager/doc/diagram_lifecycle_manager.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_lifecycle_manager/doc/diagram_lifecycle_manager.JPG -------------------------------------------------------------------------------- /nav2_lifecycle_manager/doc/uml_lifecycle_manager.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_lifecycle_manager/doc/uml_lifecycle_manager.JPG -------------------------------------------------------------------------------- /nav2_lifecycle_manager/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Intel Corporation 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "nav2_lifecycle_manager/lifecycle_manager.hpp" 18 | #include "rclcpp/rclcpp.hpp" 19 | 20 | int main(int argc, char ** argv) 21 | { 22 | rclcpp::init(argc, argv); 23 | auto node = std::make_shared(); 24 | rclcpp::spin(node); 25 | rclcpp::shutdown(); 26 | 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /nav2_lifecycle_manager/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest_executable(test_lifecycle_gtest 2 | test_lifecycle_manager.cpp 3 | ) 4 | target_link_libraries(test_lifecycle_gtest 5 | ${library_name} 6 | nav2_util::nav2_util_core 7 | rclcpp::rclcpp 8 | rclcpp_lifecycle::rclcpp_lifecycle 9 | ) 10 | 11 | ament_add_test(test_lifecycle 12 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 13 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/launch_lifecycle_test.py" 14 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 15 | TIMEOUT 20 16 | ENV 17 | TEST_EXECUTABLE=$ 18 | ) 19 | 20 | ament_add_gtest_executable(test_bond_gtest 21 | test_bond.cpp 22 | ) 23 | target_link_libraries(test_bond_gtest 24 | ${library_name} 25 | nav2_util::nav2_util_core 26 | rclcpp::rclcpp 27 | ) 28 | 29 | ament_add_test(test_bond 30 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 31 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/launch_bond_test.py" 32 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 33 | TIMEOUT 20 34 | ENV 35 | TEST_EXECUTABLE=$ 36 | ) 37 | -------------------------------------------------------------------------------- /nav2_loopback_sim/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav2_loopback_sim 5 | 1.4.0 6 | A loopback simulator to replace physics simulation 7 | steve macenski 8 | Apache-2.0 9 | 10 | rclpy 11 | geometry_msgs 12 | nav_msgs 13 | tf_transformations 14 | tf2_ros 15 | python3-transforms3d 16 | 17 | ament_copyright 18 | ament_flake8 19 | ament_pep257 20 | python3-pytest 21 | 22 | 23 | ament_python 24 | 25 | 26 | -------------------------------------------------------------------------------- /nav2_loopback_sim/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | junit_family=xunit2 3 | -------------------------------------------------------------------------------- /nav2_loopback_sim/resource/nav2_loopback_sim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_loopback_sim/resource/nav2_loopback_sim -------------------------------------------------------------------------------- /nav2_loopback_sim/setup.cfg: -------------------------------------------------------------------------------- 1 | [develop] 2 | script_dir=$base/lib/nav2_loopback_sim 3 | [install] 4 | install_scripts=$base/lib/nav2_loopback_sim 5 | -------------------------------------------------------------------------------- /nav2_loopback_sim/setup.py: -------------------------------------------------------------------------------- 1 | from glob import glob 2 | import os 3 | 4 | from setuptools import setup 5 | 6 | package_name = 'nav2_loopback_sim' 7 | 8 | setup( 9 | name=package_name, 10 | version='1.0.0', 11 | packages=[package_name], 12 | data_files=[ 13 | ('share/ament_index/resource_index/packages', ['resource/' + package_name]), 14 | ('share/' + package_name, ['package.xml']), 15 | (os.path.join('share', package_name), glob('launch/*')), 16 | ], 17 | install_requires=['setuptools'], 18 | zip_safe=True, 19 | maintainer='stevemacenski', 20 | maintainer_email='steve@opennav.org', 21 | description='A loopback simulator to replace physics simulation', 22 | license='Apache-2.0', 23 | tests_require=['pytest'], 24 | entry_points={ 25 | 'console_scripts': [ 26 | 'loopback_simulator = nav2_loopback_sim.loopback_simulator:main', 27 | ], 28 | }, 29 | ) 30 | -------------------------------------------------------------------------------- /nav2_loopback_sim/test/test_copyright.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 Open Source Robotics Foundation, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from ament_copyright.main import main 16 | import pytest 17 | 18 | 19 | @pytest.mark.copyright 20 | @pytest.mark.linter 21 | def test_copyright() -> None: 22 | rc = main(argv=['.', 'test']) 23 | assert rc == 0, 'Found errors' 24 | -------------------------------------------------------------------------------- /nav2_loopback_sim/test/test_flake8.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 Open Source Robotics Foundation, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from ament_flake8.main import main_with_errors 16 | import pytest 17 | 18 | 19 | @pytest.mark.flake8 20 | @pytest.mark.linter 21 | def test_flake8() -> None: 22 | rc, errors = main_with_errors(argv=[]) 23 | assert rc == 0, f'Found {len(errors)} code style errors / warnings:\n' + \ 24 | '\n'.join(errors) 25 | -------------------------------------------------------------------------------- /nav2_loopback_sim/test/test_pep257.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 Open Source Robotics Foundation, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from ament_pep257.main import main 16 | import pytest 17 | 18 | 19 | @pytest.mark.linter 20 | @pytest.mark.pep257 21 | def test_pep257() -> None: 22 | rc = main(argv=['.', 'test']) 23 | assert rc == 0, 'Found code style errors / warnings' 24 | -------------------------------------------------------------------------------- /nav2_map_server/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_map_server/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_map_server/src/costmap_filter_info/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Samsung Research Russia 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "nav2_map_server/costmap_filter_info_server.hpp" 18 | #include "rclcpp/rclcpp.hpp" 19 | 20 | int main(int argc, char * argv[]) 21 | { 22 | auto logger = rclcpp::get_logger("costmap_filter_info_server"); 23 | 24 | RCLCPP_INFO(logger, "This is costmap filter info publisher"); 25 | 26 | rclcpp::init(argc, argv); 27 | auto node = std::make_shared(); 28 | rclcpp::spin(node->get_node_base_interface()); 29 | rclcpp::shutdown(); 30 | 31 | return 0; 32 | } 33 | -------------------------------------------------------------------------------- /nav2_map_server/src/map_saver/main_server.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2020 Samsung Research Russia 2 | // Copyright (c) 2018 Intel Corporation 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | #include 17 | #include 18 | #include 19 | 20 | #include "nav2_map_server/map_saver.hpp" 21 | #include "rclcpp/rclcpp.hpp" 22 | 23 | int main(int argc, char ** argv) 24 | { 25 | rclcpp::init(argc, argv); 26 | 27 | auto logger = rclcpp::get_logger("map_saver_server"); 28 | auto service_node = std::make_shared(); 29 | rclcpp::spin(service_node->get_node_base_interface()); 30 | rclcpp::shutdown(); 31 | return 0; 32 | } 33 | -------------------------------------------------------------------------------- /nav2_map_server/src/map_server/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Intel Corporation 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | #include 17 | #include 18 | 19 | #include "nav2_map_server/map_server.hpp" 20 | #include "rclcpp/rclcpp.hpp" 21 | 22 | int main(int argc, char ** argv) 23 | { 24 | std::string node_name("map_server"); 25 | 26 | rclcpp::init(argc, argv); 27 | auto node = std::make_shared(); 28 | rclcpp::spin(node->get_node_base_interface()); 29 | rclcpp::shutdown(); 30 | } 31 | -------------------------------------------------------------------------------- /nav2_map_server/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(TEST_LAUNCH_DIR ${CMAKE_CURRENT_SOURCE_DIR}/test_launch_files) 2 | set(TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}) 3 | 4 | add_definitions( -DTEST_DIRECTORY=\"${CMAKE_CURRENT_SOURCE_DIR}\") 5 | 6 | add_subdirectory(unit) 7 | add_subdirectory(component) 8 | add_subdirectory(map_saver_cli) 9 | -------------------------------------------------------------------------------- /nav2_map_server/test/invalid_image.yaml: -------------------------------------------------------------------------------- 1 | image: "invalid.png" 2 | resolution: 0.1 3 | origin: [2.0, 3.0, 1.0] 4 | occupied_thresh: 0.65 5 | free_thresh: 0.196 6 | negate: 0 7 | mode: "trinary" 8 | -------------------------------------------------------------------------------- /nav2_map_server/test/map_saver_cli/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # map_saver CLI 2 | ament_add_gtest(test_map_saver_cli 3 | test_map_saver_cli.cpp 4 | ${PROJECT_SOURCE_DIR}/test/test_constants.cpp 5 | ) 6 | target_link_libraries(test_map_saver_cli 7 | rclcpp::rclcpp 8 | ${nav_msgs_TARGETS} 9 | ) 10 | -------------------------------------------------------------------------------- /nav2_map_server/test/map_saver_params.yaml: -------------------------------------------------------------------------------- 1 | map_saver: 2 | ros__parameters: 3 | save_map_timeout: 5.0 4 | free_thresh_default: 0.196 5 | occupied_thresh_default: 0.65 6 | -------------------------------------------------------------------------------- /nav2_map_server/test/map_server_params.yaml: -------------------------------------------------------------------------------- 1 | map_server: 2 | ros__parameters: 3 | yaml_filename: "../testmap.yaml" 4 | -------------------------------------------------------------------------------- /nav2_map_server/test/testmap.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_map_server/test/testmap.bmp -------------------------------------------------------------------------------- /nav2_map_server/test/testmap.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_map_server/test/testmap.pgm -------------------------------------------------------------------------------- /nav2_map_server/test/testmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_map_server/test/testmap.png -------------------------------------------------------------------------------- /nav2_map_server/test/testmap.yaml: -------------------------------------------------------------------------------- 1 | image: "testmap.png" 2 | resolution: 0.1 3 | origin: [2.0, 3.0, 1.0] 4 | occupied_thresh: 0.65 5 | free_thresh: 0.196 6 | negate: 0 7 | mode: "trinary" 8 | -------------------------------------------------------------------------------- /nav2_map_server/test/unit/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # map_io unit test 2 | ament_add_gtest(test_map_io test_map_io.cpp ${PROJECT_SOURCE_DIR}/test/test_constants.cpp) 3 | target_include_directories(test_map_io 4 | PRIVATE 5 | "$") 6 | target_link_libraries(test_map_io 7 | rclcpp::rclcpp 8 | ${nav_msgs_TARGETS} 9 | ${map_io_library_name} 10 | ) 11 | 12 | # costmap_filter_info_server unit test 13 | ament_add_gtest(test_costmap_filter_info_server 14 | test_costmap_filter_info_server.cpp 15 | ) 16 | target_link_libraries(test_costmap_filter_info_server 17 | rclcpp::rclcpp 18 | ${library_name} 19 | ${map_io_library_name} 20 | ) 21 | -------------------------------------------------------------------------------- /nav2_mppi_controller/LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021-2022 Fast Sense Studio 4 | Copyright (c) 2022-2023 Samsung Research America 5 | Copyright (c) 2023 Open Navigation LLC 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all 15 | copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 23 | SOFTWARE. 24 | -------------------------------------------------------------------------------- /nav2_mppi_controller/benchmark/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | find_package(benchmark REQUIRED) 2 | 3 | set(BENCHMARK_NAMES 4 | optimizer_benchmark 5 | controller_benchmark 6 | ) 7 | 8 | foreach(name IN LISTS BENCHMARK_NAMES) 9 | add_executable(${name} 10 | ${name}.cpp 11 | ) 12 | target_link_libraries(${name} 13 | benchmark 14 | ${geometry_msgs_TARGETS} 15 | mppi_controller 16 | mppi_critics 17 | nav2_core::nav2_core 18 | nav2_costmap_2d::nav2_costmap_2d_core 19 | ${nav_msgs_TARGETS} 20 | ) 21 | 22 | target_include_directories(${name} PRIVATE 23 | ${PROJECT_SOURCE_DIR}/test/utils 24 | ) 25 | endforeach() 26 | -------------------------------------------------------------------------------- /nav2_mppi_controller/media/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_mppi_controller/media/demo.gif -------------------------------------------------------------------------------- /nav2_mppi_controller/mppic.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | MPPI Controller for Nav2 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /nav2_msgs/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_msgs/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_msgs/README.md: -------------------------------------------------------------------------------- 1 | # nav2_msgs 2 | 3 | The `nav2_msgs` package is a set of messages, services, and actions for the `Nav2` system. `Nav2` also makes use of the standard `nav_msgs`, where appropriate. 4 | -------------------------------------------------------------------------------- /nav2_msgs/action/AssistedTeleop.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | builtin_interfaces/Duration time_allowance 3 | --- 4 | #result definition 5 | 6 | # Error codes 7 | # Note: The expected priority order of the error should match the message order 8 | uint16 NONE=0 9 | uint16 UNKNOWN=730 10 | uint16 TIMEOUT=731 11 | uint16 TF_ERROR=732 12 | 13 | builtin_interfaces/Duration total_elapsed_time 14 | uint16 error_code 15 | string error_msg 16 | --- 17 | #feedback 18 | builtin_interfaces/Duration current_teleop_duration 19 | -------------------------------------------------------------------------------- /nav2_msgs/action/BackUp.action: -------------------------------------------------------------------------------- 1 | 2 | #goal definition 3 | geometry_msgs/Point target 4 | float32 speed 5 | builtin_interfaces/Duration time_allowance 6 | bool disable_collision_checks False 7 | --- 8 | #result definition 9 | 10 | # Error codes 11 | # Note: The expected priority order of the error should match the message order 12 | uint16 NONE=0 13 | uint16 UNKNOWN=710 14 | uint16 TIMEOUT=711 15 | uint16 TF_ERROR=712 16 | uint16 INVALID_INPUT=713 17 | uint16 COLLISION_AHEAD=714 18 | 19 | builtin_interfaces/Duration total_elapsed_time 20 | uint16 error_code 21 | string error_msg 22 | --- 23 | #feedback definition 24 | float32 distance_traveled 25 | -------------------------------------------------------------------------------- /nav2_msgs/action/ComputeAndTrackRoute.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | uint16 start_id 3 | geometry_msgs/PoseStamped start 4 | uint16 goal_id 5 | geometry_msgs/PoseStamped goal 6 | 7 | bool use_start # Whether to use the start field or find the start pose in TF 8 | bool use_poses # Whether to use the poses or the IDs fields for request 9 | --- 10 | #result definition 11 | 12 | # Error codes 13 | uint16 NONE=0 14 | uint16 UNKNOWN=400 15 | uint16 TF_ERROR=401 16 | uint16 NO_VALID_GRAPH=402 17 | uint16 INDETERMINANT_NODES_ON_GRAPH=403 18 | uint16 TIMEOUT=404 19 | uint16 NO_VALID_ROUTE=405 20 | uint16 OPERATION_FAILED=406 21 | uint16 INVALID_EDGE_SCORER_USE=407 22 | 23 | builtin_interfaces/Duration execution_duration 24 | uint16 error_code 0 25 | string error_msg 26 | --- 27 | #feedback definition 28 | uint16 last_node_id 29 | uint16 next_node_id 30 | uint16 current_edge_id 31 | Route route 32 | nav_msgs/Path path 33 | string[] operations_triggered 34 | bool rerouted 35 | -------------------------------------------------------------------------------- /nav2_msgs/action/ComputePathThroughPoses.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | nav_msgs/Goals goals 3 | geometry_msgs/PoseStamped start 4 | string planner_id 5 | bool use_start # If false, use current robot pose as path start, if true, use start above instead 6 | --- 7 | #result definition 8 | 9 | # Error codes 10 | # Note: The expected priority order of the errors should match the message order 11 | uint16 NONE=0 12 | uint16 UNKNOWN=300 13 | uint16 INVALID_PLANNER=301 14 | uint16 TF_ERROR=302 15 | uint16 START_OUTSIDE_MAP=303 16 | uint16 GOAL_OUTSIDE_MAP=304 17 | uint16 START_OCCUPIED=305 18 | uint16 GOAL_OCCUPIED=306 19 | uint16 TIMEOUT=307 20 | uint16 NO_VALID_PATH=308 21 | uint16 NO_VIAPOINTS_GIVEN=309 22 | 23 | nav_msgs/Path path 24 | builtin_interfaces/Duration planning_time 25 | uint16 error_code 26 | string error_msg 27 | --- 28 | #feedback definition 29 | -------------------------------------------------------------------------------- /nav2_msgs/action/ComputePathToPose.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | geometry_msgs/PoseStamped goal 3 | geometry_msgs/PoseStamped start 4 | string planner_id 5 | bool use_start # If false, use current robot pose as path start, if true, use start above instead 6 | --- 7 | #result definition 8 | 9 | # Error codes 10 | # Note: The expected priority order of the errors should match the message order 11 | uint16 NONE=0 12 | uint16 UNKNOWN=200 13 | uint16 INVALID_PLANNER=201 14 | uint16 TF_ERROR=202 15 | uint16 START_OUTSIDE_MAP=203 16 | uint16 GOAL_OUTSIDE_MAP=204 17 | uint16 START_OCCUPIED=205 18 | uint16 GOAL_OCCUPIED=206 19 | uint16 TIMEOUT=207 20 | uint16 NO_VALID_PATH=208 21 | 22 | nav_msgs/Path path 23 | builtin_interfaces/Duration planning_time 24 | uint16 error_code 25 | string error_msg 26 | --- 27 | #feedback definition 28 | -------------------------------------------------------------------------------- /nav2_msgs/action/ComputeRoute.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | uint16 start_id 3 | geometry_msgs/PoseStamped start 4 | uint16 goal_id 5 | geometry_msgs/PoseStamped goal 6 | 7 | bool use_start # Whether to use the start field or find the start pose in TF 8 | bool use_poses # Whether to use the poses or the IDs fields for request 9 | --- 10 | #result definition 11 | 12 | # Error codes 13 | uint16 NONE=0 14 | uint16 UNKNOWN=400 15 | uint16 TF_ERROR=401 16 | uint16 NO_VALID_GRAPH=402 17 | uint16 INDETERMINANT_NODES_ON_GRAPH=403 18 | uint16 TIMEOUT=404 19 | uint16 NO_VALID_ROUTE=405 20 | uint16 INVALID_EDGE_SCORER_USE=407 21 | 22 | builtin_interfaces/Duration planning_time 23 | nav_msgs/Path path 24 | Route route 25 | uint16 error_code 0 26 | string error_msg 27 | --- 28 | #feedback definition 29 | -------------------------------------------------------------------------------- /nav2_msgs/action/DriveOnHeading.action: -------------------------------------------------------------------------------- 1 | 2 | #goal definition 3 | geometry_msgs/Point target 4 | float32 speed 5 | builtin_interfaces/Duration time_allowance 6 | bool disable_collision_checks False 7 | --- 8 | #result definition 9 | 10 | # Error codes 11 | # Note: The expected priority order of the error should match the message order 12 | uint16 NONE=0 13 | uint16 UNKNOWN=720 14 | uint16 TIMEOUT=721 15 | uint16 TF_ERROR=722 16 | uint16 COLLISION_AHEAD=723 17 | uint16 INVALID_INPUT=724 18 | 19 | builtin_interfaces/Duration total_elapsed_time 20 | uint16 error_code 21 | string error_msg 22 | --- 23 | #feedback definition 24 | float32 distance_traveled 25 | -------------------------------------------------------------------------------- /nav2_msgs/action/DummyBehavior.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | std_msgs/String command 3 | --- 4 | #result definition 5 | builtin_interfaces/Duration total_elapsed_time 6 | uint16 error_code 7 | string error_msg 8 | --- 9 | #feedback definition 10 | -------------------------------------------------------------------------------- /nav2_msgs/action/FollowGPSWaypoints.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | uint32 number_of_loops 3 | uint32 goal_index 0 4 | geographic_msgs/GeoPose[] gps_poses 5 | --- 6 | #result definition 7 | 8 | # Error codes 9 | # Note: The expected priority order of the errors should match the message order 10 | uint16 NONE=0 11 | uint16 UNKNOWN=600 12 | uint16 TASK_EXECUTOR_FAILED=601 13 | uint16 NO_WAYPOINTS_GIVEN=602 14 | uint16 STOP_ON_MISSED_WAYPOINT=603 15 | 16 | WaypointStatus[] missed_waypoints 17 | int16 error_code 18 | string error_msg 19 | --- 20 | #feedback 21 | uint32 current_waypoint 22 | -------------------------------------------------------------------------------- /nav2_msgs/action/FollowPath.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | nav_msgs/Path path 3 | string controller_id 4 | string goal_checker_id 5 | string progress_checker_id 6 | --- 7 | #result definition 8 | 9 | # Error codes 10 | # Note: The expected priority order of the errors should match the message order 11 | uint16 NONE=0 12 | uint16 UNKNOWN=100 13 | uint16 INVALID_CONTROLLER=101 14 | uint16 TF_ERROR=102 15 | uint16 INVALID_PATH=103 16 | uint16 PATIENCE_EXCEEDED=104 17 | uint16 FAILED_TO_MAKE_PROGRESS=105 18 | uint16 NO_VALID_CONTROL=106 19 | uint16 CONTROLLER_TIMED_OUT=107 20 | 21 | std_msgs/Empty result 22 | uint16 error_code 23 | string error_msg 24 | --- 25 | #feedback definition 26 | float32 distance_to_goal 27 | float32 speed 28 | -------------------------------------------------------------------------------- /nav2_msgs/action/FollowWaypoints.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | uint32 number_of_loops 3 | uint32 goal_index 0 4 | geometry_msgs/PoseStamped[] poses 5 | --- 6 | #result definition 7 | 8 | # Error codes 9 | # Note: The expected priority order of the errors should match the message order 10 | uint16 NONE=0 11 | uint16 UNKNOWN=600 12 | uint16 TASK_EXECUTOR_FAILED=601 13 | uint16 NO_VALID_WAYPOINTS=602 14 | uint16 STOP_ON_MISSED_WAYPOINT=603 15 | 16 | WaypointStatus[] missed_waypoints 17 | uint16 error_code 18 | string error_msg 19 | --- 20 | #feedback definition 21 | uint32 current_waypoint 22 | -------------------------------------------------------------------------------- /nav2_msgs/action/NavigateThroughPoses.action: -------------------------------------------------------------------------------- 1 | 2 | #goal definition 3 | nav_msgs/Goals poses 4 | string behavior_tree 5 | --- 6 | #result definition 7 | 8 | # Error codes 9 | # Note: The expected priority order of the errors should match the message order 10 | uint16 NONE=0 11 | uint16 UNKNOWN=9100 12 | uint16 FAILED_TO_LOAD_BEHAVIOR_TREE=9101 13 | uint16 TF_ERROR=9102 14 | uint16 TIMEOUT=9103 15 | 16 | uint16 error_code 17 | string error_msg 18 | WaypointStatus[] waypoint_statuses 19 | --- 20 | #feedback definition 21 | geometry_msgs/PoseStamped current_pose 22 | builtin_interfaces/Duration navigation_time 23 | builtin_interfaces/Duration estimated_time_remaining 24 | int16 number_of_recoveries 25 | float32 distance_remaining 26 | int16 number_of_poses_remaining 27 | WaypointStatus[] waypoint_statuses 28 | -------------------------------------------------------------------------------- /nav2_msgs/action/NavigateToPose.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | geometry_msgs/PoseStamped pose 3 | string behavior_tree 4 | --- 5 | #result definition 6 | 7 | # Error codes 8 | # Note: The expected priority order of the errors should match the message order 9 | uint16 NONE=0 10 | uint16 UNKNOWN=9000 11 | uint16 FAILED_TO_LOAD_BEHAVIOR_TREE=9001 12 | uint16 TF_ERROR=9002 13 | uint16 TIMEOUT=9003 14 | 15 | uint16 error_code 16 | string error_msg 17 | --- 18 | #feedback definition 19 | geometry_msgs/PoseStamped current_pose 20 | builtin_interfaces/Duration navigation_time 21 | builtin_interfaces/Duration estimated_time_remaining 22 | int16 number_of_recoveries 23 | float32 distance_remaining 24 | -------------------------------------------------------------------------------- /nav2_msgs/action/SmoothPath.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | nav_msgs/Path path 3 | string smoother_id 4 | builtin_interfaces/Duration max_smoothing_duration 5 | bool check_for_collisions 6 | --- 7 | #result definition 8 | 9 | # Error codes 10 | # Note: The expected priority order of the errors should match the message order 11 | uint16 NONE=0 12 | uint16 UNKNOWN=500 13 | uint16 INVALID_SMOOTHER=501 14 | uint16 TIMEOUT=502 15 | uint16 SMOOTHED_PATH_IN_COLLISION=503 16 | uint16 FAILED_TO_SMOOTH_PATH=504 17 | uint16 INVALID_PATH=505 18 | 19 | nav_msgs/Path path 20 | builtin_interfaces/Duration smoothing_duration 21 | bool was_completed 22 | uint16 error_code 23 | string error_msg 24 | --- 25 | #feedback definition 26 | -------------------------------------------------------------------------------- /nav2_msgs/action/Spin.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | float32 target_yaw 3 | builtin_interfaces/Duration time_allowance 4 | bool disable_collision_checks False 5 | --- 6 | #result definition 7 | 8 | # Error codes 9 | # Note: The expected priority order of the error should match the message order 10 | uint16 NONE=0 11 | uint16 UNKNOWN=700 12 | uint16 TIMEOUT=701 13 | uint16 TF_ERROR=702 14 | uint16 COLLISION_AHEAD=703 15 | 16 | builtin_interfaces/Duration total_elapsed_time 17 | uint16 error_code 18 | string error_msg 19 | --- 20 | #feedback definition 21 | float32 angular_distance_traveled 22 | -------------------------------------------------------------------------------- /nav2_msgs/action/UndockRobot.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | 3 | # If initialized on a dock so the server doesn't know what type of dock its on, 4 | # you must specify what dock it is to know where to stage for undocking. 5 | # If only one type of dock plugin is present, it is not necessary to set. 6 | # If not set & server instance was used to dock, server will use current dock information from last docking request. 7 | string dock_type 8 | 9 | float32 max_undocking_time 30.0 # Maximum time to undock 10 | 11 | --- 12 | #result definition 13 | 14 | # Error codes 15 | # Note: The expected priority order of the errors should match the message order 16 | uint16 NONE=0 17 | uint16 DOCK_NOT_VALID=902 18 | uint16 FAILED_TO_CONTROL=905 19 | uint16 TIMEOUT=907 20 | uint16 UNKNOWN=999 21 | 22 | bool success True # docking success status 23 | uint16 error_code 0 # Contextual error code, if any 24 | string error_msg 25 | --- 26 | #feedback definition 27 | -------------------------------------------------------------------------------- /nav2_msgs/action/Wait.action: -------------------------------------------------------------------------------- 1 | #goal definition 2 | builtin_interfaces/Duration time 3 | --- 4 | #result definition 5 | builtin_interfaces/Duration total_elapsed_time 6 | uint16 error_code 7 | string error_msg 8 | 9 | uint16 NONE=0 10 | uint16 UNKNOWN=740 11 | uint16 TIMEOUT=741 12 | --- 13 | #feedback definition 14 | builtin_interfaces/Duration time_left 15 | -------------------------------------------------------------------------------- /nav2_msgs/msg/BehaviorTreeLog.msg: -------------------------------------------------------------------------------- 1 | builtin_interfaces/Time timestamp # ROS time that this log message was sent. 2 | BehaviorTreeStatusChange[] event_log 3 | -------------------------------------------------------------------------------- /nav2_msgs/msg/BehaviorTreeStatusChange.msg: -------------------------------------------------------------------------------- 1 | builtin_interfaces/Time timestamp # internal behavior tree event timestamp. Typically this is wall clock time 2 | string node_name 3 | uint16 uid # unique ID for this node 4 | string previous_status # IDLE, RUNNING, SUCCESS or FAILURE 5 | string current_status # IDLE, RUNNING, SUCCESS or FAILURE 6 | -------------------------------------------------------------------------------- /nav2_msgs/msg/CollisionDetectorState.msg: -------------------------------------------------------------------------------- 1 | # Name of configured polygons 2 | string[] polygons 3 | # List of detections for each polygon 4 | bool[] detections 5 | -------------------------------------------------------------------------------- /nav2_msgs/msg/CollisionMonitorState.msg: -------------------------------------------------------------------------------- 1 | # Action type for robot in Collision Monitor 2 | uint8 DO_NOTHING=0 # No action 3 | uint8 STOP=1 # Stop the robot 4 | uint8 SLOWDOWN=2 # Slowdown in percentage from current operating speed 5 | uint8 APPROACH=3 # Keep constant time interval before collision 6 | uint8 LIMIT=4 # Sets a limit of velocities if pts in range 7 | uint8 action_type 8 | 9 | # Name of triggered polygon 10 | string polygon_name 11 | -------------------------------------------------------------------------------- /nav2_msgs/msg/Costmap.msg: -------------------------------------------------------------------------------- 1 | # This represents a 2-D grid map, in which each cell has an associated cost 2 | 3 | std_msgs/Header header 4 | 5 | # MetaData for the map 6 | CostmapMetaData metadata 7 | 8 | # The cost data, in row-major order, starting with (0,0). 9 | uint8[] data 10 | -------------------------------------------------------------------------------- /nav2_msgs/msg/CostmapFilterInfo.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | # Type of plugin used (keepout filter, speed limit in m/s, speed limit in percent, etc...) 3 | # 0: keepout/lanes filter 4 | # 1: speed limit filter in % of maximum speed 5 | # 2: speed limit filter in absolute values (m/s) 6 | uint8 type 7 | # Name of filter mask topic 8 | string filter_mask_topic 9 | # Multiplier base offset and multiplier coefficient for conversion of OccGrid. 10 | # Used to convert OccupancyGrid data values to filter space values. 11 | # data -> into some other number space: 12 | # space = data * multiplier + base 13 | float32 base 14 | float32 multiplier 15 | -------------------------------------------------------------------------------- /nav2_msgs/msg/CostmapMetaData.msg: -------------------------------------------------------------------------------- 1 | # This hold basic information about the characteristics of the Costmap 2 | 3 | # The time at which the static map was loaded 4 | builtin_interfaces/Time map_load_time 5 | 6 | # The time of the last update to costmap 7 | builtin_interfaces/Time update_time 8 | 9 | # The corresponding layer name 10 | string layer 11 | 12 | # The map resolution [m/cell] 13 | float32 resolution 14 | 15 | # Number of cells in the horizontal direction 16 | uint32 size_x 17 | 18 | # Number of cells in the vertical direction 19 | uint32 size_y 20 | 21 | # The origin of the costmap [m, m, rad]. 22 | # This is the real-world pose of the cell (0,0) in the map. 23 | geometry_msgs/Pose origin 24 | -------------------------------------------------------------------------------- /nav2_msgs/msg/CostmapUpdate.msg: -------------------------------------------------------------------------------- 1 | # Update msg for Costmap containing the modified part of Costmap 2 | std_msgs/Header header 3 | 4 | uint32 x 5 | uint32 y 6 | 7 | uint32 size_x 8 | uint32 size_y 9 | 10 | # The cost data, in row-major order, starting with (x,y) from 0-255 in Costmap format rather than OccupancyGrid 0-100. 11 | uint8[] data 12 | -------------------------------------------------------------------------------- /nav2_msgs/msg/EdgeCost.msg: -------------------------------------------------------------------------------- 1 | # Edge cost to use with nav2_msgs/srv/DynamicEdges to adjust route edge costs 2 | uint16 edgeid 3 | float32 cost 4 | -------------------------------------------------------------------------------- /nav2_msgs/msg/Particle.msg: -------------------------------------------------------------------------------- 1 | # This represents an individual particle with weight produced by a particle filter 2 | 3 | geometry_msgs/Pose pose 4 | 5 | float64 weight 6 | -------------------------------------------------------------------------------- /nav2_msgs/msg/ParticleCloud.msg: -------------------------------------------------------------------------------- 1 | # This represents a particle cloud containing particle poses and weights 2 | 3 | std_msgs/Header header 4 | 5 | # Array of particles in the cloud 6 | Particle[] particles 7 | -------------------------------------------------------------------------------- /nav2_msgs/msg/Route.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | float32 route_cost 3 | RouteNode[] nodes # ordered set of nodes of the route 4 | RouteEdge[] edges # ordered set of edges that connect nodes 5 | -------------------------------------------------------------------------------- /nav2_msgs/msg/RouteEdge.msg: -------------------------------------------------------------------------------- 1 | uint16 edgeid 2 | geometry_msgs/Point start 3 | geometry_msgs/Point end 4 | -------------------------------------------------------------------------------- /nav2_msgs/msg/RouteNode.msg: -------------------------------------------------------------------------------- 1 | uint16 nodeid 2 | geometry_msgs/Point position 3 | -------------------------------------------------------------------------------- /nav2_msgs/msg/SpeedLimit.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | # Setting speed limit in percentage if true or in absolute values in false case 3 | bool percentage 4 | # Maximum allowed speed (in percent of maximum robot speed or in m/s depending 5 | # on "percentage" value). When no-limit it is set to 0.0 6 | float64 speed_limit 7 | -------------------------------------------------------------------------------- /nav2_msgs/msg/Trajectory.msg: -------------------------------------------------------------------------------- 1 | # An array of trajectory points that represents a trajectory for a robot to follow. 2 | 3 | # Indicates the frame_id of the trajectory. 4 | std_msgs/Header header 5 | 6 | # Array of trajectory points to follow. 7 | TrajectoryPoint[] points 8 | -------------------------------------------------------------------------------- /nav2_msgs/msg/TrajectoryPoint.msg: -------------------------------------------------------------------------------- 1 | # Trajectory point state 2 | 3 | # Desired time from the trajectory start to arrive at this trajectory sample. 4 | builtin_interfaces/Duration time_from_start 5 | 6 | # Pose of the trajectory sample. 7 | geometry_msgs/Pose pose 8 | 9 | # Velocity of the trajectory sample. 10 | geometry_msgs/Twist velocity 11 | 12 | # Acceleration of the trajectory (optional). 13 | geometry_msgs/Accel acceleration 14 | 15 | # Force/Torque to apply at trajectory sample (optional). 16 | geometry_msgs/Wrench effort 17 | -------------------------------------------------------------------------------- /nav2_msgs/msg/VoxelGrid.msg: -------------------------------------------------------------------------------- 1 | std_msgs/Header header 2 | uint32[] data 3 | geometry_msgs/Point32 origin 4 | geometry_msgs/Vector3 resolutions 5 | uint32 size_x 6 | uint32 size_y 7 | uint32 size_z 8 | -------------------------------------------------------------------------------- /nav2_msgs/msg/WaypointStatus.msg: -------------------------------------------------------------------------------- 1 | # Waypoint state for multi-goal navigation or waypoint following 2 | uint8 PENDING=0 # Waypoint is not processed or processing 3 | uint8 COMPLETED=1 # Waypoint is completed 4 | uint8 SKIPPED=2 # Waypoint is skipped 5 | uint8 FAILED=3 # Waypoint is failed 6 | uint8 waypoint_status 7 | uint32 waypoint_index 8 | geometry_msgs/PoseStamped waypoint_pose 9 | uint16 error_code 10 | string error_msg 11 | -------------------------------------------------------------------------------- /nav2_msgs/msg/__init__.py: -------------------------------------------------------------------------------- 1 | from nav2_msgs.msg._behavior_tree_log import BehaviorTreeLog 2 | from nav2_msgs.msg._behavior_tree_status_change import BehaviorTreeStatusChange 3 | from nav2_msgs.msg._collision_detector_state import CollisionDetectorState 4 | from nav2_msgs.msg._collision_monitor_state import CollisionMonitorState 5 | from nav2_msgs.msg._costmap import Costmap 6 | from nav2_msgs.msg._costmap_filter_info import CostmapFilterInfo 7 | from nav2_msgs.msg._costmap_meta_data import CostmapMetaData 8 | from nav2_msgs.msg._costmap_update import CostmapUpdate 9 | from nav2_msgs.msg._missed_waypoint import MissedWaypoint 10 | from nav2_msgs.msg._particle import Particle 11 | from nav2_msgs.msg._particle_cloud import ParticleCloud 12 | from nav2_msgs.msg._route import Route 13 | from nav2_msgs.msg._speed_limit import SpeedLimit 14 | from nav2_msgs.msg._voxel_grid import VoxelGrid 15 | 16 | __all__ = [ 17 | 'BehaviorTreeLog', 18 | 'BehaviorTreeStatusChange', 19 | 'CollisionDetectorState', 20 | 'CollisionMonitorState', 21 | 'Costmap', 22 | 'CostmapFilterInfo', 23 | 'CostmapMetaData', 24 | 'CostmapUpdate', 25 | 'MissedWaypoint', 26 | 'Particle', 27 | 'ParticleCloud', 28 | 'Route', 29 | 'SpeedLimit', 30 | 'VoxelGrid', 31 | ] 32 | -------------------------------------------------------------------------------- /nav2_msgs/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav2_msgs 5 | 1.4.0 6 | Messages and service files for the Nav2 stack 7 | Michael Jeronimo 8 | Steve Macenski 9 | Carlos Orduno 10 | Apache-2.0 11 | 12 | ament_cmake 13 | nav2_common 14 | 15 | rclcpp 16 | std_msgs 17 | builtin_interfaces 18 | rosidl_default_generators 19 | geometry_msgs 20 | action_msgs 21 | nav_msgs 22 | geographic_msgs 23 | 24 | rosidl_interface_packages 25 | 26 | 27 | ament_cmake 28 | 29 | 30 | -------------------------------------------------------------------------------- /nav2_msgs/srv/ClearCostmapAroundRobot.srv: -------------------------------------------------------------------------------- 1 | # Clears the costmap within a distance 2 | 3 | float32 reset_distance 4 | --- 5 | std_msgs/Empty response 6 | -------------------------------------------------------------------------------- /nav2_msgs/srv/ClearCostmapExceptRegion.srv: -------------------------------------------------------------------------------- 1 | # Clears the costmap except a rectangular region specified by reset_distance 2 | 3 | float32 reset_distance 4 | --- 5 | std_msgs/Empty response 6 | -------------------------------------------------------------------------------- /nav2_msgs/srv/ClearEntireCostmap.srv: -------------------------------------------------------------------------------- 1 | # Clears all layers on the costmap 2 | 3 | std_msgs/Empty request 4 | --- 5 | std_msgs/Empty response 6 | -------------------------------------------------------------------------------- /nav2_msgs/srv/DynamicEdges.srv: -------------------------------------------------------------------------------- 1 | uint16[] closed_edges 2 | uint16[] opened_edges 3 | EdgeCost[] adjust_edges 4 | --- 5 | bool success 6 | -------------------------------------------------------------------------------- /nav2_msgs/srv/GetCostmap.srv: -------------------------------------------------------------------------------- 1 | # Get the costmap 2 | 3 | # Specifications for the requested costmap 4 | nav2_msgs/CostmapMetaData specs 5 | --- 6 | nav2_msgs/Costmap map 7 | -------------------------------------------------------------------------------- /nav2_msgs/srv/GetCosts.srv: -------------------------------------------------------------------------------- 1 | # Get costmap costs at given poses 2 | 3 | bool use_footprint 4 | geometry_msgs/PoseStamped[] poses 5 | --- 6 | float32[] costs 7 | bool success 8 | -------------------------------------------------------------------------------- /nav2_msgs/srv/IsPathValid.srv: -------------------------------------------------------------------------------- 1 | #Determine if the current path is still valid 2 | 3 | nav_msgs/Path path 4 | uint8 max_cost 253 5 | bool consider_unknown_as_obstacle false 6 | --- 7 | bool is_valid 8 | int32[] invalid_pose_indices 9 | -------------------------------------------------------------------------------- /nav2_msgs/srv/LoadMap.srv: -------------------------------------------------------------------------------- 1 | # URL of map resource 2 | # Can be an absolute path to a file: file:///path/to/maps/floor1.yaml 3 | # Or, relative to a ROS package: package://my_ros_package/maps/floor2.yaml 4 | string map_url 5 | --- 6 | # Result code definitions 7 | uint8 RESULT_SUCCESS=0 8 | uint8 RESULT_MAP_DOES_NOT_EXIST=1 9 | uint8 RESULT_INVALID_MAP_DATA=2 10 | uint8 RESULT_INVALID_MAP_METADATA=3 11 | uint8 RESULT_UNDEFINED_FAILURE=255 12 | 13 | # Returned map is only valid if result equals RESULT_SUCCESS 14 | nav_msgs/OccupancyGrid map 15 | uint8 result 16 | -------------------------------------------------------------------------------- /nav2_msgs/srv/ManageLifecycleNodes.srv: -------------------------------------------------------------------------------- 1 | uint8 STARTUP = 0 2 | uint8 PAUSE = 1 3 | uint8 RESUME = 2 4 | uint8 RESET = 3 5 | uint8 SHUTDOWN = 4 6 | uint8 CONFIGURE = 5 7 | uint8 CLEANUP = 6 8 | 9 | uint8 command 10 | --- 11 | bool success 12 | -------------------------------------------------------------------------------- /nav2_msgs/srv/ReloadDockDatabase.srv: -------------------------------------------------------------------------------- 1 | # Reloads the dock's database with a new filepath 2 | 3 | string filepath 4 | --- 5 | bool success 6 | -------------------------------------------------------------------------------- /nav2_msgs/srv/SaveMap.srv: -------------------------------------------------------------------------------- 1 | # URL of map resource 2 | # Can be an absolute path to a file: file:///path/to/maps/floor1.yaml 3 | # Or, relative to a ROS package: package://my_ros_package/maps/floor2.yaml 4 | string map_topic 5 | string map_url 6 | # Constants for image_format. Supported formats: pgm, png, bmp 7 | string image_format 8 | # Map modes: trinary, scale or raw 9 | string map_mode 10 | # Thresholds. Values in range of [0.0 .. 1.0] 11 | float32 free_thresh 12 | float32 occupied_thresh 13 | --- 14 | bool result 15 | -------------------------------------------------------------------------------- /nav2_msgs/srv/SetInitialPose.srv: -------------------------------------------------------------------------------- 1 | geometry_msgs/PoseWithCovarianceStamped pose 2 | --- 3 | -------------------------------------------------------------------------------- /nav2_msgs/srv/SetRouteGraph.srv: -------------------------------------------------------------------------------- 1 | string graph_filepath 2 | --- 3 | bool success 4 | -------------------------------------------------------------------------------- /nav2_msgs/srv/__init__.py: -------------------------------------------------------------------------------- 1 | from nav2_msgs.srv._clear_costmap_around_robot import ClearCostmapAroundRobot 2 | from nav2_msgs.srv._clear_costmap_except_region import ClearCostmapExceptRegion 3 | from nav2_msgs.srv._clear_entire_costmap import ClearEntireCostmap 4 | from nav2_msgs.srv._get_costmap import GetCostmap 5 | from nav2_msgs.srv._get_costs import GetCosts 6 | from nav2_msgs.srv._is_path_valid import IsPathValid 7 | from nav2_msgs.srv._load_map import LoadMap 8 | from nav2_msgs.srv._manage_lifecycle_nodes import ManageLifecycleNodes 9 | from nav2_msgs.srv._reload_dock_database import ReloadDockDatabase 10 | from nav2_msgs.srv._save_map import SaveMap 11 | from nav2_msgs.srv._set_initial_pose import SetInitialPose 12 | 13 | __all__ = [ 14 | 'ClearCostmapAroundRobot', 15 | 'ClearCostmapExceptRegion', 16 | 'ClearEntireCostmap', 17 | 'GetCostmap', 18 | 'GetCosts', 19 | 'IsPathValid', 20 | 'LoadMap', 21 | 'ManageLifecycleNodes', 22 | 'ReloadDockDatabase', 23 | 'SaveMap', 24 | 'SetInitialPose', 25 | ] 26 | -------------------------------------------------------------------------------- /nav2_navfn_planner/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_navfn_planner/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_navfn_planner/README.md: -------------------------------------------------------------------------------- 1 | # Navfn Planner 2 | 3 | The NavfnPlanner is a global planner plugin for the Nav2 Planner server. It implements the Navigation Function planner with either A\* or Dij. expansions. It is largely equivalent to its counterpart in ROS 1 Navigation. The Navfn planner assumes a circular robot (or a robot that can be approximated as circular for the purposes of global path planning) and operates on a weighted costmap. 4 | 5 | The `global_planner` package from ROS (1) is a refactor on NavFn to make it more easily understandable, but it lacks in run-time performance and introduces suboptimal behaviors. As NavFn has been extremely stable for about 10 years at the time of porting, the maintainers felt no compelling reason to port over another, largely equivalent (but poorer functioning) planner. 6 | 7 | See its [Configuration Guide Page](https://docs.nav2.org/configuration/packages/configuring-navfn.html) for additional parameter descriptions. 8 | -------------------------------------------------------------------------------- /nav2_navfn_planner/global_planner_plugin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /nav2_navfn_planner/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Test dynamic parameters 2 | ament_add_gtest(test_dynamic_parameters 3 | test_dynamic_parameters.cpp 4 | ) 5 | target_link_libraries(test_dynamic_parameters 6 | ${library_name} 7 | nav2_costmap_2d::nav2_costmap_2d_core 8 | nav2_util::nav2_util_core 9 | rclcpp::rclcpp 10 | rclcpp_lifecycle::rclcpp_lifecycle 11 | ) 12 | -------------------------------------------------------------------------------- /nav2_planner/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_planner/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_planner/README.md: -------------------------------------------------------------------------------- 1 | # Nav2 Planner 2 | 3 | The Nav2 planner is a Task Server in Nav2 that implements the `nav2_behavior_tree::ComputePathToPose` interface. 4 | 5 | A planning module implementing the `nav2_behavior_tree::ComputePathToPose` interface is responsible for generating a feasible path given start and end robot poses. It loads a map of potential planner plugins to do the path generation in different user-defined situations. 6 | 7 | See the [Navigation Plugin list](https://docs.nav2.org/plugins/index.html) for a list of the currently known and available planner plugins. 8 | 9 | See its [Configuration Guide Page](https://docs.nav2.org/configuration/packages/configuring-planner-server.html) for additional parameter descriptions and a [tutorial about writing planner plugins](https://docs.nav2.org/plugin_tutorials/docs/writing_new_nav2planner_plugin.html). 10 | -------------------------------------------------------------------------------- /nav2_planner/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav2_planner 5 | 1.4.0 6 | Nav2 planner server package 7 | Steve Macenski 8 | Apache-2.0 9 | 10 | ament_cmake 11 | nav2_common 12 | 13 | geometry_msgs 14 | lifecycle_msgs 15 | nav2_core 16 | nav2_costmap_2d 17 | nav2_msgs 18 | nav2_util 19 | nav_msgs 20 | pluginlib 21 | rclcpp 22 | rclcpp_components 23 | rclcpp_lifecycle 24 | tf2 25 | tf2_ros 26 | 27 | ament_cmake_gtest 28 | ament_lint_common 29 | ament_lint_auto 30 | 31 | 32 | ament_cmake 33 | 34 | 35 | -------------------------------------------------------------------------------- /nav2_planner/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Intel Corporation 2 | // Copyright (c) 2019 Samsung Research America 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | #include 17 | 18 | #include "nav2_planner/planner_server.hpp" 19 | #include "rclcpp/rclcpp.hpp" 20 | 21 | int main(int argc, char ** argv) 22 | { 23 | rclcpp::init(argc, argv); 24 | auto node = std::make_shared(); 25 | rclcpp::spin(node->get_node_base_interface()); 26 | rclcpp::shutdown(); 27 | 28 | return 0; 29 | } 30 | -------------------------------------------------------------------------------- /nav2_planner/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Test dynamic parameters 2 | ament_add_gtest(test_dynamic_parameters 3 | test_dynamic_parameters.cpp 4 | ) 5 | target_link_libraries(test_dynamic_parameters 6 | ${library_name} 7 | nav2_util::nav2_util_core 8 | rclcpp::rclcpp 9 | ${rcl_interfaces_TARGETS} 10 | ) 11 | -------------------------------------------------------------------------------- /nav2_regulated_pure_pursuit_controller/doc/lookahead_algorithm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_regulated_pure_pursuit_controller/doc/lookahead_algorithm.png -------------------------------------------------------------------------------- /nav2_regulated_pure_pursuit_controller/nav2_regulated_pure_pursuit_controller.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | nav2_regulated_pure_pursuit_controller 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /nav2_regulated_pure_pursuit_controller/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # tests for regulated PP 2 | ament_add_gtest(test_regulated_pp 3 | test_regulated_pp.cpp 4 | path_utils/path_utils.cpp 5 | ) 6 | target_link_libraries(test_regulated_pp 7 | ${library_name} 8 | ${geometry_msgs_TARGETS} 9 | nav2_core::nav2_core 10 | nav2_costmap_2d::nav2_costmap_2d_core 11 | nav2_util::nav2_util_core 12 | ${nav_msgs_TARGETS} 13 | rclcpp::rclcpp 14 | rclcpp_lifecycle::rclcpp_lifecycle 15 | ) 16 | 17 | # Path utils test 18 | ament_add_gtest(test_path_utils path_utils/test_path_utils.cpp path_utils/path_utils.cpp) 19 | target_link_libraries(test_path_utils 20 | ${nav_msgs_TARGETS} 21 | ${geometry_msgs_TARGETS} 22 | tf2::tf2 23 | tf2_geometry_msgs::tf2_geometry_msgs 24 | ) 25 | -------------------------------------------------------------------------------- /nav2_rotation_shim_controller/nav2_rotation_shim_controller.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | nav2_rotation_shim_controller 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /nav2_rotation_shim_controller/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # tests 2 | find_package(nav2_controller REQUIRED) 3 | 4 | ament_add_gtest(test_shim_controller 5 | test_shim_controller.cpp 6 | ) 7 | target_link_libraries(test_shim_controller 8 | ${library_name} 9 | rclcpp::rclcpp 10 | nav2_costmap_2d::nav2_costmap_2d_core 11 | nav2_controller::simple_goal_checker 12 | nav2_util::nav2_util_core 13 | tf2_ros::tf2_ros 14 | ) 15 | -------------------------------------------------------------------------------- /nav2_route/graphs/scripts/README.md: -------------------------------------------------------------------------------- 1 | These scripts are used to help automate parts of route graph generation process. 2 | -------------------------------------------------------------------------------- /nav2_route/graphs/scripts/generate_start_and_end_id.sql: -------------------------------------------------------------------------------- 1 | WITH start_points AS 2 | ( 3 | SELECT n.id AS node_id 4 | ,e.id AS edge_id 5 | ,e.geometry AS edge_geometry 6 | FROM edges AS e, nodes AS n 7 | WHERE ST_INTERSECTS(n.geometry, ST_StartPoint(e.geometry)) 8 | ), end_points AS 9 | ( 10 | SELECT n.id AS node_id 11 | ,e.id AS edge_id 12 | ,e.geometry AS edge_geometry 13 | FROM edges AS e, nodes AS n 14 | WHERE ST_INTERSECTS(n.geometry, ST_EndPoint(e.geometry)) 15 | ) 16 | SELECT sp.edge_id AS edge_id 17 | ,sp.node_id AS start_node 18 | ,ep.node_id AS end_node 19 | ,sp.edge_geometry AS geometry 20 | FROM start_points AS sp 21 | JOIN end_points AS ep 22 | ON sp.edge_id = ep.edge_id 23 | -------------------------------------------------------------------------------- /nav2_route/graphs/scripts/increment_node_id.json: -------------------------------------------------------------------------------- 1 | { 2 | "author": "josh", 3 | "exported_at": "2025-03-15T19:22:14", 4 | "expressions": [ 5 | { 6 | "description": "\n\n


", 7 | "expression": "if(maximum(\"id\") is null, 0, maximum(\"id\")+1)", 8 | "group": "user", 9 | "name": "increment_node_id", 10 | "type": "expression" 11 | } 12 | ], 13 | "qgis_version": "3.22.4-Białowieża" 14 | } 15 | -------------------------------------------------------------------------------- /nav2_route/media/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_route/media/architecture.png -------------------------------------------------------------------------------- /nav2_route/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025 Open Navigation LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "nav2_route/route_server.hpp" 18 | #include "rclcpp/rclcpp.hpp" 19 | 20 | int main(int argc, char ** argv) 21 | { 22 | rclcpp::init(argc, argv); 23 | auto node = std::make_shared(); 24 | rclcpp::spin(node->get_node_base_interface()); 25 | rclcpp::shutdown(); 26 | 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /nav2_route/src/plugins/route_operations/trigger_event.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2025, Open Navigation LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include "nav2_route/plugins/route_operations/trigger_event.hpp" 16 | #include "pluginlib/class_list_macros.hpp" 17 | PLUGINLIB_EXPORT_CLASS(nav2_route::TriggerEvent, nav2_route::RouteOperation) 18 | -------------------------------------------------------------------------------- /nav2_rviz_plugins/icons/classes/nav2_logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_rviz_plugins/icons/classes/nav2_logo_small.png -------------------------------------------------------------------------------- /nav2_rviz_plugins/include/nav2_rviz_plugins/goal_common.hpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Intel Corporation 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #ifndef NAV2_RVIZ_PLUGINS__GOAL_COMMON_HPP_ 16 | #define NAV2_RVIZ_PLUGINS__GOAL_COMMON_HPP_ 17 | 18 | #include "nav2_rviz_plugins/goal_pose_updater.hpp" 19 | 20 | namespace nav2_rviz_plugins 21 | { 22 | extern GoalPoseUpdater GoalUpdater; 23 | } // nav2_rviz_plugins 24 | 25 | #endif // NAV2_RVIZ_PLUGINS__GOAL_COMMON_HPP_ 26 | -------------------------------------------------------------------------------- /nav2_simple_commander/media/readme.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_simple_commander/media/readme.gif -------------------------------------------------------------------------------- /nav2_simple_commander/nav2_simple_commander/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_simple_commander/nav2_simple_commander/__init__.py -------------------------------------------------------------------------------- /nav2_simple_commander/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav2_simple_commander 5 | 1.4.0 6 | An importable library for writing mobile robot applications in python3 7 | steve 8 | Apache-2.0 9 | 10 | rclpy 11 | geometry_msgs 12 | nav2_msgs 13 | action_msgs 14 | lifecycle_msgs 15 | 16 | ament_copyright 17 | ament_flake8 18 | ament_pep257 19 | python3-pytest 20 | 21 | 22 | ament_python 23 | 24 | 25 | -------------------------------------------------------------------------------- /nav2_simple_commander/pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | junit_family=xunit2 3 | -------------------------------------------------------------------------------- /nav2_simple_commander/resource/nav2_simple_commander: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_simple_commander/resource/nav2_simple_commander -------------------------------------------------------------------------------- /nav2_simple_commander/setup.cfg: -------------------------------------------------------------------------------- 1 | [develop] 2 | script_dir=$base/lib/nav2_simple_commander 3 | [install] 4 | install_scripts=$base/lib/nav2_simple_commander 5 | -------------------------------------------------------------------------------- /nav2_simple_commander/test/test_copyright.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 Open Source Robotics Foundation, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from ament_copyright.main import main 16 | import pytest 17 | 18 | 19 | @pytest.mark.copyright 20 | @pytest.mark.linter 21 | def test_copyright() -> None: 22 | rc = main(argv=['.', 'test']) 23 | assert rc == 0, 'Found errors' 24 | -------------------------------------------------------------------------------- /nav2_simple_commander/test/test_flake8.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 Open Source Robotics Foundation, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from ament_flake8.main import main_with_errors 16 | import pytest 17 | 18 | 19 | @pytest.mark.flake8 20 | @pytest.mark.linter 21 | def test_flake8() -> None: 22 | rc, errors = main_with_errors(argv=[]) 23 | assert rc == 0, f'Found {len(errors)} code style errors / warnings:\n' \ 24 | + '\n'.join(errors) 25 | -------------------------------------------------------------------------------- /nav2_simple_commander/test/test_pep257.py: -------------------------------------------------------------------------------- 1 | # Copyright 2015 Open Source Robotics Foundation, Inc. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | from ament_pep257.main import main 16 | import pytest 17 | 18 | 19 | @pytest.mark.linter 20 | @pytest.mark.pep257 21 | def test_pep257() -> None: 22 | rc = main(argv=['.', 'test']) 23 | assert rc == 0, 'Found code style errors / warnings' 24 | -------------------------------------------------------------------------------- /nav2_smac_planner/lattice_primitives/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_smac_planner/lattice_primitives/__init__.py -------------------------------------------------------------------------------- /nav2_smac_planner/lattice_primitives/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "motion_model": "ackermann", 3 | "turning_radius": 0.5, 4 | "grid_resolution": 0.05, 5 | "stopping_threshold": 5, 6 | "num_of_headings": 16 7 | } 8 | -------------------------------------------------------------------------------- /nav2_smac_planner/lattice_primitives/constants.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021, Matthew Booker 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. Reserved. 14 | 15 | VERSION = 1.0 16 | -------------------------------------------------------------------------------- /nav2_smac_planner/lattice_primitives/docs/all_trajectories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_smac_planner/lattice_primitives/docs/all_trajectories.png -------------------------------------------------------------------------------- /nav2_smac_planner/lattice_primitives/docs/angle_discretization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_smac_planner/lattice_primitives/docs/angle_discretization.png -------------------------------------------------------------------------------- /nav2_smac_planner/lattice_primitives/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_smac_planner/lattice_primitives/py.typed -------------------------------------------------------------------------------- /nav2_smac_planner/lattice_primitives/requirements.txt: -------------------------------------------------------------------------------- 1 | numpy>=1.17.4 2 | matplotlib>=3.1.2 3 | Rtree>=0.9.7 4 | -------------------------------------------------------------------------------- /nav2_smac_planner/lattice_primitives/sample_primitives/5cm_resolution/0.5m_turning_radius/all_trajectories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_smac_planner/lattice_primitives/sample_primitives/5cm_resolution/0.5m_turning_radius/all_trajectories.png -------------------------------------------------------------------------------- /nav2_smac_planner/lattice_primitives/sample_primitives/5cm_resolution/1m_turning_radius/all_trajectories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_smac_planner/lattice_primitives/sample_primitives/5cm_resolution/1m_turning_radius/all_trajectories.png -------------------------------------------------------------------------------- /nav2_smac_planner/media/A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_smac_planner/media/A.png -------------------------------------------------------------------------------- /nav2_smac_planner/media/B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_smac_planner/media/B.png -------------------------------------------------------------------------------- /nav2_smac_planner/smac_plugin_2d.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 2D A* SMAC Planner 4 | 5 | 6 | -------------------------------------------------------------------------------- /nav2_smac_planner/smac_plugin_hybrid.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hybrid-A* SMAC planner 4 | 5 | 6 | -------------------------------------------------------------------------------- /nav2_smac_planner/smac_plugin_lattice.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | State Lattice SMAC planner 4 | 5 | 6 | -------------------------------------------------------------------------------- /nav2_smac_planner/test/3planners.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_smac_planner/test/3planners.png -------------------------------------------------------------------------------- /nav2_smac_planner/test/path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_smac_planner/test/path.png -------------------------------------------------------------------------------- /nav2_smoother/README.md: -------------------------------------------------------------------------------- 1 | # Nav2 Smoother 2 | 3 | The Nav2 smoother is a Task Server in Nav2 that implements the `nav2_behavior_tree::SmoothPath` interface. 4 | 5 | A smoothing module implementing the `nav2_behavior_tree::SmoothPath` interface is responsible for improving path smoothness and/or quality, typically given an unsmoothed path from the planner module in `nav2_planner`. It loads a map of potential smoother plugins to do the path smoothing in different user-defined situations. 6 | 7 | See the [Navigation Plugin list](https://docs.nav2.org/plugins/index.html) for a list of the currently known and available smoother plugins. 8 | 9 | See its [Configuration Guide Page](https://docs.nav2.org/configuration/packages/configuring-smoother-server.html) for additional parameter descriptions. 10 | 11 | This package contains the Simple Smoother and Savitzky-Golay Smoother plugins. 12 | -------------------------------------------------------------------------------- /nav2_smoother/plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Does a simple smoothing process with collision checking 5 | 6 | 7 | 8 | 9 | 10 | Does Savitzky-Golay smoothing 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /nav2_smoother/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021 RoboTech Vision 2 | // Copyright (c) 2019 Intel Corporation 3 | // 4 | // Licensed under the Apache License, Version 2.0 (the "License"); 5 | // you may not use this file except in compliance with the License. 6 | // You may obtain a copy of the License at 7 | // 8 | // http://www.apache.org/licenses/LICENSE-2.0 9 | // 10 | // Unless required by applicable law or agreed to in writing, software 11 | // distributed under the License is distributed on an "AS IS" BASIS, 12 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | // See the License for the specific language governing permissions and 14 | // limitations under the License. 15 | 16 | #include 17 | 18 | #include "nav2_smoother/nav2_smoother.hpp" 19 | #include "rclcpp/rclcpp.hpp" 20 | 21 | int main(int argc, char ** argv) 22 | { 23 | rclcpp::init(argc, argv); 24 | auto node = std::make_shared(); 25 | rclcpp::spin(node->get_node_base_interface()); 26 | rclcpp::shutdown(); 27 | 28 | return 0; 29 | } 30 | -------------------------------------------------------------------------------- /nav2_system_tests/maps/empty_room.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_system_tests/maps/empty_room.pgm -------------------------------------------------------------------------------- /nav2_system_tests/maps/empty_room.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_system_tests/maps/empty_room.png -------------------------------------------------------------------------------- /nav2_system_tests/maps/empty_room.yaml: -------------------------------------------------------------------------------- 1 | image: empty.pgm 2 | resolution: 0.1 3 | origin: [-10.000000, -10.000000, 0.000000] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | -------------------------------------------------------------------------------- /nav2_system_tests/maps/keepout_mask.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_system_tests/maps/keepout_mask.pgm -------------------------------------------------------------------------------- /nav2_system_tests/maps/keepout_mask.yaml: -------------------------------------------------------------------------------- 1 | image: keepout_mask.pgm 2 | resolution: 0.050000 3 | origin: [-10.000000, -10.000000, 0.000000] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | -------------------------------------------------------------------------------- /nav2_system_tests/maps/map.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_system_tests/maps/map.pgm -------------------------------------------------------------------------------- /nav2_system_tests/maps/map.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_system_tests/maps/map.xcf -------------------------------------------------------------------------------- /nav2_system_tests/maps/map_circular.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_system_tests/maps/map_circular.pgm -------------------------------------------------------------------------------- /nav2_system_tests/maps/map_circular.yaml: -------------------------------------------------------------------------------- 1 | image: map_circular.pgm 2 | resolution: 0.050000 3 | origin: [-10.000000, -10.000000, 0.000000] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | map_type: occupancy 8 | -------------------------------------------------------------------------------- /nav2_system_tests/maps/speed_mask.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_system_tests/maps/speed_mask.pgm -------------------------------------------------------------------------------- /nav2_system_tests/maps/speed_mask.yaml: -------------------------------------------------------------------------------- 1 | image: speed_mask.pgm 2 | mode: scale 3 | resolution: 0.050000 4 | origin: [-10.000000, -10.000000, 0.000000] 5 | negate: 0 6 | occupied_thresh: 0.99 7 | free_thresh: 0.01 8 | -------------------------------------------------------------------------------- /nav2_system_tests/models/cardboard_box.sdf: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://fuel.gazebosim.org/1.0/OpenRobotics/models/Cardboard box 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /nav2_system_tests/src/behavior_tree/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(test_behavior_tree_node 2 | test_behavior_tree_node.cpp 3 | server_handler.cpp 4 | ) 5 | target_link_libraries(test_behavior_tree_node 6 | ament_index_cpp::ament_index_cpp 7 | behaviortree_cpp::behaviortree_cpp 8 | ${geometry_msgs_TARGETS} 9 | nav2_behavior_tree::nav2_behavior_tree 10 | ${nav2_msgs_TARGETS} 11 | nav2_util::nav2_util_core 12 | rclcpp::rclcpp 13 | tf2_ros::tf2_ros 14 | ) 15 | -------------------------------------------------------------------------------- /nav2_system_tests/src/behaviors/README.md: -------------------------------------------------------------------------------- 1 | # Behavior Test 2 | 3 | Provides some simple tests for behavior plugins. 4 | It creates an instance of the stack, with the behavior server loading different behavior plugins, and checks for successful behavior behaviors. 5 | -------------------------------------------------------------------------------- /nav2_system_tests/src/behaviors/assisted_teleop/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(test_assisted_teleop_behavior test_assisted_teleop_behavior_node) 2 | 3 | ament_add_gtest_executable(${test_assisted_teleop_behavior} 4 | test_assisted_teleop_behavior_node.cpp 5 | assisted_teleop_behavior_tester.cpp 6 | ) 7 | target_link_libraries(${test_assisted_teleop_behavior} 8 | ${geometry_msgs_TARGETS} 9 | nav2_costmap_2d::nav2_costmap_2d_core 10 | nav2_costmap_2d::nav2_costmap_2d_client 11 | nav2_util::nav2_util_core 12 | ${nav2_msgs_TARGETS} 13 | rclcpp::rclcpp 14 | rclcpp_action::rclcpp_action 15 | ${std_msgs_TARGETS} 16 | tf2::tf2 17 | tf2_ros::tf2_ros 18 | ) 19 | 20 | ament_add_test(test_assisted_teleop_behavior 21 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 22 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_assisted_teleop_behavior_launch.py" 23 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 24 | TIMEOUT 180 25 | ENV 26 | TEST_EXECUTABLE=$ 27 | BT_NAVIGATOR_XML=navigate_to_pose_w_replanning_and_recovery.xml 28 | ) 29 | -------------------------------------------------------------------------------- /nav2_system_tests/src/behaviors/backup/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_test(test_backup_behavior 2 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 3 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_backup_behavior.launch.py" 4 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 5 | TIMEOUT 60 6 | ENV 7 | TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR} 8 | ) 9 | -------------------------------------------------------------------------------- /nav2_system_tests/src/behaviors/drive_on_heading/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_test(test_drive_on_heading_behavior 2 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 3 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_drive_on_heading_behavior.launch.py" 4 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 5 | TIMEOUT 60 6 | ENV 7 | TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR} 8 | ) 9 | -------------------------------------------------------------------------------- /nav2_system_tests/src/behaviors/spin/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_test(test_spin_behavior 2 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 3 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_spin_behavior.launch.py" 4 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 5 | TIMEOUT 60 6 | ENV 7 | TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR} 8 | ) 9 | -------------------------------------------------------------------------------- /nav2_system_tests/src/behaviors/wait/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(test_wait_behavior_exec test_wait_behavior_node) 2 | 3 | ament_add_gtest_executable(${test_wait_behavior_exec} 4 | test_wait_behavior_node.cpp 5 | wait_behavior_tester.cpp 6 | ) 7 | target_link_libraries(${test_wait_behavior_exec} 8 | angles::angles 9 | ${geometry_msgs_TARGETS} 10 | ${nav2_msgs_TARGETS} 11 | nav2_util::nav2_util_core 12 | rclcpp::rclcpp 13 | rclcpp_action::rclcpp_action 14 | tf2::tf2 15 | tf2_ros::tf2_ros 16 | ) 17 | 18 | ament_add_test(test_wait_behavior 19 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 20 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_wait_behavior_launch.py" 21 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 22 | TIMEOUT 180 23 | ENV 24 | TEST_EXECUTABLE=$ 25 | BT_NAVIGATOR_XML=navigate_to_pose_w_replanning_and_behavior.xml 26 | ) 27 | -------------------------------------------------------------------------------- /nav2_system_tests/src/costmap_filters/keepout_plan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_system_tests/src/costmap_filters/keepout_plan.png -------------------------------------------------------------------------------- /nav2_system_tests/src/dummy_controller/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(dummy_controller_node 2 | src/dummy_controller/main.cpp 3 | src/dummy_controller/dummy_controller.cpp 4 | ) 5 | target_link_libraries(dummy_controller_node PRIVATE 6 | ${geometry_msgs_TARGETS} 7 | nav2_behavior_tree::nav2_behavior_tree 8 | nav2_util::nav2_util_core 9 | rclcpp::rclcpp 10 | ) 11 | -------------------------------------------------------------------------------- /nav2_system_tests/src/dummy_controller/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Intel Corporation 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. Reserved. 14 | 15 | #include 16 | #include "rclcpp/rclcpp.hpp" 17 | #include "dummy_controller.hpp" 18 | 19 | int main(int argc, char ** argv) 20 | { 21 | rclcpp::init(argc, argv); 22 | rclcpp::spin(std::make_shared()); 23 | rclcpp::shutdown(); 24 | 25 | return 0; 26 | } 27 | -------------------------------------------------------------------------------- /nav2_system_tests/src/dummy_planner/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(dummy_planner_node 2 | src/dummy_planner/main.cpp 3 | src/dummy_planner/dummy_planner.cpp 4 | ) 5 | target_link_libraries(dummy_planner_node PRIVATE 6 | nav2_behavior_tree::nav2_behavior_tree 7 | rclcpp::rclcpp 8 | ) 9 | -------------------------------------------------------------------------------- /nav2_system_tests/src/dummy_planner/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Intel Corporation 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. Reserved. 14 | 15 | #include 16 | #include "rclcpp/rclcpp.hpp" 17 | #include "dummy_planner.hpp" 18 | 19 | int main(int argc, char ** argv) 20 | { 21 | rclcpp::init(argc, argv); 22 | rclcpp::spin(std::make_shared()); 23 | rclcpp::shutdown(); 24 | 25 | return 0; 26 | } 27 | -------------------------------------------------------------------------------- /nav2_system_tests/src/error_codes/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_test(test_error_codes 2 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 3 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_error_codes_launch.py" 4 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 5 | TIMEOUT 180 6 | ENV 7 | TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR} 8 | TEST_MAP=${PROJECT_SOURCE_DIR}/maps/map_circular.yaml 9 | TEST_WORLD=${PROJECT_SOURCE_DIR}/worlds/turtlebot3_ros2_demo.world 10 | GAZEBO_MODEL_PATH=${PROJECT_SOURCE_DIR}/models 11 | BT_NAVIGATOR_XML=navigate_to_pose_w_replanning_and_recovery.xml 12 | ) 13 | -------------------------------------------------------------------------------- /nav2_system_tests/src/error_codes/smoother/smoother_error_plugin.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 Joshua Wallace 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include "smoother_error_plugin.hpp" 16 | 17 | #include "pluginlib/class_list_macros.hpp" 18 | PLUGINLIB_EXPORT_CLASS(nav2_system_tests::UnknownErrorSmoother, nav2_core::Smoother) 19 | PLUGINLIB_EXPORT_CLASS(nav2_system_tests::TimeOutErrorSmoother, nav2_core::Smoother) 20 | PLUGINLIB_EXPORT_CLASS(nav2_system_tests::SmoothedPathInCollision, nav2_core::Smoother) 21 | PLUGINLIB_EXPORT_CLASS(nav2_system_tests::FailedToSmoothPath, nav2_core::Smoother) 22 | PLUGINLIB_EXPORT_CLASS(nav2_system_tests::InvalidPath, nav2_core::Smoother) 23 | -------------------------------------------------------------------------------- /nav2_system_tests/src/error_codes/smoother_plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | This smoother produces a unknown exception. 5 | 6 | 8 | This smoother produces a TimedOut exception. 9 | 10 | 12 | This smoother produces a path in collision exception. 13 | 14 | 16 | This smoother produces a failed to smooth exception. 17 | 18 | 20 | This smoother produces an invalid path exception. 21 | 22 | 23 | -------------------------------------------------------------------------------- /nav2_system_tests/src/gps_navigation/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_test(test_gps_waypoint_follower 2 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 3 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_case_py.launch.py" 4 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 5 | TIMEOUT 180 6 | ENV 7 | TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR} 8 | ) 9 | -------------------------------------------------------------------------------- /nav2_system_tests/src/localization/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest_executable(test_localization_node 2 | test_localization_node.cpp 3 | ) 4 | target_link_libraries(test_localization_node 5 | ${geometry_msgs_TARGETS} 6 | rclcpp::rclcpp 7 | ) 8 | 9 | ament_add_test(test_localization 10 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 11 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_localization_launch.py" 12 | TIMEOUT 180 13 | ENV 14 | TEST_EXECUTABLE=$ 15 | ) 16 | -------------------------------------------------------------------------------- /nav2_system_tests/src/localization/README.md: -------------------------------------------------------------------------------- 1 | # Localization Testing 2 | 3 | The intention of the localization test is to ensure robot’s pose and transforms are available. 4 | 5 | Currently, only a simple test that checks the `initialpose` has been implemented. The `test_localization` module publishes an initial pose on `initialpose` topic and then it listens to `amcl_pose` topic. If the `amcl_pose` is similar to `initial pose` within a predefined tolerance the test passes. 6 | 7 | ## To run the test 8 | First, build the package 9 | ``` 10 | colcon build --symlink-install 11 | ``` 12 | After building, from /build/nav2_system_tests directory run: 13 | ``` 14 | ctest -V -R test_localization 15 | ``` 16 | Alternately you can run all the tests in the package using colcon: 17 | ``` 18 | colcon test --packages-select nav2_system_tests 19 | ``` 20 | 21 | ## Future Plan 22 | Once rosbag functionality becomes available, this test can be extended to utilize a recorded trajectory with map and scan data to monitor the `amcl_pose` and `transforms` without a need to run Gazebo and map_server. 23 | -------------------------------------------------------------------------------- /nav2_system_tests/src/planning/README.md: -------------------------------------------------------------------------------- 1 | # Global Planner Component Testing 2 | 3 | A PlannerTester node provides the world representation in the form of a costmap, sends a request to generate a path, and receives and checks the quality of the generated path. 4 | 5 | As mentioned above, currently the world is represented as a costmap. Simplified versions of the world model and costmap are used for testing. 6 | 7 | PlannerTester can sequentially pass random starting and goal poses and check the returned path for possible collision along the path. 8 | 9 | Below is an example of the output from randomized testing. Blue spheres represent the starting locations, green, the goals. Red lines are the computed paths. Grey cells represent obstacles. 10 | 11 | ![alt text](example_result.png "Output Example") 12 | 13 | *Note: Currently robot size is 1x1 cells, no obstacle inflation is done on the costmap* 14 | 15 | *Note: The Navfn algorithm sometimes fails to generate a path as you can see from the 'orphan' spheres.* 16 | -------------------------------------------------------------------------------- /nav2_system_tests/src/planning/example_result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_system_tests/src/planning/example_result.png -------------------------------------------------------------------------------- /nav2_system_tests/src/route/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_test(test_route 2 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 3 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_route_launch.py" 4 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 5 | TIMEOUT 180 6 | ENV 7 | TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR} 8 | BT_NAVIGATOR_XML=navigate_to_pose_w_replanning_and_recovery.xml 9 | TESTER=tester_node.py 10 | ASTAR=True 11 | CONTROLLER=nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController 12 | PLANNER=nav2_navfn_planner::NavfnPlanner 13 | ) 14 | -------------------------------------------------------------------------------- /nav2_system_tests/src/route/README.md: -------------------------------------------------------------------------------- 1 | This is a series of tests using the python3 simple commander API to test the route server in a practical routing and tracking task. 2 | -------------------------------------------------------------------------------- /nav2_system_tests/src/system_failure/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_test(test_failure_navigator 2 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 3 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_system_failure_launch.py" 4 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 5 | TIMEOUT 180 6 | ENV 7 | TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR} 8 | BT_NAVIGATOR_XML=navigate_to_pose_w_replanning_and_recovery.xml 9 | ) 10 | -------------------------------------------------------------------------------- /nav2_system_tests/src/system_failure/README.md: -------------------------------------------------------------------------------- 1 | # Nav2 System Tests - Failure 2 | 3 | High level system failures tests 4 | -------------------------------------------------------------------------------- /nav2_system_tests/src/updown/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | add_executable(test_updown 2 | test_updown.cpp 3 | ) 4 | target_link_libraries(test_updown PRIVATE 5 | ${geometry_msgs_TARGETS} 6 | nav2_lifecycle_manager::nav2_lifecycle_manager_core 7 | rclcpp::rclcpp 8 | ) 9 | 10 | install(TARGETS test_updown RUNTIME DESTINATION lib/${PROJECT_NAME}) 11 | install(FILES test_updown_launch.py DESTINATION share/${PROJECT_NAME}) 12 | -------------------------------------------------------------------------------- /nav2_system_tests/src/updown/README.md: -------------------------------------------------------------------------------- 1 | # Nav2 Updown Test 2 | 3 | This is a 'top level' system test which tests the lifecycle bringup and shutdown of the system. 4 | 5 | ## To run the test 6 | ``` 7 | ros2 launch nav2_system_tests test_updown_launch.py 8 | ``` 9 | 10 | If the test passes, you should see this comment in the output: 11 | ``` 12 | [test_updown-13] [INFO] [test_updown]: **************************************************** TEST PASSED! 13 | ``` 14 | 15 | To run the test in a loop 1000x, run the `test_updown_reliability` script and log the output: 16 | ``` 17 | ./test_updown_reliability |& tee /tmp/updown.log 18 | ``` 19 | When the test is completed, pipe the log to the `updownresults.py` script to get a summary of the results: 20 | ``` 21 | ./updownresults.py < /tmp/updown.log` 22 | ``` 23 | -------------------------------------------------------------------------------- /nav2_system_tests/src/updown/start_nav2: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ros2 launch ./test_updown_launch.py 3 | -------------------------------------------------------------------------------- /nav2_system_tests/src/updown/test_updown_reliability: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | for i in `seq 1 1000`; 3 | do 4 | echo "======= START OF RUN: $i =========" 5 | 6 | # Start with a new ros2 daemon 7 | ros2 daemon stop 8 | 9 | # There shouldn't be any nodes in the list 10 | ros2 node list 11 | echo "----------------------------------" 12 | 13 | # Bound the time of the bringup/shutdown in case it hangs 14 | timeout 100 ./start_nav2 15 | 16 | # Make sure there aren't any stray gazebo or ros2 processes hanging around 17 | # that were not properly killed by the launch script 18 | #kill -9 $(pgrep gzserver) &> /dev/null 19 | kill -9 $(pgrep ros2) &> /dev/null 20 | 21 | echo "======== END OF RUN: $i ==========" 22 | done 23 | -------------------------------------------------------------------------------- /nav2_system_tests/src/waypoint_follower/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_test(test_waypoint_follower 2 | GENERATE_RESULT_FOR_RETURN_CODE_ZERO 3 | COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_case_launch.py" 4 | WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" 5 | TIMEOUT 180 6 | ENV 7 | TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR} 8 | BT_NAVIGATOR_XML=navigate_to_pose_w_replanning_and_recovery.xml 9 | ) 10 | -------------------------------------------------------------------------------- /nav2_system_tests/src/waypoint_follower/README.md: -------------------------------------------------------------------------------- 1 | # Waypoint Follower Test 2 | 3 | This is a simple test for the waypoint follower. It creates an instance of the stack, calls with waypoint follower, and checks for successful navigation with 4 predetermined waypoints in the turtlebot map. 4 | -------------------------------------------------------------------------------- /nav2_theta_star_planner/img/00-37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_theta_star_planner/img/00-37.png -------------------------------------------------------------------------------- /nav2_theta_star_planner/theta_star_planner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | An implementation of the Theta* Algorithm 4 | 5 | 6 | -------------------------------------------------------------------------------- /nav2_util/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/nav2_util/CHANGELOG.rst -------------------------------------------------------------------------------- /nav2_util/src/base_footprint_publisher.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2023 Open Navigation LLC 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "base_footprint_publisher.hpp" 18 | 19 | int main(int argc, char ** argv) 20 | { 21 | rclcpp::init(argc, argv); 22 | auto node = std::make_shared(); 23 | rclcpp::spin(node->get_node_base_interface()); 24 | rclcpp::shutdown(); 25 | 26 | return 0; 27 | } 28 | -------------------------------------------------------------------------------- /nav2_util/test/test_execution_timer.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2018 Intel Corporation 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | #include 17 | 18 | #include "nav2_util/execution_timer.hpp" 19 | #include "gtest/gtest.h" 20 | 21 | using nav2_util::ExecutionTimer; 22 | using std::this_thread::sleep_for; 23 | using namespace std::chrono_literals; 24 | 25 | TEST(ExecutionTimer, BasicDelay) 26 | { 27 | ExecutionTimer t; 28 | t.start(); 29 | sleep_for(10ns); 30 | t.end(); 31 | ASSERT_GE(t.elapsed_time(), 10ns); 32 | ASSERT_GE(t.elapsed_time_in_seconds(), 1e-8); 33 | } 34 | -------------------------------------------------------------------------------- /nav2_velocity_smoother/package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | nav2_velocity_smoother 5 | 1.4.0 6 | Nav2's Output velocity smoother 7 | Steve Macenski 8 | Apache-2.0 9 | 10 | ament_cmake 11 | nav2_common 12 | 13 | geometry_msgs 14 | nav2_util 15 | rclcpp 16 | rclcpp_components 17 | rclcpp_lifecycle 18 | 19 | ament_cmake_gtest 20 | ament_lint_common 21 | ament_lint_auto 22 | nav_msgs 23 | 24 | 25 | ament_cmake 26 | 27 | 28 | -------------------------------------------------------------------------------- /nav2_velocity_smoother/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2022 Samsung Research 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "nav2_velocity_smoother/velocity_smoother.hpp" 18 | #include "rclcpp/rclcpp.hpp" 19 | 20 | int main(int argc, char ** argv) 21 | { 22 | rclcpp::init(argc, argv); 23 | auto node = std::make_shared(); 24 | rclcpp::spin(node->get_node_base_interface()); 25 | rclcpp::shutdown(); 26 | 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /nav2_velocity_smoother/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Tests 2 | ament_add_gtest(velocity_smoother_tests 3 | test_velocity_smoother.cpp 4 | ) 5 | target_link_libraries(velocity_smoother_tests 6 | ${library_name} 7 | ${geometry_msgs_TARGETS} 8 | nav2_util::nav2_util_core 9 | ${nav_msgs_TARGETS} 10 | rclcpp::rclcpp 11 | rclcpp_lifecycle::rclcpp_lifecycle 12 | ) 13 | -------------------------------------------------------------------------------- /nav2_voxel_grid/README.md: -------------------------------------------------------------------------------- 1 | # Nav2 Voxel Grid 2 | 3 | The `nav2_voxel_grid` package contains the VoxelGrid used by the `Voxel Layer` inside of `nav2_costmap_2d`. The voxel grid itself is simply a 2D char pointer array of the map size with bit locations corresponding to voxel values (free, unknown, occupied , etc). 4 | 5 | It is branched out as a separate package for use in other applications where a dense voxel grid representation may be useful. It also contains implementations of 3D raycasting. 6 | 7 | ## ROS1 Comparison 8 | 9 | This package is a direct port to ROS2 for use in the voxel layer. 10 | -------------------------------------------------------------------------------- /nav2_voxel_grid/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ament_add_gtest(voxel_grid_tests voxel_grid_tests.cpp) 2 | target_link_libraries(voxel_grid_tests voxel_grid) 3 | 4 | ament_add_gtest(voxel_grid_bresenham_3d voxel_grid_bresenham_3d.cpp) 5 | target_link_libraries(voxel_grid_bresenham_3d voxel_grid) 6 | -------------------------------------------------------------------------------- /nav2_waypoint_follower/plugins.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Let's robot sleep for a specified amount of time at waypoint arrival 5 | 6 | 7 | 8 | 9 | Run-time plugin that takes photos at waypoint arrivals when using waypoint follower node. 10 | Saves the taken photos to specified directory. 11 | 12 | 13 | 14 | 15 | Let's robot wait for input at waypoint arrival 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /nav2_waypoint_follower/src/main.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2019 Samsung Research America 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | #include 16 | 17 | #include "nav2_waypoint_follower/waypoint_follower.hpp" 18 | #include "rclcpp/rclcpp.hpp" 19 | 20 | int main(int argc, char ** argv) 21 | { 22 | rclcpp::init(argc, argv); 23 | auto node = std::make_shared(); 24 | rclcpp::spin(node->get_node_base_interface()); 25 | rclcpp::shutdown(); 26 | 27 | return 0; 28 | } 29 | -------------------------------------------------------------------------------- /nav2_waypoint_follower/test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Test test executors 2 | ament_add_gtest(test_task_executors 3 | test_task_executors.cpp 4 | ) 5 | target_link_libraries(test_task_executors 6 | ${library_name} 7 | wait_at_waypoint 8 | photo_at_waypoint 9 | input_at_waypoint 10 | ${geometry_msgs_TARGETS} 11 | nav2_util::nav2_util_core 12 | rclcpp::rclcpp 13 | rclcpp_lifecycle::rclcpp_lifecycle 14 | ${sensor_msgs_TARGETS} 15 | ) 16 | 17 | # Test dynamic parameters 18 | ament_add_gtest(test_dynamic_parameters 19 | test_dynamic_parameters.cpp 20 | ) 21 | target_link_libraries(test_dynamic_parameters 22 | ${library_name} 23 | nav2_util::nav2_util_core 24 | rclcpp::rclcpp 25 | rclcpp_lifecycle::rclcpp_lifecycle 26 | ) 27 | -------------------------------------------------------------------------------- /navigation2/CHANGELOG.rst: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/navigation2/CHANGELOG.rst -------------------------------------------------------------------------------- /navigation2/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.5) 2 | project(navigation2) 3 | 4 | find_package(ament_cmake REQUIRED) 5 | find_package(nav2_common REQUIRED) 6 | 7 | nav2_package() 8 | 9 | ament_package() 10 | -------------------------------------------------------------------------------- /tools/.codespell_ignore_words: -------------------------------------------------------------------------------- 1 | master 2 | uint 3 | jupyter 4 | blacklist 5 | whitelist 6 | stdio 7 | deque 8 | thirdparty 9 | dur 10 | segway 11 | ue 12 | hist 13 | nav2 14 | ot 15 | ws 16 | -------------------------------------------------------------------------------- /tools/planner_benchmarking/100by100_10.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/tools/planner_benchmarking/100by100_10.pgm -------------------------------------------------------------------------------- /tools/planner_benchmarking/100by100_10.yaml: -------------------------------------------------------------------------------- 1 | image: 100by100_10.pgm 2 | resolution: 0.05 3 | origin: [0.0, 0.000000, 0.000000] 4 | negate: 1 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | -------------------------------------------------------------------------------- /tools/planner_benchmarking/100by100_15.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/tools/planner_benchmarking/100by100_15.pgm -------------------------------------------------------------------------------- /tools/planner_benchmarking/100by100_15.yaml: -------------------------------------------------------------------------------- 1 | image: 100by100_15.pgm 2 | resolution: 0.05 3 | origin: [0.0, 0.000000, 0.000000] 4 | negate: 1 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | -------------------------------------------------------------------------------- /tools/planner_benchmarking/100by100_20.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/tools/planner_benchmarking/100by100_20.pgm -------------------------------------------------------------------------------- /tools/planner_benchmarking/100by100_20.yaml: -------------------------------------------------------------------------------- 1 | image: 100by100_20.pgm 2 | resolution: 0.05 3 | origin: [0.0, 0.000000, 0.000000] 4 | negate: 1 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | -------------------------------------------------------------------------------- /tools/skip_keys.txt: -------------------------------------------------------------------------------- 1 | console_bridge 2 | fastcdr 3 | fastrtps 4 | libopensplice69 5 | rti-connext-dds-5.3.1 6 | slam_toolbox 7 | urdfdom_headers 8 | -------------------------------------------------------------------------------- /tools/smoother_benchmarking/maps/smoothers_world.pgm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ros-navigation/navigation2/1345c226bcf73068127b2e2efaee91a637d2f351/tools/smoother_benchmarking/maps/smoothers_world.pgm -------------------------------------------------------------------------------- /tools/smoother_benchmarking/maps/smoothers_world.yaml: -------------------------------------------------------------------------------- 1 | image: smoothers_world.pgm 2 | resolution: 0.050000 3 | origin: [0.0, 0.0, 0.0] 4 | negate: 0 5 | occupied_thresh: 0.65 6 | free_thresh: 0.196 7 | -------------------------------------------------------------------------------- /tools/update_bt_diagrams.bash: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Run this from the root of the workspace to update these behavior_tree images 4 | # in the doc directory of the nav2_bt_navigator package 5 | navigation2/tools/bt2img.py \ 6 | --behavior_tree navigation2/nav2_bt_navigator/behavior_trees/navigate_w_replanning.xml \ 7 | --image_out navigation2/nav2_bt_navigator/doc/simple_parallel \ 8 | --legend navigation2/nav2_bt_navigator/doc/legend 9 | navigation2/tools/bt2img.py \ 10 | --behavior_tree navigation2/nav2_bt_navigator/behavior_trees/navigate_to_pose_w_replanning_and_recovery.xml \ 11 | --image_out navigation2/nav2_bt_navigator/doc/parallel_w_recovery 12 | navigation2/tools/bt2img.py \ 13 | --behavior_tree navigation2/nav2_bt_navigator/behavior_trees/navigate_through_poses_w_replanning_and_recovery.xml \ 14 | --image_out navigation2/nav2_bt_navigator/doc/parallel_through_poses_w_recovery 15 | --------------------------------------------------------------------------------