├── .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 | 
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 |
--------------------------------------------------------------------------------