├── README.md
├── maps
├── warehouse.pgm
└── warehouse.yaml
├── .github
├── CODEOWNERS
├── ISSUE_TEMPLATE
│ ├── feature.md
│ └── bug.md
└── workflows
│ └── ci.yml
├── CMakeLists.txt
├── package.xml
├── config
├── a200
│ ├── localization.yaml
│ ├── slam.yaml
│ └── nav2.yaml
├── a300
│ ├── localization.yaml
│ ├── slam.yaml
│ └── nav2.yaml
├── dd100
│ ├── localization.yaml
│ ├── slam.yaml
│ └── nav2.yaml
├── dd150
│ ├── localization.yaml
│ ├── slam.yaml
│ └── nav2.yaml
├── do100
│ ├── localization.yaml
│ ├── slam.yaml
│ └── nav2.yaml
├── do150
│ ├── localization.yaml
│ ├── slam.yaml
│ └── nav2.yaml
├── j100
│ ├── localization.yaml
│ ├── slam.yaml
│ └── nav2.yaml
├── r100
│ ├── localization.yaml
│ ├── slam.yaml
│ └── nav2.yaml
└── w200
│ ├── localization.yaml
│ ├── slam.yaml
│ └── nav2.yaml
├── LICENSE
├── CHANGELOG.rst
└── launch
├── nav2.launch.py
├── localization.launch.py
└── slam.launch.py
/README.md:
--------------------------------------------------------------------------------
1 | # clearpath_nav2_demos
2 | Nav2 and slam_toolbox demos for clearpath platforms
3 |
--------------------------------------------------------------------------------
/maps/warehouse.pgm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/clearpathrobotics/clearpath_nav2_demos/HEAD/maps/warehouse.pgm
--------------------------------------------------------------------------------
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # Default all changes will request review from:
2 | * @clearpathrobotics/clearpath-platform-team
3 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Provide context for the feature you are requesting
4 | title: ''
5 | labels: enhancement
6 | assignees: clearpathrobotics/clearpath-platform-team
7 |
8 | ---
9 |
10 | **Describe the the feature you would like**
11 | A clear and concise description of what you want to happen.
12 |
13 | **Other notes**
14 | Add anything else you think is important.
15 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug Report
3 | about: Provide a report for that the issue is
4 | title: ''
5 | labels: bug
6 | assignees: clearpathrobotics/clearpath-platform-team
7 |
8 | ---
9 |
10 | **Please provide the following information:**
11 | - OS: (e.g. Ubuntu 22.04)
12 | - ROS 2 Distro: (e.g. Humble)
13 | - Built from source or installed:
14 | - Package version: (if from repository, give version from `sudo dpkg -s ros-$ROS_DISTRO-clearpath-nav2-demos`, if from source, give commit hash)
15 | - Real hardware or simulation:
16 |
17 | **Expected behaviour**
18 | A clear and concise description of what you expected to happen.
19 |
20 | **Actual behaviour**
21 | A clear and concise description of what you encountered.
22 |
23 | **To Reproduce**
24 | Provide the steps to reproduce:
25 | 1. run something
26 | 2. launch something else
27 | 3. see the error
28 |
29 |
30 | **Other notes**
31 | Add anything else you think is important.
32 |
--------------------------------------------------------------------------------
/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.8)
2 | project(clearpath_nav2_demos)
3 |
4 | if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
5 | add_compile_options(-Wall -Wextra -Wpedantic)
6 | endif()
7 |
8 | # find dependencies
9 | find_package(ament_cmake REQUIRED)
10 |
11 | install(DIRECTORY config launch maps
12 | DESTINATION share/${PROJECT_NAME}
13 | )
14 |
15 | if(BUILD_TESTING)
16 | find_package(ament_lint_auto REQUIRED)
17 | # the following line skips the linter which checks for copyrights
18 | # comment the line when a copyright and license is added to all source files
19 | set(ament_cmake_copyright_FOUND TRUE)
20 | # the following line skips cpplint (only works in a git repo)
21 | # comment the line when this package is in a git repo and when
22 | # a copyright and license is added to all source files
23 | set(ament_cmake_cpplint_FOUND TRUE)
24 | ament_lint_auto_find_test_dependencies()
25 | endif()
26 |
27 | ament_package()
28 |
--------------------------------------------------------------------------------
/.github/workflows/ci.yml:
--------------------------------------------------------------------------------
1 | name: clearpath_common_ci
2 |
3 | on:
4 | push:
5 | pull_request:
6 | schedule:
7 | - cron: "0 0 * * *" # every day at midnight
8 |
9 | jobs:
10 | build_and_test:
11 | name: jazzy
12 | strategy:
13 | matrix:
14 | env:
15 | - {ROS_DISTRO: jazzy, ROS_REPO: testing}
16 | - {ROS_DISTRO: jazzy, ROS_REPO: main}
17 | fail-fast: false
18 | runs-on: ubuntu-24.04
19 | steps:
20 | - uses: actions/checkout@v3
21 | - uses: 'ros-industrial/industrial_ci@master'
22 | env: ${{matrix.env}}
23 |
24 | clearpath_nav2_demos_src_ci:
25 | name: Jazzy Clearpath Source
26 | runs-on: ubuntu-24.04
27 | steps:
28 | - uses: actions/checkout@v3
29 | - uses: ros-tooling/setup-ros@v0.7
30 | with:
31 | required-ros-distributions: jazzy
32 | - uses: ros-tooling/action-ros-ci@v0.3
33 | id: action_ros_ci_step
34 | with:
35 | target-ros2-distro: jazzy
36 | package-name: |
37 | clearpath_nav2_demos
--------------------------------------------------------------------------------
/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | clearpath_nav2_demos
5 | 2.8.0
6 | Nav2 demos for Clearpath robots
7 | Luis Camero
8 | Roni Kreinin
9 | Tony Baltovski
10 |
11 | BSD
12 |
13 | Roni Kreinin
14 |
15 | ament_cmake
16 |
17 | clearpath_config
18 | nav2_bringup
19 | slam_toolbox
20 |
21 | ament_lint_auto
22 | ament_lint_common
23 |
24 |
25 | ament_cmake
26 |
27 |
28 |
--------------------------------------------------------------------------------
/config/a200/localization.yaml:
--------------------------------------------------------------------------------
1 | amcl:
2 | ros__parameters:
3 | alpha1: 0.2
4 | alpha2: 0.2
5 | alpha3: 0.2
6 | alpha4: 0.2
7 | alpha5: 0.2
8 | base_frame_id: "base_link"
9 | beam_skip_distance: 0.5
10 | beam_skip_error_threshold: 0.9
11 | beam_skip_threshold: 0.3
12 | do_beamskip: false
13 | global_frame_id: "map"
14 | lambda_short: 0.1
15 | laser_likelihood_max_dist: 2.0
16 | laser_max_range: 100.0
17 | laser_min_range: -1.0
18 | laser_model_type: "likelihood_field"
19 | max_beams: 60
20 | max_particles: 2000
21 | min_particles: 500
22 | odom_frame_id: "odom"
23 | pf_err: 0.05
24 | pf_z: 0.99
25 | recovery_alpha_fast: 0.0
26 | recovery_alpha_slow: 0.0
27 | resample_interval: 1
28 | robot_model_type: "nav2_amcl::DifferentialMotionModel"
29 | save_pose_rate: 0.5
30 | sigma_hit: 0.2
31 | tf_broadcast: true
32 | transform_tolerance: 1.0
33 | update_min_a: 0.2
34 | update_min_d: 0.25
35 | z_hit: 0.5
36 | z_max: 0.05
37 | z_rand: 0.5
38 | z_short: 0.05
39 | scan_topic: sensors/lidar2d_0/scan
40 |
41 | map_saver:
42 | ros__parameters:
43 | save_map_timeout: 5.0
44 | free_thresh_default: 0.25
45 | occupied_thresh_default: 0.65
46 | map_subscribe_transient_local: True
47 |
--------------------------------------------------------------------------------
/config/a300/localization.yaml:
--------------------------------------------------------------------------------
1 | amcl:
2 | ros__parameters:
3 | alpha1: 0.2
4 | alpha2: 0.2
5 | alpha3: 0.2
6 | alpha4: 0.2
7 | alpha5: 0.2
8 | base_frame_id: "base_link"
9 | beam_skip_distance: 0.5
10 | beam_skip_error_threshold: 0.9
11 | beam_skip_threshold: 0.3
12 | do_beamskip: false
13 | global_frame_id: "map"
14 | lambda_short: 0.1
15 | laser_likelihood_max_dist: 2.0
16 | laser_max_range: 100.0
17 | laser_min_range: -1.0
18 | laser_model_type: "likelihood_field"
19 | max_beams: 60
20 | max_particles: 2000
21 | min_particles: 500
22 | odom_frame_id: "odom"
23 | pf_err: 0.05
24 | pf_z: 0.99
25 | recovery_alpha_fast: 0.0
26 | recovery_alpha_slow: 0.0
27 | resample_interval: 1
28 | robot_model_type: "nav2_amcl::DifferentialMotionModel"
29 | save_pose_rate: 0.5
30 | sigma_hit: 0.2
31 | tf_broadcast: true
32 | transform_tolerance: 1.0
33 | update_min_a: 0.2
34 | update_min_d: 0.25
35 | z_hit: 0.5
36 | z_max: 0.05
37 | z_rand: 0.5
38 | z_short: 0.05
39 | scan_topic: sensors/lidar2d_0/scan
40 |
41 | map_saver:
42 | ros__parameters:
43 | save_map_timeout: 5.0
44 | free_thresh_default: 0.25
45 | occupied_thresh_default: 0.65
46 | map_subscribe_transient_local: True
47 |
--------------------------------------------------------------------------------
/config/dd100/localization.yaml:
--------------------------------------------------------------------------------
1 | amcl:
2 | ros__parameters:
3 | alpha1: 0.2
4 | alpha2: 0.2
5 | alpha3: 0.2
6 | alpha4: 0.2
7 | alpha5: 0.2
8 | base_frame_id: "base_link"
9 | beam_skip_distance: 0.5
10 | beam_skip_error_threshold: 0.9
11 | beam_skip_threshold: 0.3
12 | do_beamskip: false
13 | global_frame_id: "map"
14 | lambda_short: 0.1
15 | laser_likelihood_max_dist: 2.0
16 | laser_max_range: 100.0
17 | laser_min_range: -1.0
18 | laser_model_type: "likelihood_field"
19 | max_beams: 60
20 | max_particles: 2000
21 | min_particles: 500
22 | odom_frame_id: "odom"
23 | pf_err: 0.05
24 | pf_z: 0.99
25 | recovery_alpha_fast: 0.0
26 | recovery_alpha_slow: 0.0
27 | resample_interval: 1
28 | robot_model_type: "nav2_amcl::DifferentialMotionModel"
29 | save_pose_rate: 0.5
30 | sigma_hit: 0.2
31 | tf_broadcast: true
32 | transform_tolerance: 1.0
33 | update_min_a: 0.2
34 | update_min_d: 0.25
35 | z_hit: 0.5
36 | z_max: 0.05
37 | z_rand: 0.5
38 | z_short: 0.05
39 | scan_topic: sensors/lidar2d_0/scan
40 |
41 | map_saver:
42 | ros__parameters:
43 | save_map_timeout: 5.0
44 | free_thresh_default: 0.25
45 | occupied_thresh_default: 0.65
46 | map_subscribe_transient_local: True
47 |
--------------------------------------------------------------------------------
/config/dd150/localization.yaml:
--------------------------------------------------------------------------------
1 | amcl:
2 | ros__parameters:
3 | alpha1: 0.2
4 | alpha2: 0.2
5 | alpha3: 0.2
6 | alpha4: 0.2
7 | alpha5: 0.2
8 | base_frame_id: "base_link"
9 | beam_skip_distance: 0.5
10 | beam_skip_error_threshold: 0.9
11 | beam_skip_threshold: 0.3
12 | do_beamskip: false
13 | global_frame_id: "map"
14 | lambda_short: 0.1
15 | laser_likelihood_max_dist: 2.0
16 | laser_max_range: 100.0
17 | laser_min_range: -1.0
18 | laser_model_type: "likelihood_field"
19 | max_beams: 60
20 | max_particles: 2000
21 | min_particles: 500
22 | odom_frame_id: "odom"
23 | pf_err: 0.05
24 | pf_z: 0.99
25 | recovery_alpha_fast: 0.0
26 | recovery_alpha_slow: 0.0
27 | resample_interval: 1
28 | robot_model_type: "nav2_amcl::DifferentialMotionModel"
29 | save_pose_rate: 0.5
30 | sigma_hit: 0.2
31 | tf_broadcast: true
32 | transform_tolerance: 1.0
33 | update_min_a: 0.2
34 | update_min_d: 0.25
35 | z_hit: 0.5
36 | z_max: 0.05
37 | z_rand: 0.5
38 | z_short: 0.05
39 | scan_topic: sensors/lidar2d_0/scan
40 |
41 | map_saver:
42 | ros__parameters:
43 | save_map_timeout: 5.0
44 | free_thresh_default: 0.25
45 | occupied_thresh_default: 0.65
46 | map_subscribe_transient_local: True
47 |
--------------------------------------------------------------------------------
/config/do100/localization.yaml:
--------------------------------------------------------------------------------
1 | amcl:
2 | ros__parameters:
3 | alpha1: 0.2
4 | alpha2: 0.2
5 | alpha3: 0.2
6 | alpha4: 0.2
7 | alpha5: 0.2
8 | base_frame_id: "base_link"
9 | beam_skip_distance: 0.5
10 | beam_skip_error_threshold: 0.9
11 | beam_skip_threshold: 0.3
12 | do_beamskip: false
13 | global_frame_id: "map"
14 | lambda_short: 0.1
15 | laser_likelihood_max_dist: 2.0
16 | laser_max_range: 100.0
17 | laser_min_range: -1.0
18 | laser_model_type: "likelihood_field"
19 | max_beams: 60
20 | max_particles: 2000
21 | min_particles: 500
22 | odom_frame_id: "odom"
23 | pf_err: 0.05
24 | pf_z: 0.99
25 | recovery_alpha_fast: 0.0
26 | recovery_alpha_slow: 0.0
27 | resample_interval: 1
28 | robot_model_type: "nav2_amcl::DifferentialMotionModel"
29 | save_pose_rate: 0.5
30 | sigma_hit: 0.2
31 | tf_broadcast: true
32 | transform_tolerance: 1.0
33 | update_min_a: 0.2
34 | update_min_d: 0.25
35 | z_hit: 0.5
36 | z_max: 0.05
37 | z_rand: 0.5
38 | z_short: 0.05
39 | scan_topic: sensors/lidar2d_0/scan
40 |
41 | map_saver:
42 | ros__parameters:
43 | save_map_timeout: 5.0
44 | free_thresh_default: 0.25
45 | occupied_thresh_default: 0.65
46 | map_subscribe_transient_local: True
47 |
--------------------------------------------------------------------------------
/config/do150/localization.yaml:
--------------------------------------------------------------------------------
1 | amcl:
2 | ros__parameters:
3 | alpha1: 0.2
4 | alpha2: 0.2
5 | alpha3: 0.2
6 | alpha4: 0.2
7 | alpha5: 0.2
8 | base_frame_id: "base_link"
9 | beam_skip_distance: 0.5
10 | beam_skip_error_threshold: 0.9
11 | beam_skip_threshold: 0.3
12 | do_beamskip: false
13 | global_frame_id: "map"
14 | lambda_short: 0.1
15 | laser_likelihood_max_dist: 2.0
16 | laser_max_range: 100.0
17 | laser_min_range: -1.0
18 | laser_model_type: "likelihood_field"
19 | max_beams: 60
20 | max_particles: 2000
21 | min_particles: 500
22 | odom_frame_id: "odom"
23 | pf_err: 0.05
24 | pf_z: 0.99
25 | recovery_alpha_fast: 0.0
26 | recovery_alpha_slow: 0.0
27 | resample_interval: 1
28 | robot_model_type: "nav2_amcl::DifferentialMotionModel"
29 | save_pose_rate: 0.5
30 | sigma_hit: 0.2
31 | tf_broadcast: true
32 | transform_tolerance: 1.0
33 | update_min_a: 0.2
34 | update_min_d: 0.25
35 | z_hit: 0.5
36 | z_max: 0.05
37 | z_rand: 0.5
38 | z_short: 0.05
39 | scan_topic: sensors/lidar2d_0/scan
40 |
41 | map_saver:
42 | ros__parameters:
43 | save_map_timeout: 5.0
44 | free_thresh_default: 0.25
45 | occupied_thresh_default: 0.65
46 | map_subscribe_transient_local: True
47 |
--------------------------------------------------------------------------------
/config/j100/localization.yaml:
--------------------------------------------------------------------------------
1 | amcl:
2 | ros__parameters:
3 | alpha1: 0.2
4 | alpha2: 0.2
5 | alpha3: 0.2
6 | alpha4: 0.2
7 | alpha5: 0.2
8 | base_frame_id: "base_link"
9 | beam_skip_distance: 0.5
10 | beam_skip_error_threshold: 0.9
11 | beam_skip_threshold: 0.3
12 | do_beamskip: false
13 | global_frame_id: "map"
14 | lambda_short: 0.1
15 | laser_likelihood_max_dist: 2.0
16 | laser_max_range: 100.0
17 | laser_min_range: -1.0
18 | laser_model_type: "likelihood_field"
19 | max_beams: 60
20 | max_particles: 2000
21 | min_particles: 500
22 | odom_frame_id: "odom"
23 | pf_err: 0.05
24 | pf_z: 0.99
25 | recovery_alpha_fast: 0.0
26 | recovery_alpha_slow: 0.0
27 | resample_interval: 1
28 | robot_model_type: "nav2_amcl::DifferentialMotionModel"
29 | save_pose_rate: 0.5
30 | sigma_hit: 0.2
31 | tf_broadcast: true
32 | transform_tolerance: 1.0
33 | update_min_a: 0.2
34 | update_min_d: 0.25
35 | z_hit: 0.5
36 | z_max: 0.05
37 | z_rand: 0.5
38 | z_short: 0.05
39 | scan_topic: sensors/lidar2d_0/scan
40 |
41 | map_saver:
42 | ros__parameters:
43 | save_map_timeout: 5.0
44 | free_thresh_default: 0.25
45 | occupied_thresh_default: 0.65
46 | map_subscribe_transient_local: True
47 |
--------------------------------------------------------------------------------
/config/r100/localization.yaml:
--------------------------------------------------------------------------------
1 | amcl:
2 | ros__parameters:
3 | alpha1: 0.2
4 | alpha2: 0.2
5 | alpha3: 0.2
6 | alpha4: 0.2
7 | alpha5: 0.2
8 | base_frame_id: "base_link"
9 | beam_skip_distance: 0.5
10 | beam_skip_error_threshold: 0.9
11 | beam_skip_threshold: 0.3
12 | do_beamskip: false
13 | global_frame_id: "map"
14 | lambda_short: 0.1
15 | laser_likelihood_max_dist: 2.0
16 | laser_max_range: 100.0
17 | laser_min_range: -1.0
18 | laser_model_type: "likelihood_field"
19 | max_beams: 60
20 | max_particles: 2000
21 | min_particles: 500
22 | odom_frame_id: "odom"
23 | pf_err: 0.05
24 | pf_z: 0.99
25 | recovery_alpha_fast: 0.0
26 | recovery_alpha_slow: 0.0
27 | resample_interval: 1
28 | robot_model_type: "nav2_amcl::DifferentialMotionModel"
29 | save_pose_rate: 0.5
30 | sigma_hit: 0.2
31 | tf_broadcast: true
32 | transform_tolerance: 1.0
33 | update_min_a: 0.2
34 | update_min_d: 0.25
35 | z_hit: 0.5
36 | z_max: 0.05
37 | z_rand: 0.5
38 | z_short: 0.05
39 | scan_topic: sensors/lidar2d_0/scan
40 |
41 | map_saver:
42 | ros__parameters:
43 | save_map_timeout: 5.0
44 | free_thresh_default: 0.25
45 | occupied_thresh_default: 0.65
46 | map_subscribe_transient_local: True
47 |
--------------------------------------------------------------------------------
/config/w200/localization.yaml:
--------------------------------------------------------------------------------
1 | amcl:
2 | ros__parameters:
3 | alpha1: 0.2
4 | alpha2: 0.2
5 | alpha3: 0.2
6 | alpha4: 0.2
7 | alpha5: 0.2
8 | base_frame_id: "base_link"
9 | beam_skip_distance: 0.5
10 | beam_skip_error_threshold: 0.9
11 | beam_skip_threshold: 0.3
12 | do_beamskip: false
13 | global_frame_id: "map"
14 | lambda_short: 0.1
15 | laser_likelihood_max_dist: 2.0
16 | laser_max_range: 100.0
17 | laser_min_range: -1.0
18 | laser_model_type: "likelihood_field"
19 | max_beams: 60
20 | max_particles: 2000
21 | min_particles: 500
22 | odom_frame_id: "odom"
23 | pf_err: 0.05
24 | pf_z: 0.99
25 | recovery_alpha_fast: 0.0
26 | recovery_alpha_slow: 0.0
27 | resample_interval: 1
28 | robot_model_type: "nav2_amcl::DifferentialMotionModel"
29 | save_pose_rate: 0.5
30 | sigma_hit: 0.2
31 | tf_broadcast: true
32 | transform_tolerance: 1.0
33 | update_min_a: 0.2
34 | update_min_d: 0.25
35 | z_hit: 0.5
36 | z_max: 0.05
37 | z_rand: 0.5
38 | z_short: 0.05
39 | scan_topic: sensors/lidar2d_0/scan
40 |
41 | map_saver:
42 | ros__parameters:
43 | save_map_timeout: 5.0
44 | free_thresh_default: 0.25
45 | occupied_thresh_default: 0.65
46 | map_subscribe_transient_local: True
47 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 3-Clause License
2 |
3 | Copyright (c) 2023, clearpathrobotics
4 |
5 | Redistribution and use in source and binary forms, with or without
6 | modification, are permitted provided that the following conditions are met:
7 |
8 | 1. Redistributions of source code must retain the above copyright notice, this
9 | list of conditions and the following disclaimer.
10 |
11 | 2. Redistributions in binary form must reproduce the above copyright notice,
12 | this list of conditions and the following disclaimer in the documentation
13 | and/or other materials provided with the distribution.
14 |
15 | 3. Neither the name of the copyright holder nor the names of its
16 | contributors may be used to endorse or promote products derived from
17 | this software without specific prior written permission.
18 |
19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 |
--------------------------------------------------------------------------------
/config/a200/slam.yaml:
--------------------------------------------------------------------------------
1 | slam_toolbox:
2 | ros__parameters:
3 |
4 | # Plugin params
5 | solver_plugin: solver_plugins::CeresSolver
6 | ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
7 | ceres_preconditioner: SCHUR_JACOBI
8 | ceres_trust_strategy: LEVENBERG_MARQUARDT
9 | ceres_dogleg_type: TRADITIONAL_DOGLEG
10 | ceres_loss_function: None
11 |
12 | # ROS Parameters
13 | # These are modified by slam.launch.py
14 | # Do mot modify the map_name or scan_topic here
15 | odom_frame: odom
16 | map_frame: map
17 | map_name: /map
18 | base_frame: base_link
19 | scan_topic: /scan
20 | mode: mapping
21 |
22 | debug_logging: false
23 | throttle_scans: 1
24 | transform_publish_period: 0.02 #if 0 never publishes odometry
25 | map_update_interval: 0.5
26 | resolution: 0.05
27 | max_laser_range: 20.0 #for rastering images
28 | minimum_time_interval: 0.5
29 | transform_timeout: 0.5
30 | tf_buffer_duration: 30.
31 | stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
32 | enable_interactive_mode: true
33 |
34 | # General Parameters
35 | use_scan_matching: true
36 | use_scan_barycenter: true
37 | minimum_travel_distance: 0.0
38 | minimum_travel_heading: 0.0
39 | scan_buffer_size: 10
40 | scan_buffer_maximum_scan_distance: 10.0
41 | link_match_minimum_response_fine: 0.1
42 | link_scan_maximum_distance: 1.5
43 | loop_search_maximum_distance: 3.0
44 | do_loop_closing: true
45 | loop_match_minimum_chain_size: 10
46 | loop_match_maximum_variance_coarse: 3.0
47 | loop_match_minimum_response_coarse: 0.35
48 | loop_match_minimum_response_fine: 0.45
49 |
50 | # Correlation Parameters - Correlation Parameters
51 | correlation_search_space_dimension: 0.5
52 | correlation_search_space_resolution: 0.01
53 | correlation_search_space_smear_deviation: 0.1
54 |
55 | # Correlation Parameters - Loop Closure Parameters
56 | loop_search_space_dimension: 8.0
57 | loop_search_space_resolution: 0.05
58 | loop_search_space_smear_deviation: 0.03
59 |
60 | # Scan Matcher Parameters
61 | distance_variance_penalty: 0.5
62 | angle_variance_penalty: 1.0
63 |
64 | fine_search_angle_offset: 0.00349
65 | coarse_search_angle_offset: 0.349
66 | coarse_angle_resolution: 0.0349
67 | minimum_angle_penalty: 0.9
68 | minimum_distance_penalty: 0.5
69 | use_response_expansion: true
70 |
--------------------------------------------------------------------------------
/config/a300/slam.yaml:
--------------------------------------------------------------------------------
1 | slam_toolbox:
2 | ros__parameters:
3 |
4 | # Plugin params
5 | solver_plugin: solver_plugins::CeresSolver
6 | ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
7 | ceres_preconditioner: SCHUR_JACOBI
8 | ceres_trust_strategy: LEVENBERG_MARQUARDT
9 | ceres_dogleg_type: TRADITIONAL_DOGLEG
10 | ceres_loss_function: None
11 |
12 | # ROS Parameters
13 | # These are modified by slam.launch.py
14 | # Do mot modify the map_name or scan_topic here
15 | odom_frame: odom
16 | map_frame: map
17 | map_name: /map
18 | base_frame: base_link
19 | scan_topic: /scan
20 | mode: mapping
21 |
22 | debug_logging: false
23 | throttle_scans: 1
24 | transform_publish_period: 0.02 #if 0 never publishes odometry
25 | map_update_interval: 0.5
26 | resolution: 0.05
27 | max_laser_range: 20.0 #for rastering images
28 | minimum_time_interval: 0.5
29 | transform_timeout: 0.5
30 | tf_buffer_duration: 30.
31 | stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
32 | enable_interactive_mode: true
33 |
34 | # General Parameters
35 | use_scan_matching: true
36 | use_scan_barycenter: true
37 | minimum_travel_distance: 0.0
38 | minimum_travel_heading: 0.0
39 | scan_buffer_size: 10
40 | scan_buffer_maximum_scan_distance: 10.0
41 | link_match_minimum_response_fine: 0.1
42 | link_scan_maximum_distance: 1.5
43 | loop_search_maximum_distance: 3.0
44 | do_loop_closing: true
45 | loop_match_minimum_chain_size: 10
46 | loop_match_maximum_variance_coarse: 3.0
47 | loop_match_minimum_response_coarse: 0.35
48 | loop_match_minimum_response_fine: 0.45
49 |
50 | # Correlation Parameters - Correlation Parameters
51 | correlation_search_space_dimension: 0.5
52 | correlation_search_space_resolution: 0.01
53 | correlation_search_space_smear_deviation: 0.1
54 |
55 | # Correlation Parameters - Loop Closure Parameters
56 | loop_search_space_dimension: 8.0
57 | loop_search_space_resolution: 0.05
58 | loop_search_space_smear_deviation: 0.03
59 |
60 | # Scan Matcher Parameters
61 | distance_variance_penalty: 0.5
62 | angle_variance_penalty: 1.0
63 |
64 | fine_search_angle_offset: 0.00349
65 | coarse_search_angle_offset: 0.349
66 | coarse_angle_resolution: 0.0349
67 | minimum_angle_penalty: 0.9
68 | minimum_distance_penalty: 0.5
69 | use_response_expansion: true
70 |
--------------------------------------------------------------------------------
/config/dd100/slam.yaml:
--------------------------------------------------------------------------------
1 | slam_toolbox:
2 | ros__parameters:
3 |
4 | # Plugin params
5 | solver_plugin: solver_plugins::CeresSolver
6 | ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
7 | ceres_preconditioner: SCHUR_JACOBI
8 | ceres_trust_strategy: LEVENBERG_MARQUARDT
9 | ceres_dogleg_type: TRADITIONAL_DOGLEG
10 | ceres_loss_function: None
11 |
12 | # ROS Parameters
13 | # These are modified by slam.launch.py
14 | # Do mot modify the map_name or scan_topic here
15 | odom_frame: odom
16 | map_frame: map
17 | map_name: /map
18 | base_frame: base_link
19 | scan_topic: /scan
20 | mode: mapping
21 |
22 | debug_logging: false
23 | throttle_scans: 1
24 | transform_publish_period: 0.02 #if 0 never publishes odometry
25 | map_update_interval: 0.5
26 | resolution: 0.05
27 | max_laser_range: 20.0 #for rastering images
28 | minimum_time_interval: 0.5
29 | transform_timeout: 0.5
30 | tf_buffer_duration: 30.
31 | stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
32 | enable_interactive_mode: true
33 |
34 | # General Parameters
35 | use_scan_matching: true
36 | use_scan_barycenter: true
37 | minimum_travel_distance: 0.0
38 | minimum_travel_heading: 0.0
39 | scan_buffer_size: 10
40 | scan_buffer_maximum_scan_distance: 10.0
41 | link_match_minimum_response_fine: 0.1
42 | link_scan_maximum_distance: 1.5
43 | loop_search_maximum_distance: 3.0
44 | do_loop_closing: true
45 | loop_match_minimum_chain_size: 10
46 | loop_match_maximum_variance_coarse: 3.0
47 | loop_match_minimum_response_coarse: 0.35
48 | loop_match_minimum_response_fine: 0.45
49 |
50 | # Correlation Parameters - Correlation Parameters
51 | correlation_search_space_dimension: 0.5
52 | correlation_search_space_resolution: 0.01
53 | correlation_search_space_smear_deviation: 0.1
54 |
55 | # Correlation Parameters - Loop Closure Parameters
56 | loop_search_space_dimension: 8.0
57 | loop_search_space_resolution: 0.05
58 | loop_search_space_smear_deviation: 0.03
59 |
60 | # Scan Matcher Parameters
61 | distance_variance_penalty: 0.5
62 | angle_variance_penalty: 1.0
63 |
64 | fine_search_angle_offset: 0.00349
65 | coarse_search_angle_offset: 0.349
66 | coarse_angle_resolution: 0.0349
67 | minimum_angle_penalty: 0.9
68 | minimum_distance_penalty: 0.5
69 | use_response_expansion: true
70 |
--------------------------------------------------------------------------------
/config/dd150/slam.yaml:
--------------------------------------------------------------------------------
1 | slam_toolbox:
2 | ros__parameters:
3 |
4 | # Plugin params
5 | solver_plugin: solver_plugins::CeresSolver
6 | ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
7 | ceres_preconditioner: SCHUR_JACOBI
8 | ceres_trust_strategy: LEVENBERG_MARQUARDT
9 | ceres_dogleg_type: TRADITIONAL_DOGLEG
10 | ceres_loss_function: None
11 |
12 | # ROS Parameters
13 | # These are modified by slam.launch.py
14 | # Do mot modify the map_name or scan_topic here
15 | odom_frame: odom
16 | map_frame: map
17 | map_name: /map
18 | base_frame: base_link
19 | scan_topic: /scan
20 | mode: mapping
21 |
22 | debug_logging: false
23 | throttle_scans: 1
24 | transform_publish_period: 0.02 #if 0 never publishes odometry
25 | map_update_interval: 0.5
26 | resolution: 0.05
27 | max_laser_range: 20.0 #for rastering images
28 | minimum_time_interval: 0.5
29 | transform_timeout: 0.5
30 | tf_buffer_duration: 30.
31 | stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
32 | enable_interactive_mode: true
33 |
34 | # General Parameters
35 | use_scan_matching: true
36 | use_scan_barycenter: true
37 | minimum_travel_distance: 0.0
38 | minimum_travel_heading: 0.0
39 | scan_buffer_size: 10
40 | scan_buffer_maximum_scan_distance: 10.0
41 | link_match_minimum_response_fine: 0.1
42 | link_scan_maximum_distance: 1.5
43 | loop_search_maximum_distance: 3.0
44 | do_loop_closing: true
45 | loop_match_minimum_chain_size: 10
46 | loop_match_maximum_variance_coarse: 3.0
47 | loop_match_minimum_response_coarse: 0.35
48 | loop_match_minimum_response_fine: 0.45
49 |
50 | # Correlation Parameters - Correlation Parameters
51 | correlation_search_space_dimension: 0.5
52 | correlation_search_space_resolution: 0.01
53 | correlation_search_space_smear_deviation: 0.1
54 |
55 | # Correlation Parameters - Loop Closure Parameters
56 | loop_search_space_dimension: 8.0
57 | loop_search_space_resolution: 0.05
58 | loop_search_space_smear_deviation: 0.03
59 |
60 | # Scan Matcher Parameters
61 | distance_variance_penalty: 0.5
62 | angle_variance_penalty: 1.0
63 |
64 | fine_search_angle_offset: 0.00349
65 | coarse_search_angle_offset: 0.349
66 | coarse_angle_resolution: 0.0349
67 | minimum_angle_penalty: 0.9
68 | minimum_distance_penalty: 0.5
69 | use_response_expansion: true
70 |
--------------------------------------------------------------------------------
/config/do100/slam.yaml:
--------------------------------------------------------------------------------
1 | slam_toolbox:
2 | ros__parameters:
3 |
4 | # Plugin params
5 | solver_plugin: solver_plugins::CeresSolver
6 | ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
7 | ceres_preconditioner: SCHUR_JACOBI
8 | ceres_trust_strategy: LEVENBERG_MARQUARDT
9 | ceres_dogleg_type: TRADITIONAL_DOGLEG
10 | ceres_loss_function: None
11 |
12 | # ROS Parameters
13 | # These are modified by slam.launch.py
14 | # Do mot modify the map_name or scan_topic here
15 | odom_frame: odom
16 | map_frame: map
17 | map_name: /map
18 | base_frame: base_link
19 | scan_topic: /scan
20 | mode: mapping
21 |
22 | debug_logging: false
23 | throttle_scans: 1
24 | transform_publish_period: 0.02 #if 0 never publishes odometry
25 | map_update_interval: 0.5
26 | resolution: 0.05
27 | max_laser_range: 20.0 #for rastering images
28 | minimum_time_interval: 0.5
29 | transform_timeout: 0.5
30 | tf_buffer_duration: 30.
31 | stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
32 | enable_interactive_mode: true
33 |
34 | # General Parameters
35 | use_scan_matching: true
36 | use_scan_barycenter: true
37 | minimum_travel_distance: 0.0
38 | minimum_travel_heading: 0.0
39 | scan_buffer_size: 10
40 | scan_buffer_maximum_scan_distance: 10.0
41 | link_match_minimum_response_fine: 0.1
42 | link_scan_maximum_distance: 1.5
43 | loop_search_maximum_distance: 3.0
44 | do_loop_closing: true
45 | loop_match_minimum_chain_size: 10
46 | loop_match_maximum_variance_coarse: 3.0
47 | loop_match_minimum_response_coarse: 0.35
48 | loop_match_minimum_response_fine: 0.45
49 |
50 | # Correlation Parameters - Correlation Parameters
51 | correlation_search_space_dimension: 0.5
52 | correlation_search_space_resolution: 0.01
53 | correlation_search_space_smear_deviation: 0.1
54 |
55 | # Correlation Parameters - Loop Closure Parameters
56 | loop_search_space_dimension: 8.0
57 | loop_search_space_resolution: 0.05
58 | loop_search_space_smear_deviation: 0.03
59 |
60 | # Scan Matcher Parameters
61 | distance_variance_penalty: 0.5
62 | angle_variance_penalty: 1.0
63 |
64 | fine_search_angle_offset: 0.00349
65 | coarse_search_angle_offset: 0.349
66 | coarse_angle_resolution: 0.0349
67 | minimum_angle_penalty: 0.9
68 | minimum_distance_penalty: 0.5
69 | use_response_expansion: true
70 |
--------------------------------------------------------------------------------
/config/do150/slam.yaml:
--------------------------------------------------------------------------------
1 | slam_toolbox:
2 | ros__parameters:
3 |
4 | # Plugin params
5 | solver_plugin: solver_plugins::CeresSolver
6 | ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
7 | ceres_preconditioner: SCHUR_JACOBI
8 | ceres_trust_strategy: LEVENBERG_MARQUARDT
9 | ceres_dogleg_type: TRADITIONAL_DOGLEG
10 | ceres_loss_function: None
11 |
12 | # ROS Parameters
13 | # These are modified by slam.launch.py
14 | # Do mot modify the map_name or scan_topic here
15 | odom_frame: odom
16 | map_frame: map
17 | map_name: /map
18 | base_frame: base_link
19 | scan_topic: /scan
20 | mode: mapping
21 |
22 | debug_logging: false
23 | throttle_scans: 1
24 | transform_publish_period: 0.02 #if 0 never publishes odometry
25 | map_update_interval: 0.5
26 | resolution: 0.05
27 | max_laser_range: 20.0 #for rastering images
28 | minimum_time_interval: 0.5
29 | transform_timeout: 0.5
30 | tf_buffer_duration: 30.
31 | stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
32 | enable_interactive_mode: true
33 |
34 | # General Parameters
35 | use_scan_matching: true
36 | use_scan_barycenter: true
37 | minimum_travel_distance: 0.0
38 | minimum_travel_heading: 0.0
39 | scan_buffer_size: 10
40 | scan_buffer_maximum_scan_distance: 10.0
41 | link_match_minimum_response_fine: 0.1
42 | link_scan_maximum_distance: 1.5
43 | loop_search_maximum_distance: 3.0
44 | do_loop_closing: true
45 | loop_match_minimum_chain_size: 10
46 | loop_match_maximum_variance_coarse: 3.0
47 | loop_match_minimum_response_coarse: 0.35
48 | loop_match_minimum_response_fine: 0.45
49 |
50 | # Correlation Parameters - Correlation Parameters
51 | correlation_search_space_dimension: 0.5
52 | correlation_search_space_resolution: 0.01
53 | correlation_search_space_smear_deviation: 0.1
54 |
55 | # Correlation Parameters - Loop Closure Parameters
56 | loop_search_space_dimension: 8.0
57 | loop_search_space_resolution: 0.05
58 | loop_search_space_smear_deviation: 0.03
59 |
60 | # Scan Matcher Parameters
61 | distance_variance_penalty: 0.5
62 | angle_variance_penalty: 1.0
63 |
64 | fine_search_angle_offset: 0.00349
65 | coarse_search_angle_offset: 0.349
66 | coarse_angle_resolution: 0.0349
67 | minimum_angle_penalty: 0.9
68 | minimum_distance_penalty: 0.5
69 | use_response_expansion: true
70 |
--------------------------------------------------------------------------------
/config/j100/slam.yaml:
--------------------------------------------------------------------------------
1 | slam_toolbox:
2 | ros__parameters:
3 |
4 | # Plugin params
5 | solver_plugin: solver_plugins::CeresSolver
6 | ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
7 | ceres_preconditioner: SCHUR_JACOBI
8 | ceres_trust_strategy: LEVENBERG_MARQUARDT
9 | ceres_dogleg_type: TRADITIONAL_DOGLEG
10 | ceres_loss_function: None
11 |
12 | # ROS Parameters
13 | # These are modified by slam.launch.py
14 | # Do mot modify the map_name or scan_topic here
15 | odom_frame: odom
16 | map_frame: map
17 | map_name: /map
18 | base_frame: base_link
19 | scan_topic: /scan
20 | mode: mapping
21 |
22 | debug_logging: false
23 | throttle_scans: 1
24 | transform_publish_period: 0.02 #if 0 never publishes odometry
25 | map_update_interval: 0.5
26 | resolution: 0.05
27 | max_laser_range: 20.0 #for rastering images
28 | minimum_time_interval: 0.5
29 | transform_timeout: 0.5
30 | tf_buffer_duration: 30.
31 | stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
32 | enable_interactive_mode: true
33 |
34 | # General Parameters
35 | use_scan_matching: true
36 | use_scan_barycenter: true
37 | minimum_travel_distance: 0.0
38 | minimum_travel_heading: 0.0
39 | scan_buffer_size: 10
40 | scan_buffer_maximum_scan_distance: 10.0
41 | link_match_minimum_response_fine: 0.1
42 | link_scan_maximum_distance: 1.5
43 | loop_search_maximum_distance: 3.0
44 | do_loop_closing: true
45 | loop_match_minimum_chain_size: 10
46 | loop_match_maximum_variance_coarse: 3.0
47 | loop_match_minimum_response_coarse: 0.35
48 | loop_match_minimum_response_fine: 0.45
49 |
50 | # Correlation Parameters - Correlation Parameters
51 | correlation_search_space_dimension: 0.5
52 | correlation_search_space_resolution: 0.01
53 | correlation_search_space_smear_deviation: 0.1
54 |
55 | # Correlation Parameters - Loop Closure Parameters
56 | loop_search_space_dimension: 8.0
57 | loop_search_space_resolution: 0.05
58 | loop_search_space_smear_deviation: 0.03
59 |
60 | # Scan Matcher Parameters
61 | distance_variance_penalty: 0.5
62 | angle_variance_penalty: 1.0
63 |
64 | fine_search_angle_offset: 0.00349
65 | coarse_search_angle_offset: 0.349
66 | coarse_angle_resolution: 0.0349
67 | minimum_angle_penalty: 0.9
68 | minimum_distance_penalty: 0.5
69 | use_response_expansion: true
70 |
--------------------------------------------------------------------------------
/config/r100/slam.yaml:
--------------------------------------------------------------------------------
1 | slam_toolbox:
2 | ros__parameters:
3 |
4 | # Plugin params
5 | solver_plugin: solver_plugins::CeresSolver
6 | ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
7 | ceres_preconditioner: SCHUR_JACOBI
8 | ceres_trust_strategy: LEVENBERG_MARQUARDT
9 | ceres_dogleg_type: TRADITIONAL_DOGLEG
10 | ceres_loss_function: None
11 |
12 | # ROS Parameters
13 | # These are modified by slam.launch.py
14 | # Do mot modify the map_name or scan_topic here
15 | odom_frame: odom
16 | map_frame: map
17 | map_name: /map
18 | base_frame: base_link
19 | scan_topic: /scan
20 | mode: mapping
21 |
22 | debug_logging: false
23 | throttle_scans: 1
24 | transform_publish_period: 0.02 #if 0 never publishes odometry
25 | map_update_interval: 0.5
26 | resolution: 0.05
27 | max_laser_range: 20.0 #for rastering images
28 | minimum_time_interval: 0.5
29 | transform_timeout: 0.5
30 | tf_buffer_duration: 30.
31 | stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
32 | enable_interactive_mode: true
33 |
34 | # General Parameters
35 | use_scan_matching: true
36 | use_scan_barycenter: true
37 | minimum_travel_distance: 0.0
38 | minimum_travel_heading: 0.0
39 | scan_buffer_size: 10
40 | scan_buffer_maximum_scan_distance: 10.0
41 | link_match_minimum_response_fine: 0.1
42 | link_scan_maximum_distance: 1.5
43 | loop_search_maximum_distance: 3.0
44 | do_loop_closing: true
45 | loop_match_minimum_chain_size: 10
46 | loop_match_maximum_variance_coarse: 3.0
47 | loop_match_minimum_response_coarse: 0.35
48 | loop_match_minimum_response_fine: 0.45
49 |
50 | # Correlation Parameters - Correlation Parameters
51 | correlation_search_space_dimension: 0.5
52 | correlation_search_space_resolution: 0.01
53 | correlation_search_space_smear_deviation: 0.1
54 |
55 | # Correlation Parameters - Loop Closure Parameters
56 | loop_search_space_dimension: 8.0
57 | loop_search_space_resolution: 0.05
58 | loop_search_space_smear_deviation: 0.03
59 |
60 | # Scan Matcher Parameters
61 | distance_variance_penalty: 0.5
62 | angle_variance_penalty: 1.0
63 |
64 | fine_search_angle_offset: 0.00349
65 | coarse_search_angle_offset: 0.349
66 | coarse_angle_resolution: 0.0349
67 | minimum_angle_penalty: 0.9
68 | minimum_distance_penalty: 0.5
69 | use_response_expansion: true
70 |
--------------------------------------------------------------------------------
/config/w200/slam.yaml:
--------------------------------------------------------------------------------
1 | slam_toolbox:
2 | ros__parameters:
3 |
4 | # Plugin params
5 | solver_plugin: solver_plugins::CeresSolver
6 | ceres_linear_solver: SPARSE_NORMAL_CHOLESKY
7 | ceres_preconditioner: SCHUR_JACOBI
8 | ceres_trust_strategy: LEVENBERG_MARQUARDT
9 | ceres_dogleg_type: TRADITIONAL_DOGLEG
10 | ceres_loss_function: None
11 |
12 | # ROS Parameters
13 | # These are modified by slam.launch.py
14 | # Do mot modify the map_name or scan_topic here
15 | odom_frame: odom
16 | map_frame: map
17 | map_name: /map
18 | base_frame: base_link
19 | scan_topic: /scan
20 | mode: mapping
21 |
22 | debug_logging: false
23 | throttle_scans: 1
24 | transform_publish_period: 0.02 #if 0 never publishes odometry
25 | map_update_interval: 0.5
26 | resolution: 0.05
27 | max_laser_range: 20.0 #for rastering images
28 | minimum_time_interval: 0.5
29 | transform_timeout: 0.5
30 | tf_buffer_duration: 30.
31 | stack_size_to_use: 40000000 #// program needs a larger stack size to serialize large maps
32 | enable_interactive_mode: true
33 |
34 | # General Parameters
35 | use_scan_matching: true
36 | use_scan_barycenter: true
37 | minimum_travel_distance: 0.0
38 | minimum_travel_heading: 0.0
39 | scan_buffer_size: 10
40 | scan_buffer_maximum_scan_distance: 10.0
41 | link_match_minimum_response_fine: 0.1
42 | link_scan_maximum_distance: 1.5
43 | loop_search_maximum_distance: 3.0
44 | do_loop_closing: true
45 | loop_match_minimum_chain_size: 10
46 | loop_match_maximum_variance_coarse: 3.0
47 | loop_match_minimum_response_coarse: 0.35
48 | loop_match_minimum_response_fine: 0.45
49 |
50 | # Correlation Parameters - Correlation Parameters
51 | correlation_search_space_dimension: 0.5
52 | correlation_search_space_resolution: 0.01
53 | correlation_search_space_smear_deviation: 0.1
54 |
55 | # Correlation Parameters - Loop Closure Parameters
56 | loop_search_space_dimension: 8.0
57 | loop_search_space_resolution: 0.05
58 | loop_search_space_smear_deviation: 0.03
59 |
60 | # Scan Matcher Parameters
61 | distance_variance_penalty: 0.5
62 | angle_variance_penalty: 1.0
63 |
64 | fine_search_angle_offset: 0.00349
65 | coarse_search_angle_offset: 0.349
66 | coarse_angle_resolution: 0.0349
67 | minimum_angle_penalty: 0.9
68 | minimum_distance_penalty: 0.5
69 | use_response_expansion: true
70 |
--------------------------------------------------------------------------------
/CHANGELOG.rst:
--------------------------------------------------------------------------------
1 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2 | Changelog for package clearpath_nav2_demos
3 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
4 |
5 | 2.8.0 (2025-12-12)
6 | ------------------
7 | * Add `scan_topic` launch argument (`#32 `_)
8 | * Contributors: Chris Iverach-Brereton
9 |
10 | 2.7.1 (2025-09-10)
11 | ------------------
12 | * Fix SLAM parameter rewrites for Jazzy (`#31 `_)
13 | * Set the scan_topic parameter to the fully qualified topic, set the map_name parameter
14 | * Add a note about the scan_topic and map_name parameters getting rewritten by the launch file
15 | * Contributors: Chris Iverach-Brereton
16 |
17 | 2.7.0 (2025-08-25)
18 | ------------------
19 | * Accept setup path with or without a trailing slash (`#30 `_)
20 | * Contributors: Hilary Luo
21 |
22 | 2.5.0 (2025-05-30)
23 | ------------------
24 | * Fix typos in issue templates (`#27 `_)
25 | * Add parameter files for Dingo (all variants), Ridgeback (`#25 `_)
26 | * Add parameter files for Dingo (all variants), Ridgeback
27 | * Add trailing newlines to config files, add missing remap to launch file
28 | * Fix the slam launch file to use the new lifecycle node (`#24 `_)
29 | * Contributors: Chris Iverach-Brereton, Hilary Luo
30 |
31 | 2.4.0 (2025-04-30)
32 | ------------------
33 | * Update nav2 configuration files for Jazzy (`#21 `_)
34 | * use_sim_time should not be in the yaml in Jazzy (`#19 `_)
35 | * Contributors: Chris Iverach-Brereton, Hilary Luo
36 |
37 | 2.0.0 (2025-01-31)
38 | ------------------
39 | * Enable stamped cmd_vel messages for Nav2
40 | * Add Nav2 config files for A300. Not yet tested on the physical robot (`#18 `_)
41 | * Remove repos file from CI; it doesn't exist in this repo
42 | * Add source CI
43 | * Update CI for Jazzy
44 | * Fix import ordering, allow shadowing of builtin
45 | * Contributors: Chris Iverach-Brereton
46 |
47 | 0.2.0 (2024-01-22)
48 | ------------------
49 | * Increased inflation radius
50 | * Added W200 configs
51 | * Contributors: Roni Kreinin
52 |
53 | 0.1.0 (2023-09-15)
54 | ------------------
55 | * Updated get model function and remapped scan topics
56 | * Update get model function to match clearpath config
57 | * Remap to correct namespacing on scan topics
58 | * Contributors: Hilary Luo
59 |
60 | 0.0.2 (2023-07-27)
61 | ------------------
62 | * Updated sensor namespace
63 | * Linter fix
64 | * Contributors: Roni Kreinin
65 |
66 | 0.0.1 (2023-07-17)
67 | ------------------
68 | * Added space to package.xml.
69 | * Updated package.xml order.
70 | * Added test dependencies.
71 | * Added Github actions.
72 | * Config updates
73 | * Namespacing fixes
74 | * Updated odom topics
75 | * Fixed footprint and adjusted velocity/accel limits on J100
76 | * Use config to set namespace and platform model
77 | * Current best parameters for Husky
78 | * Cleanup
79 | * Jackal params
80 | * Initial commit
81 | * Initial commit
82 | * Contributors: Hilary Luo, Roni Kreinin, Tony Baltovski
83 |
--------------------------------------------------------------------------------
/launch/nav2.launch.py:
--------------------------------------------------------------------------------
1 | # Software License Agreement (BSD)
2 | #
3 | # @author Roni Kreinin
4 | # @copyright (c) 2023, Clearpath Robotics, Inc., All rights reserved.
5 | #
6 | # Redistribution and use in source and binary forms, with or without
7 | # modification, are permitted provided that the following conditions are met:
8 | # * Redistributions of source code must retain the above copyright notice,
9 | # this list of conditions and the following disclaimer.
10 | # * Redistributions in binary form must reproduce the above copyright notice,
11 | # this list of conditions and the following disclaimer in the documentation
12 | # and/or other materials provided with the distribution.
13 | # * Neither the name of Clearpath Robotics nor the names of its contributors
14 | # may be used to endorse or promote products derived from this software
15 | # without specific prior written permission.
16 | #
17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 | # POSSIBILITY OF SUCH DAMAGE.
28 | import os
29 |
30 | from ament_index_python.packages import get_package_share_directory
31 |
32 | from clearpath_config.clearpath_config import ClearpathConfig
33 | from clearpath_config.common.utils.yaml import read_yaml
34 |
35 | from launch import LaunchDescription
36 | from launch.actions import (
37 | DeclareLaunchArgument,
38 | GroupAction,
39 | IncludeLaunchDescription,
40 | OpaqueFunction
41 | )
42 | from launch.launch_description_sources import PythonLaunchDescriptionSource
43 |
44 | from launch.substitutions import (
45 | LaunchConfiguration,
46 | PathJoinSubstitution
47 | )
48 |
49 | from launch_ros.actions import PushRosNamespace, SetRemap
50 |
51 | from nav2_common.launch import RewrittenYaml
52 |
53 |
54 | ARGUMENTS = [
55 | DeclareLaunchArgument('use_sim_time', default_value='false',
56 | choices=['true', 'false'],
57 | description='Use sim time'),
58 | DeclareLaunchArgument('setup_path',
59 | default_value='/etc/clearpath/',
60 | description='Clearpath setup path'),
61 | DeclareLaunchArgument('scan_topic',
62 | default_value='',
63 | description='Override the default 2D laserscan topic')
64 | ]
65 |
66 |
67 | def launch_setup(context, *args, **kwargs):
68 | # Packages
69 | pkg_clearpath_nav2_demos = get_package_share_directory('clearpath_nav2_demos')
70 | pkg_nav2_bringup = get_package_share_directory('nav2_bringup')
71 |
72 | # Launch Configurations
73 | use_sim_time = LaunchConfiguration('use_sim_time')
74 | setup_path = LaunchConfiguration('setup_path')
75 | scan_topic = LaunchConfiguration('scan_topic')
76 |
77 | # Read robot YAML
78 | config = read_yaml(os.path.join(setup_path.perform(context), 'robot.yaml'))
79 | # Parse robot YAML into config
80 | clearpath_config = ClearpathConfig(config)
81 |
82 | namespace = clearpath_config.system.namespace
83 | platform_model = clearpath_config.platform.get_platform_model()
84 |
85 | # see if we've overridden the scan_topic
86 | eval_scan_topic = scan_topic.perform(context)
87 | if len(eval_scan_topic) == 0:
88 | eval_scan_topic = f'/{namespace}/sensors/lidar2d_0/scan'
89 |
90 | file_parameters = PathJoinSubstitution([
91 | pkg_clearpath_nav2_demos,
92 | 'config',
93 | platform_model,
94 | 'nav2.yaml'])
95 |
96 | rewritten_parameters = RewrittenYaml(
97 | source_file=file_parameters,
98 | param_rewrites={
99 | # the only *.topic parameters are scan.topic, so rewrite all of them to point to
100 | # our desired scan_topic
101 | 'topic': eval_scan_topic,
102 | },
103 | convert_types=True
104 | )
105 |
106 | launch_nav2 = PathJoinSubstitution(
107 | [pkg_nav2_bringup, 'launch', 'navigation_launch.py'])
108 |
109 | nav2 = GroupAction([
110 | PushRosNamespace(namespace),
111 | SetRemap('/' + namespace + '/odom',
112 | '/' + namespace + '/platform/odom'),
113 |
114 | IncludeLaunchDescription(
115 | PythonLaunchDescriptionSource(launch_nav2),
116 | launch_arguments=[
117 | ('use_sim_time', use_sim_time),
118 | ('params_file', rewritten_parameters),
119 | ('use_composition', 'False'),
120 | ('namespace', namespace)
121 | ]
122 | ),
123 | ])
124 |
125 | return [nav2]
126 |
127 |
128 | def generate_launch_description():
129 | ld = LaunchDescription(ARGUMENTS)
130 | ld.add_action(OpaqueFunction(function=launch_setup))
131 | return ld
132 |
--------------------------------------------------------------------------------
/launch/localization.launch.py:
--------------------------------------------------------------------------------
1 | # Software License Agreement (BSD)
2 | #
3 | # @author Roni Kreinin
4 | # @copyright (c) 2023, Clearpath Robotics, Inc., All rights reserved.
5 | #
6 | # Redistribution and use in source and binary forms, with or without
7 | # modification, are permitted provided that the following conditions are met:
8 | # * Redistributions of source code must retain the above copyright notice,
9 | # this list of conditions and the following disclaimer.
10 | # * Redistributions in binary form must reproduce the above copyright notice,
11 | # this list of conditions and the following disclaimer in the documentation
12 | # and/or other materials provided with the distribution.
13 | # * Neither the name of Clearpath Robotics nor the names of its contributors
14 | # may be used to endorse or promote products derived from this software
15 | # without specific prior written permission.
16 | #
17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 | # POSSIBILITY OF SUCH DAMAGE.
28 | import os
29 |
30 | from ament_index_python.packages import get_package_share_directory
31 |
32 | from clearpath_config.clearpath_config import ClearpathConfig
33 | from clearpath_config.common.utils.yaml import read_yaml
34 |
35 | from launch import LaunchDescription
36 | from launch.actions import (
37 | DeclareLaunchArgument,
38 | GroupAction,
39 | IncludeLaunchDescription,
40 | OpaqueFunction
41 | )
42 | from launch.launch_description_sources import PythonLaunchDescriptionSource
43 |
44 | from launch.substitutions import (
45 | LaunchConfiguration,
46 | PathJoinSubstitution
47 | )
48 |
49 | from launch_ros.actions import PushRosNamespace
50 |
51 | from nav2_common.launch import RewrittenYaml
52 |
53 |
54 | ARGUMENTS = [
55 | DeclareLaunchArgument('use_sim_time', default_value='false',
56 | choices=['true', 'false'],
57 | description='Use sim time'),
58 | DeclareLaunchArgument('setup_path',
59 | default_value='/etc/clearpath/',
60 | description='Clearpath setup path'),
61 | DeclareLaunchArgument('scan_topic',
62 | default_value='',
63 | description='Override the default 2D laserscan topic')
64 | ]
65 |
66 |
67 | def launch_setup(context, *args, **kwargs):
68 | # Packages
69 | pkg_clearpath_nav2_demos = get_package_share_directory('clearpath_nav2_demos')
70 | pkg_nav2_bringup = get_package_share_directory('nav2_bringup')
71 |
72 | # Launch Configurations
73 | use_sim_time = LaunchConfiguration('use_sim_time')
74 | setup_path = LaunchConfiguration('setup_path')
75 | map = LaunchConfiguration('map') # noqa:A001
76 | scan_topic = LaunchConfiguration('scan_topic')
77 |
78 | # Read robot YAML
79 | config = read_yaml(os.path.join(setup_path.perform(context), 'robot.yaml'))
80 | # Parse robot YAML into config
81 | clearpath_config = ClearpathConfig(config)
82 |
83 | namespace = clearpath_config.system.namespace
84 | platform_model = clearpath_config.platform.get_platform_model()
85 |
86 | eval_scan_topic = scan_topic.perform(context)
87 | if len(eval_scan_topic) == 0:
88 | eval_scan_topic = f'/{namespace}/sensors/lidar2d_0/scan'
89 |
90 | file_parameters = PathJoinSubstitution([
91 | pkg_clearpath_nav2_demos,
92 | 'config',
93 | platform_model,
94 | 'localization.yaml'])
95 |
96 | rewritten_parameters = RewrittenYaml(
97 | source_file=file_parameters,
98 | param_rewrites={
99 | 'scan_topic': eval_scan_topic,
100 | },
101 | convert_types=True
102 | )
103 |
104 | launch_localization = PathJoinSubstitution(
105 | [pkg_nav2_bringup, 'launch', 'localization_launch.py'])
106 |
107 | localization = GroupAction([
108 | PushRosNamespace(namespace),
109 |
110 | IncludeLaunchDescription(
111 | PythonLaunchDescriptionSource(launch_localization),
112 | launch_arguments=[
113 | ('namespace', namespace),
114 | ('map', map),
115 | ('use_sim_time', use_sim_time),
116 | ('params_file', rewritten_parameters)
117 | ]
118 | ),
119 | ])
120 |
121 | return [localization]
122 |
123 |
124 | def generate_launch_description():
125 | pkg_clearpath_nav2_demos = get_package_share_directory('clearpath_nav2_demos')
126 |
127 | map_arg = DeclareLaunchArgument(
128 | 'map',
129 | default_value=PathJoinSubstitution([pkg_clearpath_nav2_demos, 'maps', 'warehouse.yaml']),
130 | description='Full path to map yaml file to load')
131 |
132 | ld = LaunchDescription(ARGUMENTS)
133 | ld.add_action(map_arg)
134 | ld.add_action(OpaqueFunction(function=launch_setup))
135 | return ld
136 |
--------------------------------------------------------------------------------
/launch/slam.launch.py:
--------------------------------------------------------------------------------
1 | # Software License Agreement (BSD)
2 | #
3 | # @author Roni Kreinin
4 | # @copyright (c) 2023, Clearpath Robotics, Inc., All rights reserved.
5 | #
6 | # Redistribution and use in source and binary forms, with or without
7 | # modification, are permitted provided that the following conditions are met:
8 | # * Redistributions of source code must retain the above copyright notice,
9 | # this list of conditions and the following disclaimer.
10 | # * Redistributions in binary form must reproduce the above copyright notice,
11 | # this list of conditions and the following disclaimer in the documentation
12 | # and/or other materials provided with the distribution.
13 | # * Neither the name of Clearpath Robotics nor the names of its contributors
14 | # may be used to endorse or promote products derived from this software
15 | # without specific prior written permission.
16 | #
17 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 | # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
21 | # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 | # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 | # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 | # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 | # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 | # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 | # POSSIBILITY OF SUCH DAMAGE.
28 | import os
29 |
30 | from ament_index_python.packages import get_package_share_directory
31 |
32 | from clearpath_config.clearpath_config import ClearpathConfig
33 | from clearpath_config.common.utils.yaml import read_yaml
34 |
35 | from launch import LaunchDescription
36 | from launch.actions import (
37 | DeclareLaunchArgument,
38 | GroupAction,
39 | IncludeLaunchDescription,
40 | OpaqueFunction,
41 | )
42 | from launch.conditions import IfCondition, UnlessCondition
43 | from launch.launch_description_sources import PythonLaunchDescriptionSource
44 | from launch.substitutions import (
45 | LaunchConfiguration,
46 | PathJoinSubstitution,
47 | )
48 |
49 | from launch_ros.actions import PushRosNamespace, SetRemap
50 |
51 | from nav2_common.launch import RewrittenYaml
52 |
53 |
54 | ARGUMENTS = [
55 | DeclareLaunchArgument('use_sim_time', default_value='false',
56 | choices=['true', 'false'],
57 | description='Use sim time'),
58 | DeclareLaunchArgument('setup_path',
59 | default_value='/etc/clearpath/',
60 | description='Clearpath setup path'),
61 | DeclareLaunchArgument('autostart', default_value='true',
62 | choices=['true', 'false'],
63 | description='Automatically startup the slamtoolbox. Ignored when use_lifecycle_manager is true.'), # noqa: E501
64 | DeclareLaunchArgument('use_lifecycle_manager', default_value='false',
65 | choices=['true', 'false'],
66 | description='Enable bond connection during node activation'),
67 | DeclareLaunchArgument('sync', default_value='true',
68 | choices=['true', 'false'],
69 | description='Use synchronous SLAM'),
70 | DeclareLaunchArgument('scan_topic',
71 | default_value='',
72 | description='Override the default 2D laserscan topic')
73 | ]
74 |
75 |
76 | def launch_setup(context, *args, **kwargs):
77 | # Packages
78 | pkg_clearpath_nav2_demos = get_package_share_directory('clearpath_nav2_demos')
79 | pkg_slam_toolbox = get_package_share_directory('slam_toolbox')
80 |
81 | # Launch Configurations
82 | use_sim_time = LaunchConfiguration('use_sim_time')
83 | setup_path = LaunchConfiguration('setup_path')
84 | autostart = LaunchConfiguration('autostart')
85 | use_lifecycle_manager = LaunchConfiguration('use_lifecycle_manager')
86 | sync = LaunchConfiguration('sync')
87 | scan_topic = LaunchConfiguration('scan_topic')
88 |
89 | # Read robot YAML
90 | config = read_yaml(os.path.join(setup_path.perform(context), 'robot.yaml'))
91 | # Parse robot YAML into config
92 | clearpath_config = ClearpathConfig(config)
93 |
94 | namespace = clearpath_config.system.namespace
95 | platform_model = clearpath_config.platform.get_platform_model()
96 | eval_scan_topic = scan_topic.perform(context)
97 |
98 | if len(eval_scan_topic) == 0:
99 | eval_scan_topic = f'/{namespace}/sensors/lidar2d_0/scan'
100 |
101 | file_parameters = PathJoinSubstitution([
102 | pkg_clearpath_nav2_demos,
103 | 'config',
104 | platform_model,
105 | 'slam.yaml'])
106 |
107 | rewritten_parameters = RewrittenYaml(
108 | source_file=file_parameters,
109 | root_key=namespace,
110 | param_rewrites={
111 | 'map_name': '/' + namespace + '/map',
112 | 'scan_topic': eval_scan_topic,
113 | },
114 | convert_types=True
115 | )
116 |
117 | launch_slam_sync = PathJoinSubstitution(
118 | [pkg_slam_toolbox, 'launch', 'online_sync_launch.py'])
119 |
120 | launch_slam_async = PathJoinSubstitution(
121 | [pkg_slam_toolbox, 'launch', 'online_async_launch.py'])
122 |
123 | slam = GroupAction([
124 | PushRosNamespace(namespace),
125 |
126 | SetRemap('/tf', '/' + namespace + '/tf'),
127 | SetRemap('/tf_static', '/' + namespace + '/tf_static'),
128 |
129 | IncludeLaunchDescription(
130 | PythonLaunchDescriptionSource(launch_slam_sync),
131 | launch_arguments=[
132 | ('use_sim_time', use_sim_time),
133 | ('autostart', autostart),
134 | ('use_lifecycle_manager', use_lifecycle_manager),
135 | ('slam_params_file', rewritten_parameters)
136 | ],
137 | condition=IfCondition(sync)
138 | ),
139 |
140 | IncludeLaunchDescription(
141 | PythonLaunchDescriptionSource(launch_slam_async),
142 | launch_arguments=[
143 | ('use_sim_time', use_sim_time),
144 | ('autostart', autostart),
145 | ('use_lifecycle_manager', use_lifecycle_manager),
146 | ('slam_params_file', rewritten_parameters)
147 | ],
148 | condition=UnlessCondition(sync)
149 | )
150 | ])
151 |
152 | return [slam]
153 |
154 |
155 | def generate_launch_description():
156 | ld = LaunchDescription(ARGUMENTS)
157 | ld.add_action(OpaqueFunction(function=launch_setup))
158 | return ld
159 |
--------------------------------------------------------------------------------
/config/w200/nav2.yaml:
--------------------------------------------------------------------------------
1 | bt_navigator:
2 | ros__parameters:
3 | enable_stamped_cmd_vel: true
4 | global_frame: map
5 | robot_base_frame: base_link
6 | odom_topic: platform/odom/filtered
7 | bt_loop_duration: 10
8 | default_server_timeout: 20
9 | wait_for_service_timeout: 1000
10 | action_server_result_timeout: 900.0
11 | navigators: ["navigate_to_pose", "navigate_through_poses"]
12 | navigate_to_pose:
13 | plugin: "nav2_bt_navigator::NavigateToPoseNavigator"
14 | navigate_through_poses:
15 | plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator"
16 | error_code_names:
17 | - compute_path_error_code
18 | - follow_path_error_code
19 |
20 | controller_server:
21 | ros__parameters:
22 | enable_stamped_cmd_vel: true
23 | controller_frequency: 20.0
24 | min_x_velocity_threshold: 0.001
25 | min_y_velocity_threshold: 0.5
26 | min_theta_velocity_threshold: 0.001
27 | failure_tolerance: 0.3
28 | progress_checker_plugins: ["progress_checker"]
29 | goal_checker_plugins: ["general_goal_checker"]
30 | controller_plugins: ["FollowPath"]
31 | use_realtime_priority: false
32 | progress_checker:
33 | plugin: "nav2_controller::SimpleProgressChecker"
34 | required_movement_radius: 0.5
35 | movement_time_allowance: 10.0
36 | general_goal_checker:
37 | stateful: true
38 | plugin: "nav2_controller::SimpleGoalChecker"
39 | xy_goal_tolerance: 0.25
40 | yaw_goal_tolerance: 0.25
41 | FollowPath:
42 | plugin: "nav2_mppi_controller::MPPIController"
43 | time_steps: 56
44 | model_dt: 0.05
45 | batch_size: 2000
46 | ax_max: 3.0
47 | ax_min: -3.0
48 | ay_max: 3.0
49 | az_max: 3.5
50 | vx_std: 0.2
51 | vy_std: 0.2
52 | wz_std: 0.4
53 | vx_max: 0.5
54 | vx_min: -0.35
55 | vy_max: 0.5
56 | wz_max: 1.9
57 | iteration_count: 1
58 | prune_distance: 1.7
59 | transform_tolerance: 0.1
60 | temperature: 0.3
61 | gamma: 0.015
62 | motion_model: "DiffDrive"
63 | visualize: true
64 | regenerate_noises: true
65 | TrajectoryVisualizer:
66 | trajectory_step: 5
67 | time_step: 3
68 | AckermannConstraints:
69 | min_turning_r: 0.2
70 | critics: [
71 | "ConstraintCritic", "CostCritic", "GoalCritic",
72 | "GoalAngleCritic", "PathAlignCritic", "PathFollowCritic",
73 | "PathAngleCritic", "PreferForwardCritic"]
74 | ConstraintCritic:
75 | enabled: true
76 | cost_power: 1
77 | cost_weight: 4.0
78 | GoalCritic:
79 | enabled: true
80 | cost_power: 1
81 | cost_weight: 5.0
82 | threshold_to_consider: 1.4
83 | GoalAngleCritic:
84 | enabled: true
85 | cost_power: 1
86 | cost_weight: 3.0
87 | threshold_to_consider: 0.5
88 | PreferForwardCritic:
89 | enabled: true
90 | cost_power: 1
91 | cost_weight: 5.0
92 | threshold_to_consider: 0.5
93 | CostCritic:
94 | enabled: true
95 | cost_power: 1
96 | cost_weight: 3.81
97 | critical_cost: 300.0
98 | consider_footprint: true
99 | collision_cost: 1000000.0
100 | near_goal_distance: 1.0
101 | trajectory_point_step: 2
102 | PathAlignCritic:
103 | enabled: true
104 | cost_power: 1
105 | cost_weight: 14.0
106 | max_path_occupancy_ratio: 0.05
107 | trajectory_point_step: 4
108 | threshold_to_consider: 0.5
109 | offset_from_furthest: 20
110 | use_path_orientations: false
111 | PathFollowCritic:
112 | enabled: true
113 | cost_power: 1
114 | cost_weight: 5.0
115 | offset_from_furthest: 5
116 | threshold_to_consider: 1.4
117 | PathAngleCritic:
118 | enabled: true
119 | cost_power: 1
120 | cost_weight: 2.0
121 | offset_from_furthest: 4
122 | threshold_to_consider: 0.5
123 | max_angle_to_furthest: 1.0
124 | mode: 0
125 |
126 | local_costmap:
127 | local_costmap:
128 | ros__parameters:
129 | enable_stamped_cmd_vel: true
130 | update_frequency: 5.0
131 | publish_frequency: 2.0
132 | global_frame: odom
133 | robot_base_frame: base_link
134 | rolling_window: true
135 | width: 5
136 | height: 5
137 | resolution: 0.06
138 | footprint: "[ [0.76, 0.69], [0.76, -0.69], [-0.76, -0.69], [-0.76, 0.69] ]"
139 | always_send_full_costmap: true
140 | plugins: ["static_layer", "voxel_layer", "inflation_layer"]
141 | inflation_layer:
142 | plugin: "nav2_costmap_2d::InflationLayer"
143 | cost_scaling_factor: 4.0
144 | inflation_radius: 1.0
145 | voxel_layer:
146 | plugin: "nav2_costmap_2d::VoxelLayer"
147 | enabled: true
148 | publish_voxel_map: true
149 | origin_z: 0.0
150 | z_resolution: 0.05
151 | z_voxels: 16
152 | max_obstacle_height: 2.0
153 | mark_threshold: 0
154 | observation_sources: scan
155 | scan:
156 | topic: sensors/lidar2d_0/scan
157 | max_obstacle_height: 2.0
158 | clearing: true
159 | marking: true
160 | data_type: "LaserScan"
161 | raytrace_max_range: 3.0
162 | raytrace_min_range: 0.0
163 | obstacle_max_range: 2.5
164 | obstacle_min_range: 0.0
165 | static_layer:
166 | plugin: "nav2_costmap_2d::StaticLayer"
167 | map_subscribe_transient_local: true
168 |
169 | global_costmap:
170 | global_costmap:
171 | ros__parameters:
172 | enable_stamped_cmd_vel: true
173 | update_frequency: 1.0
174 | publish_frequency: 1.0
175 | global_frame: map
176 | robot_base_frame: base_link
177 | footprint: "[ [0.76, 0.69], [0.76, -0.69], [-0.76, -0.69], [-0.76, 0.69] ]"
178 | resolution: 0.06
179 | track_unknown_space: true
180 | always_send_full_costmap: true
181 | plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
182 | obstacle_layer:
183 | plugin: "nav2_costmap_2d::ObstacleLayer"
184 | enabled: true
185 | observation_sources: scan
186 | scan:
187 | topic: sensors/lidar2d_0/scan
188 | max_obstacle_height: 2.0
189 | clearing: true
190 | marking: true
191 | data_type: "LaserScan"
192 | raytrace_max_range: 3.0
193 | raytrace_min_range: 0.0
194 | obstacle_max_range: 2.5
195 | obstacle_min_range: 0.0
196 | static_layer:
197 | plugin: "nav2_costmap_2d::StaticLayer"
198 | map_subscribe_transient_local: true
199 | inflation_layer:
200 | plugin: "nav2_costmap_2d::InflationLayer"
201 | cost_scaling_factor: 4.0
202 | inflation_radius: 1.0
203 |
204 | planner_server:
205 | ros__parameters:
206 | enable_stamped_cmd_vel: true
207 | # expected_planner_frequency: 20.0
208 | planner_plugins: ["GridBased"]
209 | GridBased:
210 | plugin: "nav2_navfn_planner::NavfnPlanner"
211 | tolerance: 0.5
212 | use_astar: false
213 | allow_unknown: true
214 |
215 | smoother_server:
216 | ros__parameters:
217 | enable_stamped_cmd_vel: true
218 | smoother_plugins: ["simple_smoother"]
219 | simple_smoother:
220 | plugin: "nav2_smoother::SimpleSmoother"
221 | tolerance: 1.0e-10
222 | max_its: 1000
223 | do_refinement: true
224 |
225 | behavior_server:
226 | ros__parameters:
227 | enable_stamped_cmd_vel: true
228 | local_costmap_topic: local_costmap/costmap_raw
229 | global_costmap_topic: global_costmap/costmap_raw
230 | local_footprint_topic: local_costmap/published_footprint
231 | global_footprint_topic: global_costmap/published_footprint
232 | cycle_frequency: 10.0
233 | behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
234 | spin:
235 | plugin: "nav2_behaviors::Spin"
236 | backup:
237 | plugin: "nav2_behaviors::BackUp"
238 | drive_on_heading:
239 | plugin: "nav2_behaviors::DriveOnHeading"
240 | wait:
241 | plugin: "nav2_behaviors::Wait"
242 | assisted_teleop:
243 | plugin: "nav2_behaviors::AssistedTeleop"
244 | global_frame: map
245 | local_frame: odom
246 | robot_base_frame: base_link
247 | transform_tolerance: 0.1
248 | enable_stamped_cmd_vel: true
249 | simulate_ahead_time: 2.0
250 | max_rotational_vel: 1.0
251 | min_rotational_vel: 0.2
252 | rotational_acc_lim: 0.5
253 |
254 | waypoint_follower:
255 | ros__parameters:
256 | enable_stamped_cmd_vel: true
257 | loop_rate: 20
258 | stop_on_failure: false
259 | action_server_result_timeout: 900.0
260 | waypoint_task_executor_plugin: "wait_at_waypoint"
261 | wait_at_waypoint:
262 | plugin: "nav2_waypoint_follower::WaitAtWaypoint"
263 | enabled: true
264 | waypoint_pause_duration: 200
265 |
266 | velocity_smoother:
267 | ros__parameters:
268 | enable_stamped_cmd_vel: true
269 | smoothing_frequency: 20.0
270 | scale_velocities: False
271 | feedback: "OPEN_LOOP"
272 | max_velocity: [5.0, 0.0, 4.0]
273 | min_velocity: [-5.0, 0.0, -4.0]
274 | max_accel: [5.0, 0.0, 40.0]
275 | max_decel: [-5.0, 0.0, -40.0]
276 | odom_topic: "platform/odom/filtered"
277 | odom_duration: 0.1
278 | deadband_velocity: [0.0, 0.0, 0.0]
279 | velocity_timeout: 1.0
280 |
281 | collision_monitor:
282 | ros__parameters:
283 | enable_stamped_cmd_vel: true
284 | base_frame_id: "base_link"
285 | odom_frame_id: "odom"
286 | cmd_vel_in_topic: "cmd_vel_smoothed"
287 | cmd_vel_out_topic: "cmd_vel"
288 | state_topic: "collision_monitor_state"
289 | transform_tolerance: 0.2
290 | source_timeout: 1.0
291 | base_shift_correction: True
292 | stop_pub_timeout: 2.0
293 | # Polygons represent zone around the robot for "stop", "slowdown" and "limit" action types,
294 | # and robot footprint for "approach" action type.
295 | polygons: ["FootprintApproach"]
296 | FootprintApproach:
297 | type: "polygon"
298 | action_type: "approach"
299 | footprint_topic: "local_costmap/published_footprint"
300 | time_before_collision: 1.2
301 | simulation_time_step: 0.1
302 | min_points: 6
303 | visualize: False
304 | enabled: True
305 | observation_sources: ["scan"]
306 | scan:
307 | type: "scan"
308 | topic: "sensors/lidar2d_0/scan"
309 | min_height: 0.15
310 | max_height: 2.0
311 | enabled: True
312 |
313 | docking_server:
314 | ros__parameters:
315 | enable_stamped_cmd_vel: true
316 | controller_frequency: 50.0
317 | initial_perception_timeout: 5.0
318 | wait_charge_timeout: 5.0
319 | dock_approach_timeout: 30.0
320 | undock_linear_tolerance: 0.05
321 | undock_angular_tolerance: 0.1
322 | max_retries: 3
323 | base_frame: "base_link"
324 | fixed_frame: "odom"
325 | dock_backwards: false
326 | dock_prestaging_tolerance: 0.5
327 |
328 | # Types of docks
329 | dock_plugins: ['simple_charging_dock']
330 | simple_charging_dock:
331 | plugin: 'opennav_docking::SimpleChargingDock'
332 | docking_threshold: 0.05
333 | staging_x_offset: -0.7
334 | use_external_detection_pose: true
335 | use_battery_status: false # true
336 | use_stall_detection: false # true
337 |
338 | external_detection_timeout: 1.0
339 | external_detection_translation_x: -0.18
340 | external_detection_translation_y: 0.0
341 | external_detection_rotation_roll: -1.57
342 | external_detection_rotation_pitch: -1.57
343 | external_detection_rotation_yaw: 0.0
344 | filter_coef: 0.1
345 |
346 | # Dock instances
347 | # The following example illustrates configuring dock instances.
348 | # docks: ['home_dock'] # Input your docks here
349 | # home_dock:
350 | # type: 'simple_charging_dock'
351 | # frame: map
352 | # pose: [0.0, 0.0, 0.0]
353 |
354 | controller:
355 | k_phi: 3.0
356 | k_delta: 2.0
357 | v_linear_min: 0.15
358 | v_linear_max: 0.15
359 |
--------------------------------------------------------------------------------
/config/a200/nav2.yaml:
--------------------------------------------------------------------------------
1 | bt_navigator:
2 | ros__parameters:
3 | enable_stamped_cmd_vel: true
4 | global_frame: map
5 | robot_base_frame: base_link
6 | odom_topic: platform/odom/filtered
7 | bt_loop_duration: 10
8 | default_server_timeout: 20
9 | wait_for_service_timeout: 1000
10 | action_server_result_timeout: 900.0
11 | navigators: ["navigate_to_pose", "navigate_through_poses"]
12 | navigate_to_pose:
13 | plugin: "nav2_bt_navigator::NavigateToPoseNavigator"
14 | navigate_through_poses:
15 | plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator"
16 | error_code_names:
17 | - compute_path_error_code
18 | - follow_path_error_code
19 |
20 | controller_server:
21 | ros__parameters:
22 | enable_stamped_cmd_vel: true
23 | controller_frequency: 20.0
24 | min_x_velocity_threshold: 0.001
25 | min_y_velocity_threshold: 0.5
26 | min_theta_velocity_threshold: 0.001
27 | failure_tolerance: 0.3
28 | progress_checker_plugins: ["progress_checker"]
29 | goal_checker_plugins: ["general_goal_checker"]
30 | controller_plugins: ["FollowPath"]
31 | use_realtime_priority: false
32 | progress_checker:
33 | plugin: "nav2_controller::SimpleProgressChecker"
34 | required_movement_radius: 0.5
35 | movement_time_allowance: 10.0
36 | general_goal_checker:
37 | stateful: true
38 | plugin: "nav2_controller::SimpleGoalChecker"
39 | xy_goal_tolerance: 0.25
40 | yaw_goal_tolerance: 0.25
41 | FollowPath:
42 | plugin: "nav2_mppi_controller::MPPIController"
43 | time_steps: 56
44 | model_dt: 0.05
45 | batch_size: 2000
46 | ax_max: 3.0
47 | ax_min: -3.0
48 | ay_max: 3.0
49 | az_max: 3.5
50 | vx_std: 0.2
51 | vy_std: 0.2
52 | wz_std: 0.4
53 | vx_max: 0.5
54 | vx_min: -0.35
55 | vy_max: 0.5
56 | wz_max: 1.9
57 | iteration_count: 1
58 | prune_distance: 1.7
59 | transform_tolerance: 0.1
60 | temperature: 0.3
61 | gamma: 0.015
62 | motion_model: "DiffDrive"
63 | visualize: true
64 | regenerate_noises: true
65 | TrajectoryVisualizer:
66 | trajectory_step: 5
67 | time_step: 3
68 | AckermannConstraints:
69 | min_turning_r: 0.2
70 | critics: [
71 | "ConstraintCritic", "CostCritic", "GoalCritic",
72 | "GoalAngleCritic", "PathAlignCritic", "PathFollowCritic",
73 | "PathAngleCritic", "PreferForwardCritic"]
74 | ConstraintCritic:
75 | enabled: true
76 | cost_power: 1
77 | cost_weight: 4.0
78 | GoalCritic:
79 | enabled: true
80 | cost_power: 1
81 | cost_weight: 5.0
82 | threshold_to_consider: 1.4
83 | GoalAngleCritic:
84 | enabled: true
85 | cost_power: 1
86 | cost_weight: 3.0
87 | threshold_to_consider: 0.5
88 | PreferForwardCritic:
89 | enabled: true
90 | cost_power: 1
91 | cost_weight: 5.0
92 | threshold_to_consider: 0.5
93 | CostCritic:
94 | enabled: true
95 | cost_power: 1
96 | cost_weight: 3.81
97 | critical_cost: 300.0
98 | consider_footprint: true
99 | collision_cost: 1000000.0
100 | near_goal_distance: 1.0
101 | trajectory_point_step: 2
102 | PathAlignCritic:
103 | enabled: true
104 | cost_power: 1
105 | cost_weight: 14.0
106 | max_path_occupancy_ratio: 0.05
107 | trajectory_point_step: 4
108 | threshold_to_consider: 0.5
109 | offset_from_furthest: 20
110 | use_path_orientations: false
111 | PathFollowCritic:
112 | enabled: true
113 | cost_power: 1
114 | cost_weight: 5.0
115 | offset_from_furthest: 5
116 | threshold_to_consider: 1.4
117 | PathAngleCritic:
118 | enabled: true
119 | cost_power: 1
120 | cost_weight: 2.0
121 | offset_from_furthest: 4
122 | threshold_to_consider: 0.5
123 | max_angle_to_furthest: 1.0
124 | mode: 0
125 |
126 | local_costmap:
127 | local_costmap:
128 | ros__parameters:
129 | enable_stamped_cmd_vel: true
130 | update_frequency: 5.0
131 | publish_frequency: 2.0
132 | global_frame: odom
133 | robot_base_frame: base_link
134 | rolling_window: true
135 | width: 5
136 | height: 5
137 | resolution: 0.06
138 | footprint: "[ [0.55, 0.45], [0.55, -0.45], [-0.55, -0.45], [-0.55, 0.45] ]"
139 | always_send_full_costmap: true
140 | plugins: ["static_layer", "voxel_layer", "inflation_layer"]
141 | inflation_layer:
142 | plugin: "nav2_costmap_2d::InflationLayer"
143 | cost_scaling_factor: 4.0
144 | inflation_radius: 0.8
145 | voxel_layer:
146 | plugin: "nav2_costmap_2d::VoxelLayer"
147 | enabled: true
148 | publish_voxel_map: true
149 | origin_z: 0.0
150 | z_resolution: 0.05
151 | z_voxels: 16
152 | max_obstacle_height: 2.0
153 | mark_threshold: 0
154 | observation_sources: scan
155 | scan:
156 | topic: sensors/lidar2d_0/scan
157 | max_obstacle_height: 2.0
158 | clearing: true
159 | marking: true
160 | data_type: "LaserScan"
161 | raytrace_max_range: 3.0
162 | raytrace_min_range: 0.0
163 | obstacle_max_range: 2.5
164 | obstacle_min_range: 0.0
165 | static_layer:
166 | plugin: "nav2_costmap_2d::StaticLayer"
167 | map_subscribe_transient_local: true
168 |
169 | global_costmap:
170 | global_costmap:
171 | ros__parameters:
172 | enable_stamped_cmd_vel: true
173 | update_frequency: 1.0
174 | publish_frequency: 1.0
175 | global_frame: map
176 | robot_base_frame: base_link
177 | footprint: "[ [0.55, 0.45], [0.55, -0.45], [-0.55, -0.45], [-0.55, 0.45] ]"
178 | resolution: 0.06
179 | track_unknown_space: true
180 | always_send_full_costmap: true
181 | plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
182 | obstacle_layer:
183 | plugin: "nav2_costmap_2d::ObstacleLayer"
184 | enabled: true
185 | observation_sources: scan
186 | scan:
187 | topic: sensors/lidar2d_0/scan
188 | max_obstacle_height: 2.0
189 | clearing: true
190 | marking: true
191 | data_type: "LaserScan"
192 | raytrace_max_range: 3.0
193 | raytrace_min_range: 0.0
194 | obstacle_max_range: 2.5
195 | obstacle_min_range: 0.0
196 | static_layer:
197 | plugin: "nav2_costmap_2d::StaticLayer"
198 | map_subscribe_transient_local: true
199 | inflation_layer:
200 | plugin: "nav2_costmap_2d::InflationLayer"
201 | cost_scaling_factor: 4.0
202 | inflation_radius: 0.8
203 |
204 | planner_server:
205 | ros__parameters:
206 | enable_stamped_cmd_vel: true
207 | # expected_planner_frequency: 20.0
208 | planner_plugins: ["GridBased"]
209 | GridBased:
210 | plugin: "nav2_navfn_planner::NavfnPlanner"
211 | tolerance: 0.5
212 | use_astar: false
213 | allow_unknown: true
214 |
215 | smoother_server:
216 | ros__parameters:
217 | enable_stamped_cmd_vel: true
218 | smoother_plugins: ["simple_smoother"]
219 | simple_smoother:
220 | plugin: "nav2_smoother::SimpleSmoother"
221 | tolerance: 1.0e-10
222 | max_its: 1000
223 | do_refinement: true
224 |
225 | behavior_server:
226 | ros__parameters:
227 | enable_stamped_cmd_vel: true
228 | local_costmap_topic: local_costmap/costmap_raw
229 | global_costmap_topic: global_costmap/costmap_raw
230 | local_footprint_topic: local_costmap/published_footprint
231 | global_footprint_topic: global_costmap/published_footprint
232 | cycle_frequency: 10.0
233 | behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
234 | spin:
235 | plugin: "nav2_behaviors::Spin"
236 | backup:
237 | plugin: "nav2_behaviors::BackUp"
238 | drive_on_heading:
239 | plugin: "nav2_behaviors::DriveOnHeading"
240 | wait:
241 | plugin: "nav2_behaviors::Wait"
242 | assisted_teleop:
243 | plugin: "nav2_behaviors::AssistedTeleop"
244 | global_frame: map
245 | local_frame: odom
246 | robot_base_frame: base_link
247 | transform_tolerance: 0.1
248 | enable_stamped_cmd_vel: true
249 | simulate_ahead_time: 2.0
250 | max_rotational_vel: 1.0
251 | min_rotational_vel: 0.2
252 | rotational_acc_lim: 0.5
253 |
254 |
255 | waypoint_follower:
256 | ros__parameters:
257 | enable_stamped_cmd_vel: true
258 | loop_rate: 20
259 | stop_on_failure: false
260 | action_server_result_timeout: 900.0
261 | waypoint_task_executor_plugin: "wait_at_waypoint"
262 | wait_at_waypoint:
263 | plugin: "nav2_waypoint_follower::WaitAtWaypoint"
264 | enabled: true
265 | waypoint_pause_duration: 200
266 |
267 | velocity_smoother:
268 | ros__parameters:
269 | enable_stamped_cmd_vel: true
270 | smoothing_frequency: 20.0
271 | scale_velocities: False
272 | feedback: "OPEN_LOOP"
273 | max_velocity: [1.0, 0.0, 1.0]
274 | min_velocity: [-1.0, 0.0, -1.0]
275 | max_accel: [1.0, 0.0, 1.0]
276 | max_decel: [-1.0, 0.0, -1.0]
277 | odom_topic: "platform/odom/filtered"
278 | odom_duration: 0.1
279 | deadband_velocity: [0.0, 0.0, 0.0]
280 | velocity_timeout: 1.0
281 |
282 | collision_monitor:
283 | ros__parameters:
284 | enable_stamped_cmd_vel: true
285 | base_frame_id: "base_link"
286 | odom_frame_id: "odom"
287 | cmd_vel_in_topic: "cmd_vel_smoothed"
288 | cmd_vel_out_topic: "cmd_vel"
289 | state_topic: "collision_monitor_state"
290 | transform_tolerance: 0.2
291 | source_timeout: 1.0
292 | base_shift_correction: True
293 | stop_pub_timeout: 2.0
294 | # Polygons represent zone around the robot for "stop", "slowdown" and "limit" action types,
295 | # and robot footprint for "approach" action type.
296 | polygons: ["FootprintApproach"]
297 | FootprintApproach:
298 | type: "polygon"
299 | action_type: "approach"
300 | footprint_topic: "local_costmap/published_footprint"
301 | time_before_collision: 1.2
302 | simulation_time_step: 0.1
303 | min_points: 6
304 | visualize: False
305 | enabled: True
306 | observation_sources: ["scan"]
307 | scan:
308 | type: "scan"
309 | topic: "sensors/lidar2d_0/scan"
310 | min_height: 0.15
311 | max_height: 2.0
312 | enabled: True
313 |
314 | docking_server:
315 | ros__parameters:
316 | enable_stamped_cmd_vel: true
317 | controller_frequency: 50.0
318 | initial_perception_timeout: 5.0
319 | wait_charge_timeout: 5.0
320 | dock_approach_timeout: 30.0
321 | undock_linear_tolerance: 0.05
322 | undock_angular_tolerance: 0.1
323 | max_retries: 3
324 | base_frame: "base_link"
325 | fixed_frame: "odom"
326 | dock_backwards: false
327 | dock_prestaging_tolerance: 0.5
328 |
329 | # Types of docks
330 | dock_plugins: ['simple_charging_dock']
331 | simple_charging_dock:
332 | plugin: 'opennav_docking::SimpleChargingDock'
333 | docking_threshold: 0.05
334 | staging_x_offset: -0.7
335 | use_external_detection_pose: true
336 | use_battery_status: false # true
337 | use_stall_detection: false # true
338 |
339 | external_detection_timeout: 1.0
340 | external_detection_translation_x: -0.18
341 | external_detection_translation_y: 0.0
342 | external_detection_rotation_roll: -1.57
343 | external_detection_rotation_pitch: -1.57
344 | external_detection_rotation_yaw: 0.0
345 | filter_coef: 0.1
346 |
347 | # Dock instances
348 | # The following example illustrates configuring dock instances.
349 | # docks: ['home_dock'] # Input your docks here
350 | # home_dock:
351 | # type: 'simple_charging_dock'
352 | # frame: map
353 | # pose: [0.0, 0.0, 0.0]
354 |
355 | controller:
356 | k_phi: 3.0
357 | k_delta: 2.0
358 | v_linear_min: 0.15
359 | v_linear_max: 0.15
360 |
--------------------------------------------------------------------------------
/config/a300/nav2.yaml:
--------------------------------------------------------------------------------
1 | bt_navigator:
2 | ros__parameters:
3 | enable_stamped_cmd_vel: true
4 | global_frame: map
5 | robot_base_frame: base_link
6 | odom_topic: platform/odom/filtered
7 | bt_loop_duration: 10
8 | default_server_timeout: 20
9 | wait_for_service_timeout: 1000
10 | action_server_result_timeout: 900.0
11 | navigators: ["navigate_to_pose", "navigate_through_poses"]
12 | navigate_to_pose:
13 | plugin: "nav2_bt_navigator::NavigateToPoseNavigator"
14 | navigate_through_poses:
15 | plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator"
16 | error_code_names:
17 | - compute_path_error_code
18 | - follow_path_error_code
19 |
20 | controller_server:
21 | ros__parameters:
22 | enable_stamped_cmd_vel: true
23 | controller_frequency: 20.0
24 | min_x_velocity_threshold: 0.001
25 | min_y_velocity_threshold: 0.5
26 | min_theta_velocity_threshold: 0.001
27 | failure_tolerance: 0.3
28 | progress_checker_plugins: ["progress_checker"]
29 | goal_checker_plugins: ["general_goal_checker"]
30 | controller_plugins: ["FollowPath"]
31 | use_realtime_priority: false
32 | progress_checker:
33 | plugin: "nav2_controller::SimpleProgressChecker"
34 | required_movement_radius: 0.5
35 | movement_time_allowance: 10.0
36 | general_goal_checker:
37 | stateful: true
38 | plugin: "nav2_controller::SimpleGoalChecker"
39 | xy_goal_tolerance: 0.25
40 | yaw_goal_tolerance: 0.25
41 | FollowPath:
42 | plugin: "nav2_mppi_controller::MPPIController"
43 | time_steps: 56
44 | model_dt: 0.05
45 | batch_size: 2000
46 | ax_max: 3.0
47 | ax_min: -3.0
48 | ay_max: 3.0
49 | az_max: 3.5
50 | vx_std: 0.2
51 | vy_std: 0.2
52 | wz_std: 0.4
53 | vx_max: 0.5
54 | vx_min: -0.35
55 | vy_max: 0.5
56 | wz_max: 1.9
57 | iteration_count: 1
58 | prune_distance: 1.7
59 | transform_tolerance: 0.1
60 | temperature: 0.3
61 | gamma: 0.015
62 | motion_model: "DiffDrive"
63 | visualize: true
64 | regenerate_noises: true
65 | TrajectoryVisualizer:
66 | trajectory_step: 5
67 | time_step: 3
68 | AckermannConstraints:
69 | min_turning_r: 0.2
70 | critics: [
71 | "ConstraintCritic", "CostCritic", "GoalCritic",
72 | "GoalAngleCritic", "PathAlignCritic", "PathFollowCritic",
73 | "PathAngleCritic", "PreferForwardCritic"]
74 | ConstraintCritic:
75 | enabled: true
76 | cost_power: 1
77 | cost_weight: 4.0
78 | GoalCritic:
79 | enabled: true
80 | cost_power: 1
81 | cost_weight: 5.0
82 | threshold_to_consider: 1.4
83 | GoalAngleCritic:
84 | enabled: true
85 | cost_power: 1
86 | cost_weight: 3.0
87 | threshold_to_consider: 0.5
88 | PreferForwardCritic:
89 | enabled: true
90 | cost_power: 1
91 | cost_weight: 5.0
92 | threshold_to_consider: 0.5
93 | CostCritic:
94 | enabled: true
95 | cost_power: 1
96 | cost_weight: 3.81
97 | critical_cost: 300.0
98 | consider_footprint: true
99 | collision_cost: 1000000.0
100 | near_goal_distance: 1.0
101 | trajectory_point_step: 2
102 | PathAlignCritic:
103 | enabled: true
104 | cost_power: 1
105 | cost_weight: 14.0
106 | max_path_occupancy_ratio: 0.05
107 | trajectory_point_step: 4
108 | threshold_to_consider: 0.5
109 | offset_from_furthest: 20
110 | use_path_orientations: false
111 | PathFollowCritic:
112 | enabled: true
113 | cost_power: 1
114 | cost_weight: 5.0
115 | offset_from_furthest: 5
116 | threshold_to_consider: 1.4
117 | PathAngleCritic:
118 | enabled: true
119 | cost_power: 1
120 | cost_weight: 2.0
121 | offset_from_furthest: 4
122 | threshold_to_consider: 0.5
123 | max_angle_to_furthest: 1.0
124 | mode: 0
125 |
126 | local_costmap:
127 | local_costmap:
128 | ros__parameters:
129 | enable_stamped_cmd_vel: true
130 | update_frequency: 5.0
131 | publish_frequency: 2.0
132 | global_frame: odom
133 | robot_base_frame: base_link
134 | rolling_window: true
135 | width: 5
136 | height: 5
137 | resolution: 0.06
138 | footprint: "[ [0.495, 0.349], [0.495, -0.349], [-0.495, -0.349], [-0.495, 0.349] ]"
139 | always_send_full_costmap: true
140 | plugins: ["static_layer", "voxel_layer", "inflation_layer"]
141 | inflation_layer:
142 | plugin: "nav2_costmap_2d::InflationLayer"
143 | cost_scaling_factor: 4.0
144 | inflation_radius: 0.8
145 | voxel_layer:
146 | plugin: "nav2_costmap_2d::VoxelLayer"
147 | enabled: true
148 | publish_voxel_map: true
149 | origin_z: 0.0
150 | z_resolution: 0.05
151 | z_voxels: 16
152 | max_obstacle_height: 2.0
153 | mark_threshold: 0
154 | observation_sources: scan
155 | scan:
156 | topic: sensors/lidar2d_0/scan
157 | max_obstacle_height: 2.0
158 | clearing: true
159 | marking: true
160 | data_type: "LaserScan"
161 | raytrace_max_range: 3.0
162 | raytrace_min_range: 0.0
163 | obstacle_max_range: 2.5
164 | obstacle_min_range: 0.0
165 | static_layer:
166 | plugin: "nav2_costmap_2d::StaticLayer"
167 | map_subscribe_transient_local: true
168 |
169 | global_costmap:
170 | global_costmap:
171 | ros__parameters:
172 | enable_stamped_cmd_vel: true
173 | update_frequency: 1.0
174 | publish_frequency: 1.0
175 | global_frame: map
176 | robot_base_frame: base_link
177 | footprint: "[ [0.495, 0.349], [0.495, -0.349], [-0.495, -0.349], [-0.495, 0.349] ]"
178 | resolution: 0.06
179 | track_unknown_space: true
180 | always_send_full_costmap: true
181 | plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
182 | obstacle_layer:
183 | plugin: "nav2_costmap_2d::ObstacleLayer"
184 | enabled: true
185 | observation_sources: scan
186 | scan:
187 | topic: sensors/lidar2d_0/scan
188 | max_obstacle_height: 2.0
189 | clearing: true
190 | marking: true
191 | data_type: "LaserScan"
192 | raytrace_max_range: 3.0
193 | raytrace_min_range: 0.0
194 | obstacle_max_range: 2.5
195 | obstacle_min_range: 0.0
196 | static_layer:
197 | plugin: "nav2_costmap_2d::StaticLayer"
198 | map_subscribe_transient_local: true
199 | inflation_layer:
200 | plugin: "nav2_costmap_2d::InflationLayer"
201 | cost_scaling_factor: 4.0
202 | inflation_radius: 0.8
203 |
204 | planner_server:
205 | ros__parameters:
206 | enable_stamped_cmd_vel: true
207 | # expected_planner_frequency: 20.0
208 | planner_plugins: ["GridBased"]
209 | GridBased:
210 | plugin: "nav2_navfn_planner::NavfnPlanner"
211 | tolerance: 0.5
212 | use_astar: false
213 | allow_unknown: true
214 |
215 | smoother_server:
216 | ros__parameters:
217 | enable_stamped_cmd_vel: true
218 | smoother_plugins: ["simple_smoother"]
219 | simple_smoother:
220 | plugin: "nav2_smoother::SimpleSmoother"
221 | tolerance: 1.0e-10
222 | max_its: 1000
223 | do_refinement: true
224 |
225 | behavior_server:
226 | ros__parameters:
227 | enable_stamped_cmd_vel: true
228 | local_costmap_topic: local_costmap/costmap_raw
229 | global_costmap_topic: global_costmap/costmap_raw
230 | local_footprint_topic: local_costmap/published_footprint
231 | global_footprint_topic: global_costmap/published_footprint
232 | cycle_frequency: 10.0
233 | behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
234 | spin:
235 | plugin: "nav2_behaviors::Spin"
236 | backup:
237 | plugin: "nav2_behaviors::BackUp"
238 | drive_on_heading:
239 | plugin: "nav2_behaviors::DriveOnHeading"
240 | wait:
241 | plugin: "nav2_behaviors::Wait"
242 | assisted_teleop:
243 | plugin: "nav2_behaviors::AssistedTeleop"
244 | global_frame: map
245 | local_frame: odom
246 | robot_base_frame: base_link
247 | transform_tolerance: 0.1
248 | enable_stamped_cmd_vel: true
249 | simulate_ahead_time: 2.0
250 | max_rotational_vel: 1.0
251 | min_rotational_vel: 0.2
252 | rotational_acc_lim: 0.5
253 |
254 | waypoint_follower:
255 | ros__parameters:
256 | enable_stamped_cmd_vel: true
257 | loop_rate: 20
258 | stop_on_failure: false
259 | action_server_result_timeout: 900.0
260 | waypoint_task_executor_plugin: "wait_at_waypoint"
261 | wait_at_waypoint:
262 | plugin: "nav2_waypoint_follower::WaitAtWaypoint"
263 | enabled: true
264 | waypoint_pause_duration: 200
265 |
266 | velocity_smoother:
267 | ros__parameters:
268 | enable_stamped_cmd_vel: true
269 | smoothing_frequency: 20.0
270 | scale_velocities: False
271 | feedback: "OPEN_LOOP"
272 | max_velocity: [2.0, 0.0, 2.0]
273 | min_velocity: [-2.0, 0.0, -2.0]
274 | max_accel: [4.0, 0.0, 4.0]
275 | max_decel: [-4.0, 0.0, -4.0]
276 | odom_topic: "platform/odom/filtered"
277 | odom_duration: 0.1
278 | deadband_velocity: [0.0, 0.0, 0.0]
279 | velocity_timeout: 1.0
280 |
281 | collision_monitor:
282 | ros__parameters:
283 | enable_stamped_cmd_vel: true
284 | base_frame_id: "base_link"
285 | odom_frame_id: "odom"
286 | cmd_vel_in_topic: "cmd_vel_smoothed"
287 | cmd_vel_out_topic: "cmd_vel"
288 | state_topic: "collision_monitor_state"
289 | transform_tolerance: 0.2
290 | source_timeout: 1.0
291 | base_shift_correction: True
292 | stop_pub_timeout: 2.0
293 | # Polygons represent zone around the robot for "stop", "slowdown" and "limit" action types,
294 | # and robot footprint for "approach" action type.
295 | polygons: ["FootprintApproach"]
296 | FootprintApproach:
297 | type: "polygon"
298 | action_type: "approach"
299 | footprint_topic: "local_costmap/published_footprint"
300 | time_before_collision: 1.2
301 | simulation_time_step: 0.1
302 | min_points: 6
303 | visualize: False
304 | enabled: True
305 | observation_sources: ["scan"]
306 | scan:
307 | type: "scan"
308 | topic: "sensors/lidar2d_0/scan"
309 | min_height: 0.15
310 | max_height: 2.0
311 | enabled: True
312 |
313 | docking_server:
314 | ros__parameters:
315 | enable_stamped_cmd_vel: true
316 | controller_frequency: 50.0
317 | initial_perception_timeout: 5.0
318 | wait_charge_timeout: 5.0
319 | dock_approach_timeout: 30.0
320 | undock_linear_tolerance: 0.05
321 | undock_angular_tolerance: 0.1
322 | max_retries: 3
323 | base_frame: "base_link"
324 | fixed_frame: "odom"
325 | dock_backwards: false
326 | dock_prestaging_tolerance: 0.5
327 |
328 | # Types of docks
329 | dock_plugins: ['simple_charging_dock']
330 | simple_charging_dock:
331 | plugin: 'opennav_docking::SimpleChargingDock'
332 | docking_threshold: 0.05
333 | staging_x_offset: -0.7
334 | use_external_detection_pose: true
335 | use_battery_status: false # true
336 | use_stall_detection: false # true
337 |
338 | external_detection_timeout: 1.0
339 | external_detection_translation_x: -0.18
340 | external_detection_translation_y: 0.0
341 | external_detection_rotation_roll: -1.57
342 | external_detection_rotation_pitch: -1.57
343 | external_detection_rotation_yaw: 0.0
344 | filter_coef: 0.1
345 |
346 | # Dock instances
347 | # The following example illustrates configuring dock instances.
348 | # docks: ['home_dock'] # Input your docks here
349 | # home_dock:
350 | # type: 'simple_charging_dock'
351 | # frame: map
352 | # pose: [0.0, 0.0, 0.0]
353 |
354 | controller:
355 | k_phi: 3.0
356 | k_delta: 2.0
357 | v_linear_min: 0.15
358 | v_linear_max: 0.15
359 |
--------------------------------------------------------------------------------
/config/do100/nav2.yaml:
--------------------------------------------------------------------------------
1 | bt_navigator:
2 | ros__parameters:
3 | enable_stamped_cmd_vel: true
4 | global_frame: map
5 | robot_base_frame: base_link
6 | odom_topic: platform/odom/filtered
7 | bt_loop_duration: 10
8 | default_server_timeout: 20
9 | wait_for_service_timeout: 1000
10 | action_server_result_timeout: 900.0
11 | navigators: ["navigate_to_pose", "navigate_through_poses"]
12 | navigate_to_pose:
13 | plugin: "nav2_bt_navigator::NavigateToPoseNavigator"
14 | navigate_through_poses:
15 | plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator"
16 | error_code_names:
17 | - compute_path_error_code
18 | - follow_path_error_code
19 |
20 | controller_server:
21 | ros__parameters:
22 | enable_stamped_cmd_vel: true
23 | controller_frequency: 20.0
24 | min_x_velocity_threshold: 0.001
25 | min_y_velocity_threshold: 0.5
26 | min_theta_velocity_threshold: 0.001
27 | failure_tolerance: 0.3
28 | progress_checker_plugins: ["progress_checker"]
29 | goal_checker_plugins: ["general_goal_checker"]
30 | controller_plugins: ["FollowPath"]
31 | use_realtime_priority: false
32 | progress_checker:
33 | plugin: "nav2_controller::SimpleProgressChecker"
34 | required_movement_radius: 0.5
35 | movement_time_allowance: 10.0
36 | general_goal_checker:
37 | stateful: true
38 | plugin: "nav2_controller::SimpleGoalChecker"
39 | xy_goal_tolerance: 0.25
40 | yaw_goal_tolerance: 0.25
41 | FollowPath:
42 | plugin: "nav2_mppi_controller::MPPIController"
43 | time_steps: 56
44 | model_dt: 0.05
45 | batch_size: 2000
46 | ax_max: 3.0
47 | ax_min: -3.0
48 | ay_max: 3.0
49 | az_max: 3.5
50 | vx_std: 0.2
51 | vy_std: 0.2
52 | wz_std: 0.4
53 | vx_max: 0.5
54 | vx_min: -0.35
55 | vy_max: 0.5
56 | wz_max: 1.9
57 | iteration_count: 1
58 | prune_distance: 1.7
59 | transform_tolerance: 0.1
60 | temperature: 0.3
61 | gamma: 0.015
62 | motion_model: "DiffDrive"
63 | visualize: true
64 | regenerate_noises: true
65 | TrajectoryVisualizer:
66 | trajectory_step: 5
67 | time_step: 3
68 | AckermannConstraints:
69 | min_turning_r: 0.2
70 | critics: [
71 | "ConstraintCritic", "CostCritic", "GoalCritic",
72 | "GoalAngleCritic", "PathAlignCritic", "PathFollowCritic",
73 | "PathAngleCritic", "PreferForwardCritic"]
74 | ConstraintCritic:
75 | enabled: true
76 | cost_power: 1
77 | cost_weight: 4.0
78 | GoalCritic:
79 | enabled: true
80 | cost_power: 1
81 | cost_weight: 5.0
82 | threshold_to_consider: 1.4
83 | GoalAngleCritic:
84 | enabled: true
85 | cost_power: 1
86 | cost_weight: 3.0
87 | threshold_to_consider: 0.5
88 | PreferForwardCritic:
89 | enabled: true
90 | cost_power: 1
91 | cost_weight: 5.0
92 | threshold_to_consider: 0.5
93 | CostCritic:
94 | enabled: true
95 | cost_power: 1
96 | cost_weight: 3.81
97 | critical_cost: 300.0
98 | consider_footprint: true
99 | collision_cost: 1000000.0
100 | near_goal_distance: 1.0
101 | trajectory_point_step: 2
102 | PathAlignCritic:
103 | enabled: true
104 | cost_power: 1
105 | cost_weight: 14.0
106 | max_path_occupancy_ratio: 0.05
107 | trajectory_point_step: 4
108 | threshold_to_consider: 0.5
109 | offset_from_furthest: 20
110 | use_path_orientations: false
111 | PathFollowCritic:
112 | enabled: true
113 | cost_power: 1
114 | cost_weight: 5.0
115 | offset_from_furthest: 5
116 | threshold_to_consider: 1.4
117 | PathAngleCritic:
118 | enabled: true
119 | cost_power: 1
120 | cost_weight: 2.0
121 | offset_from_furthest: 4
122 | threshold_to_consider: 0.5
123 | max_angle_to_furthest: 1.0
124 | mode: 0
125 |
126 | local_costmap:
127 | local_costmap:
128 | ros__parameters:
129 | enable_stamped_cmd_vel: true
130 | update_frequency: 5.0
131 | publish_frequency: 2.0
132 | global_frame: odom
133 | robot_base_frame: base_link
134 | rolling_window: true
135 | width: 5
136 | height: 5
137 | resolution: 0.06
138 | footprint: "[ [0.343, 0.2585], [0.343, -0.2585], [-0.343, -0.2585], [-0.343, 0.2585] ]"
139 | always_send_full_costmap: true
140 | plugins: ["static_layer", "voxel_layer", "inflation_layer"]
141 | inflation_layer:
142 | plugin: "nav2_costmap_2d::InflationLayer"
143 | cost_scaling_factor: 4.0
144 | inflation_radius: 0.8
145 | voxel_layer:
146 | plugin: "nav2_costmap_2d::VoxelLayer"
147 | enabled: true
148 | publish_voxel_map: true
149 | origin_z: 0.0
150 | z_resolution: 0.05
151 | z_voxels: 16
152 | max_obstacle_height: 2.0
153 | mark_threshold: 0
154 | observation_sources: scan
155 | scan:
156 | topic: sensors/lidar2d_0/scan
157 | max_obstacle_height: 2.0
158 | clearing: true
159 | marking: true
160 | data_type: "LaserScan"
161 | raytrace_max_range: 3.0
162 | raytrace_min_range: 0.0
163 | obstacle_max_range: 2.5
164 | obstacle_min_range: 0.0
165 | static_layer:
166 | plugin: "nav2_costmap_2d::StaticLayer"
167 | map_subscribe_transient_local: true
168 |
169 | global_costmap:
170 | global_costmap:
171 | ros__parameters:
172 | enable_stamped_cmd_vel: true
173 | update_frequency: 1.0
174 | publish_frequency: 1.0
175 | global_frame: map
176 | robot_base_frame: base_link
177 | footprint: "[ [0.343, 0.2585], [0.343, -0.2585], [-0.343, -0.2585], [-0.343, 0.2585] ]"
178 | resolution: 0.06
179 | track_unknown_space: true
180 | always_send_full_costmap: true
181 | plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
182 | obstacle_layer:
183 | plugin: "nav2_costmap_2d::ObstacleLayer"
184 | enabled: true
185 | observation_sources: scan
186 | scan:
187 | topic: sensors/lidar2d_0/scan
188 | max_obstacle_height: 2.0
189 | clearing: true
190 | marking: true
191 | data_type: "LaserScan"
192 | raytrace_max_range: 3.0
193 | raytrace_min_range: 0.0
194 | obstacle_max_range: 2.5
195 | obstacle_min_range: 0.0
196 | static_layer:
197 | plugin: "nav2_costmap_2d::StaticLayer"
198 | map_subscribe_transient_local: true
199 | inflation_layer:
200 | plugin: "nav2_costmap_2d::InflationLayer"
201 | cost_scaling_factor: 4.0
202 | inflation_radius: 0.8
203 |
204 | planner_server:
205 | ros__parameters:
206 | enable_stamped_cmd_vel: true
207 | # expected_planner_frequency: 20.0
208 | planner_plugins: ["GridBased"]
209 | GridBased:
210 | plugin: "nav2_navfn_planner::NavfnPlanner"
211 | tolerance: 0.5
212 | use_astar: false
213 | allow_unknown: true
214 |
215 | smoother_server:
216 | ros__parameters:
217 | enable_stamped_cmd_vel: true
218 | smoother_plugins: ["simple_smoother"]
219 | simple_smoother:
220 | plugin: "nav2_smoother::SimpleSmoother"
221 | tolerance: 1.0e-10
222 | max_its: 1000
223 | do_refinement: true
224 |
225 | behavior_server:
226 | ros__parameters:
227 | enable_stamped_cmd_vel: true
228 | local_costmap_topic: local_costmap/costmap_raw
229 | global_costmap_topic: global_costmap/costmap_raw
230 | local_footprint_topic: local_costmap/published_footprint
231 | global_footprint_topic: global_costmap/published_footprint
232 | cycle_frequency: 10.0
233 | behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
234 | spin:
235 | plugin: "nav2_behaviors::Spin"
236 | backup:
237 | plugin: "nav2_behaviors::BackUp"
238 | drive_on_heading:
239 | plugin: "nav2_behaviors::DriveOnHeading"
240 | wait:
241 | plugin: "nav2_behaviors::Wait"
242 | assisted_teleop:
243 | plugin: "nav2_behaviors::AssistedTeleop"
244 | global_frame: map
245 | local_frame: odom
246 | robot_base_frame: base_link
247 | transform_tolerance: 0.1
248 | enable_stamped_cmd_vel: true
249 | simulate_ahead_time: 2.0
250 | max_rotational_vel: 1.0
251 | min_rotational_vel: 0.2
252 | rotational_acc_lim: 0.5
253 |
254 | waypoint_follower:
255 | ros__parameters:
256 | enable_stamped_cmd_vel: true
257 | loop_rate: 20
258 | stop_on_failure: false
259 | action_server_result_timeout: 900.0
260 | waypoint_task_executor_plugin: "wait_at_waypoint"
261 | wait_at_waypoint:
262 | plugin: "nav2_waypoint_follower::WaitAtWaypoint"
263 | enabled: true
264 | waypoint_pause_duration: 200
265 |
266 | velocity_smoother:
267 | ros__parameters:
268 | enable_stamped_cmd_vel: true
269 | smoothing_frequency: 20.0
270 | scale_velocities: False
271 | feedback: "OPEN_LOOP"
272 | max_velocity: [1.3, 1.3, 4.0]
273 | min_velocity: [-1.3,-1.3, -4.0]
274 | max_accel: [1.0, 1.0, 2.0]
275 | max_decel: [-1.0, -1.0, -2.0]
276 | odom_topic: "platform/odom/filtered"
277 | odom_duration: 0.1
278 | deadband_velocity: [0.0, 0.0, 0.0]
279 | velocity_timeout: 1.0
280 |
281 | collision_monitor:
282 | ros__parameters:
283 | enable_stamped_cmd_vel: true
284 | base_frame_id: "base_link"
285 | odom_frame_id: "odom"
286 | cmd_vel_in_topic: "cmd_vel_smoothed"
287 | cmd_vel_out_topic: "cmd_vel"
288 | state_topic: "collision_monitor_state"
289 | transform_tolerance: 0.2
290 | source_timeout: 1.0
291 | base_shift_correction: True
292 | stop_pub_timeout: 2.0
293 | # Polygons represent zone around the robot for "stop", "slowdown" and "limit" action types,
294 | # and robot footprint for "approach" action type.
295 | polygons: ["FootprintApproach"]
296 | FootprintApproach:
297 | type: "polygon"
298 | action_type: "approach"
299 | footprint_topic: "local_costmap/published_footprint"
300 | time_before_collision: 1.2
301 | simulation_time_step: 0.1
302 | min_points: 6
303 | visualize: False
304 | enabled: True
305 | observation_sources: ["scan"]
306 | scan:
307 | type: "scan"
308 | topic: "sensors/lidar2d_0/scan"
309 | min_height: 0.15
310 | max_height: 2.0
311 | enabled: True
312 |
313 | docking_server:
314 | ros__parameters:
315 | enable_stamped_cmd_vel: true
316 | controller_frequency: 50.0
317 | initial_perception_timeout: 5.0
318 | wait_charge_timeout: 5.0
319 | dock_approach_timeout: 30.0
320 | undock_linear_tolerance: 0.05
321 | undock_angular_tolerance: 0.1
322 | max_retries: 3
323 | base_frame: "base_link"
324 | fixed_frame: "odom"
325 | dock_backwards: false
326 | dock_prestaging_tolerance: 0.5
327 |
328 | # Types of docks
329 | dock_plugins: ['simple_charging_dock']
330 | simple_charging_dock:
331 | plugin: 'opennav_docking::SimpleChargingDock'
332 | docking_threshold: 0.05
333 | staging_x_offset: -0.7
334 | use_external_detection_pose: true
335 | use_battery_status: false # true
336 | use_stall_detection: false # true
337 |
338 | external_detection_timeout: 1.0
339 | external_detection_translation_x: -0.18
340 | external_detection_translation_y: 0.0
341 | external_detection_rotation_roll: -1.57
342 | external_detection_rotation_pitch: -1.57
343 | external_detection_rotation_yaw: 0.0
344 | filter_coef: 0.1
345 |
346 | # Dock instances
347 | # The following example illustrates configuring dock instances.
348 | # docks: ['home_dock'] # Input your docks here
349 | # home_dock:
350 | # type: 'simple_charging_dock'
351 | # frame: map
352 | # pose: [0.0, 0.0, 0.0]
353 |
354 | controller:
355 | k_phi: 3.0
356 | k_delta: 2.0
357 | v_linear_min: 0.15
358 | v_linear_max: 0.15
359 |
--------------------------------------------------------------------------------
/config/do150/nav2.yaml:
--------------------------------------------------------------------------------
1 | bt_navigator:
2 | ros__parameters:
3 | enable_stamped_cmd_vel: true
4 | global_frame: map
5 | robot_base_frame: base_link
6 | odom_topic: platform/odom/filtered
7 | bt_loop_duration: 10
8 | default_server_timeout: 20
9 | wait_for_service_timeout: 1000
10 | action_server_result_timeout: 900.0
11 | navigators: ["navigate_to_pose", "navigate_through_poses"]
12 | navigate_to_pose:
13 | plugin: "nav2_bt_navigator::NavigateToPoseNavigator"
14 | navigate_through_poses:
15 | plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator"
16 | error_code_names:
17 | - compute_path_error_code
18 | - follow_path_error_code
19 |
20 | controller_server:
21 | ros__parameters:
22 | enable_stamped_cmd_vel: true
23 | controller_frequency: 20.0
24 | min_x_velocity_threshold: 0.001
25 | min_y_velocity_threshold: 0.5
26 | min_theta_velocity_threshold: 0.001
27 | failure_tolerance: 0.3
28 | progress_checker_plugins: ["progress_checker"]
29 | goal_checker_plugins: ["general_goal_checker"]
30 | controller_plugins: ["FollowPath"]
31 | use_realtime_priority: false
32 | progress_checker:
33 | plugin: "nav2_controller::SimpleProgressChecker"
34 | required_movement_radius: 0.5
35 | movement_time_allowance: 10.0
36 | general_goal_checker:
37 | stateful: true
38 | plugin: "nav2_controller::SimpleGoalChecker"
39 | xy_goal_tolerance: 0.25
40 | yaw_goal_tolerance: 0.25
41 | FollowPath:
42 | plugin: "nav2_mppi_controller::MPPIController"
43 | time_steps: 56
44 | model_dt: 0.05
45 | batch_size: 2000
46 | ax_max: 3.0
47 | ax_min: -3.0
48 | ay_max: 3.0
49 | az_max: 3.5
50 | vx_std: 0.2
51 | vy_std: 0.2
52 | wz_std: 0.4
53 | vx_max: 0.5
54 | vx_min: -0.35
55 | vy_max: 0.5
56 | wz_max: 1.9
57 | iteration_count: 1
58 | prune_distance: 1.7
59 | transform_tolerance: 0.1
60 | temperature: 0.3
61 | gamma: 0.015
62 | motion_model: "DiffDrive"
63 | visualize: true
64 | regenerate_noises: true
65 | TrajectoryVisualizer:
66 | trajectory_step: 5
67 | time_step: 3
68 | AckermannConstraints:
69 | min_turning_r: 0.2
70 | critics: [
71 | "ConstraintCritic", "CostCritic", "GoalCritic",
72 | "GoalAngleCritic", "PathAlignCritic", "PathFollowCritic",
73 | "PathAngleCritic", "PreferForwardCritic"]
74 | ConstraintCritic:
75 | enabled: true
76 | cost_power: 1
77 | cost_weight: 4.0
78 | GoalCritic:
79 | enabled: true
80 | cost_power: 1
81 | cost_weight: 5.0
82 | threshold_to_consider: 1.4
83 | GoalAngleCritic:
84 | enabled: true
85 | cost_power: 1
86 | cost_weight: 3.0
87 | threshold_to_consider: 0.5
88 | PreferForwardCritic:
89 | enabled: true
90 | cost_power: 1
91 | cost_weight: 5.0
92 | threshold_to_consider: 0.5
93 | CostCritic:
94 | enabled: true
95 | cost_power: 1
96 | cost_weight: 3.81
97 | critical_cost: 300.0
98 | consider_footprint: true
99 | collision_cost: 1000000.0
100 | near_goal_distance: 1.0
101 | trajectory_point_step: 2
102 | PathAlignCritic:
103 | enabled: true
104 | cost_power: 1
105 | cost_weight: 14.0
106 | max_path_occupancy_ratio: 0.05
107 | trajectory_point_step: 4
108 | threshold_to_consider: 0.5
109 | offset_from_furthest: 20
110 | use_path_orientations: false
111 | PathFollowCritic:
112 | enabled: true
113 | cost_power: 1
114 | cost_weight: 5.0
115 | offset_from_furthest: 5
116 | threshold_to_consider: 1.4
117 | PathAngleCritic:
118 | enabled: true
119 | cost_power: 1
120 | cost_weight: 2.0
121 | offset_from_furthest: 4
122 | threshold_to_consider: 0.5
123 | max_angle_to_furthest: 1.0
124 | mode: 0
125 |
126 | local_costmap:
127 | local_costmap:
128 | ros__parameters:
129 | enable_stamped_cmd_vel: true
130 | update_frequency: 5.0
131 | publish_frequency: 2.0
132 | global_frame: odom
133 | robot_base_frame: base_link
134 | rolling_window: true
135 | width: 5
136 | height: 5
137 | resolution: 0.06
138 | footprint: "[ [0.343, 0.2585], [0.343, -0.2585], [-0.343, -0.2585], [-0.343, 0.2585] ]"
139 | always_send_full_costmap: true
140 | plugins: ["static_layer", "voxel_layer", "inflation_layer"]
141 | inflation_layer:
142 | plugin: "nav2_costmap_2d::InflationLayer"
143 | cost_scaling_factor: 4.0
144 | inflation_radius: 0.8
145 | voxel_layer:
146 | plugin: "nav2_costmap_2d::VoxelLayer"
147 | enabled: true
148 | publish_voxel_map: true
149 | origin_z: 0.0
150 | z_resolution: 0.05
151 | z_voxels: 16
152 | max_obstacle_height: 2.0
153 | mark_threshold: 0
154 | observation_sources: scan
155 | scan:
156 | topic: sensors/lidar2d_0/scan
157 | max_obstacle_height: 2.0
158 | clearing: true
159 | marking: true
160 | data_type: "LaserScan"
161 | raytrace_max_range: 3.0
162 | raytrace_min_range: 0.0
163 | obstacle_max_range: 2.5
164 | obstacle_min_range: 0.0
165 | static_layer:
166 | plugin: "nav2_costmap_2d::StaticLayer"
167 | map_subscribe_transient_local: true
168 |
169 | global_costmap:
170 | global_costmap:
171 | ros__parameters:
172 | enable_stamped_cmd_vel: true
173 | update_frequency: 1.0
174 | publish_frequency: 1.0
175 | global_frame: map
176 | robot_base_frame: base_link
177 | footprint: "[ [0.343, 0.2585], [0.343, -0.2585], [-0.343, -0.2585], [-0.343, 0.2585] ]"
178 | resolution: 0.06
179 | track_unknown_space: true
180 | always_send_full_costmap: true
181 | plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
182 | obstacle_layer:
183 | plugin: "nav2_costmap_2d::ObstacleLayer"
184 | enabled: true
185 | observation_sources: scan
186 | scan:
187 | topic: sensors/lidar2d_0/scan
188 | max_obstacle_height: 2.0
189 | clearing: true
190 | marking: true
191 | data_type: "LaserScan"
192 | raytrace_max_range: 3.0
193 | raytrace_min_range: 0.0
194 | obstacle_max_range: 2.5
195 | obstacle_min_range: 0.0
196 | static_layer:
197 | plugin: "nav2_costmap_2d::StaticLayer"
198 | map_subscribe_transient_local: true
199 | inflation_layer:
200 | plugin: "nav2_costmap_2d::InflationLayer"
201 | cost_scaling_factor: 4.0
202 | inflation_radius: 0.8
203 |
204 | planner_server:
205 | ros__parameters:
206 | enable_stamped_cmd_vel: true
207 | # expected_planner_frequency: 20.0
208 | planner_plugins: ["GridBased"]
209 | GridBased:
210 | plugin: "nav2_navfn_planner::NavfnPlanner"
211 | tolerance: 0.5
212 | use_astar: false
213 | allow_unknown: true
214 |
215 | smoother_server:
216 | ros__parameters:
217 | enable_stamped_cmd_vel: true
218 | smoother_plugins: ["simple_smoother"]
219 | simple_smoother:
220 | plugin: "nav2_smoother::SimpleSmoother"
221 | tolerance: 1.0e-10
222 | max_its: 1000
223 | do_refinement: true
224 |
225 | behavior_server:
226 | ros__parameters:
227 | enable_stamped_cmd_vel: true
228 | local_costmap_topic: local_costmap/costmap_raw
229 | global_costmap_topic: global_costmap/costmap_raw
230 | local_footprint_topic: local_costmap/published_footprint
231 | global_footprint_topic: global_costmap/published_footprint
232 | cycle_frequency: 10.0
233 | behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
234 | spin:
235 | plugin: "nav2_behaviors::Spin"
236 | backup:
237 | plugin: "nav2_behaviors::BackUp"
238 | drive_on_heading:
239 | plugin: "nav2_behaviors::DriveOnHeading"
240 | wait:
241 | plugin: "nav2_behaviors::Wait"
242 | assisted_teleop:
243 | plugin: "nav2_behaviors::AssistedTeleop"
244 | global_frame: map
245 | local_frame: odom
246 | robot_base_frame: base_link
247 | transform_tolerance: 0.1
248 | enable_stamped_cmd_vel: true
249 | simulate_ahead_time: 2.0
250 | max_rotational_vel: 1.0
251 | min_rotational_vel: 0.2
252 | rotational_acc_lim: 0.5
253 |
254 | waypoint_follower:
255 | ros__parameters:
256 | enable_stamped_cmd_vel: true
257 | loop_rate: 20
258 | stop_on_failure: false
259 | action_server_result_timeout: 900.0
260 | waypoint_task_executor_plugin: "wait_at_waypoint"
261 | wait_at_waypoint:
262 | plugin: "nav2_waypoint_follower::WaitAtWaypoint"
263 | enabled: true
264 | waypoint_pause_duration: 200
265 |
266 | velocity_smoother:
267 | ros__parameters:
268 | enable_stamped_cmd_vel: true
269 | smoothing_frequency: 20.0
270 | scale_velocities: False
271 | feedback: "OPEN_LOOP"
272 | max_velocity: [1.3, 1.3, 4.0]
273 | min_velocity: [-1.3,-1.3, -4.0]
274 | max_accel: [1.0, 1.0, 2.0]
275 | max_decel: [-1.0, -1.0, -2.0]
276 | odom_topic: "platform/odom/filtered"
277 | odom_duration: 0.1
278 | deadband_velocity: [0.0, 0.0, 0.0]
279 | velocity_timeout: 1.0
280 |
281 | collision_monitor:
282 | ros__parameters:
283 | enable_stamped_cmd_vel: true
284 | base_frame_id: "base_link"
285 | odom_frame_id: "odom"
286 | cmd_vel_in_topic: "cmd_vel_smoothed"
287 | cmd_vel_out_topic: "cmd_vel"
288 | state_topic: "collision_monitor_state"
289 | transform_tolerance: 0.2
290 | source_timeout: 1.0
291 | base_shift_correction: True
292 | stop_pub_timeout: 2.0
293 | # Polygons represent zone around the robot for "stop", "slowdown" and "limit" action types,
294 | # and robot footprint for "approach" action type.
295 | polygons: ["FootprintApproach"]
296 | FootprintApproach:
297 | type: "polygon"
298 | action_type: "approach"
299 | footprint_topic: "local_costmap/published_footprint"
300 | time_before_collision: 1.2
301 | simulation_time_step: 0.1
302 | min_points: 6
303 | visualize: False
304 | enabled: True
305 | observation_sources: ["scan"]
306 | scan:
307 | type: "scan"
308 | topic: "sensors/lidar2d_0/scan"
309 | min_height: 0.15
310 | max_height: 2.0
311 | enabled: True
312 |
313 | docking_server:
314 | ros__parameters:
315 | enable_stamped_cmd_vel: true
316 | controller_frequency: 50.0
317 | initial_perception_timeout: 5.0
318 | wait_charge_timeout: 5.0
319 | dock_approach_timeout: 30.0
320 | undock_linear_tolerance: 0.05
321 | undock_angular_tolerance: 0.1
322 | max_retries: 3
323 | base_frame: "base_link"
324 | fixed_frame: "odom"
325 | dock_backwards: false
326 | dock_prestaging_tolerance: 0.5
327 |
328 | # Types of docks
329 | dock_plugins: ['simple_charging_dock']
330 | simple_charging_dock:
331 | plugin: 'opennav_docking::SimpleChargingDock'
332 | docking_threshold: 0.05
333 | staging_x_offset: -0.7
334 | use_external_detection_pose: true
335 | use_battery_status: false # true
336 | use_stall_detection: false # true
337 |
338 | external_detection_timeout: 1.0
339 | external_detection_translation_x: -0.18
340 | external_detection_translation_y: 0.0
341 | external_detection_rotation_roll: -1.57
342 | external_detection_rotation_pitch: -1.57
343 | external_detection_rotation_yaw: 0.0
344 | filter_coef: 0.1
345 |
346 | # Dock instances
347 | # The following example illustrates configuring dock instances.
348 | # docks: ['home_dock'] # Input your docks here
349 | # home_dock:
350 | # type: 'simple_charging_dock'
351 | # frame: map
352 | # pose: [0.0, 0.0, 0.0]
353 |
354 | controller:
355 | k_phi: 3.0
356 | k_delta: 2.0
357 | v_linear_min: 0.15
358 | v_linear_max: 0.15
359 |
--------------------------------------------------------------------------------
/config/r100/nav2.yaml:
--------------------------------------------------------------------------------
1 | bt_navigator:
2 | ros__parameters:
3 | enable_stamped_cmd_vel: true
4 | global_frame: map
5 | robot_base_frame: base_link
6 | odom_topic: platform/odom/filtered
7 | bt_loop_duration: 10
8 | default_server_timeout: 20
9 | wait_for_service_timeout: 1000
10 | action_server_result_timeout: 900.0
11 | navigators: ["navigate_to_pose", "navigate_through_poses"]
12 | navigate_to_pose:
13 | plugin: "nav2_bt_navigator::NavigateToPoseNavigator"
14 | navigate_through_poses:
15 | plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator"
16 | error_code_names:
17 | - compute_path_error_code
18 | - follow_path_error_code
19 |
20 | controller_server:
21 | ros__parameters:
22 | enable_stamped_cmd_vel: true
23 | controller_frequency: 20.0
24 | min_x_velocity_threshold: 0.001
25 | min_y_velocity_threshold: 0.5
26 | min_theta_velocity_threshold: 0.001
27 | failure_tolerance: 0.3
28 | progress_checker_plugins: ["progress_checker"]
29 | goal_checker_plugins: ["general_goal_checker"]
30 | controller_plugins: ["FollowPath"]
31 | use_realtime_priority: false
32 | progress_checker:
33 | plugin: "nav2_controller::SimpleProgressChecker"
34 | required_movement_radius: 0.5
35 | movement_time_allowance: 10.0
36 | general_goal_checker:
37 | stateful: true
38 | plugin: "nav2_controller::SimpleGoalChecker"
39 | xy_goal_tolerance: 0.25
40 | yaw_goal_tolerance: 0.25
41 | FollowPath:
42 | plugin: "nav2_mppi_controller::MPPIController"
43 | time_steps: 56
44 | model_dt: 0.05
45 | batch_size: 2000
46 | ax_max: 3.0
47 | ax_min: -3.0
48 | ay_max: 3.0
49 | az_max: 3.5
50 | vx_std: 0.2
51 | vy_std: 0.2
52 | wz_std: 0.4
53 | vx_max: 0.5
54 | vx_min: -0.35
55 | vy_max: 0.5
56 | wz_max: 1.9
57 | iteration_count: 1
58 | prune_distance: 1.7
59 | transform_tolerance: 0.1
60 | temperature: 0.3
61 | gamma: 0.015
62 | motion_model: "DiffDrive"
63 | visualize: true
64 | regenerate_noises: true
65 | TrajectoryVisualizer:
66 | trajectory_step: 5
67 | time_step: 3
68 | AckermannConstraints:
69 | min_turning_r: 0.2
70 | critics: [
71 | "ConstraintCritic", "CostCritic", "GoalCritic",
72 | "GoalAngleCritic", "PathAlignCritic", "PathFollowCritic",
73 | "PathAngleCritic", "PreferForwardCritic"]
74 | ConstraintCritic:
75 | enabled: true
76 | cost_power: 1
77 | cost_weight: 4.0
78 | GoalCritic:
79 | enabled: true
80 | cost_power: 1
81 | cost_weight: 5.0
82 | threshold_to_consider: 1.4
83 | GoalAngleCritic:
84 | enabled: true
85 | cost_power: 1
86 | cost_weight: 3.0
87 | threshold_to_consider: 0.5
88 | PreferForwardCritic:
89 | enabled: true
90 | cost_power: 1
91 | cost_weight: 5.0
92 | threshold_to_consider: 0.5
93 | CostCritic:
94 | enabled: true
95 | cost_power: 1
96 | cost_weight: 3.81
97 | critical_cost: 300.0
98 | consider_footprint: true
99 | collision_cost: 1000000.0
100 | near_goal_distance: 1.0
101 | trajectory_point_step: 2
102 | PathAlignCritic:
103 | enabled: true
104 | cost_power: 1
105 | cost_weight: 14.0
106 | max_path_occupancy_ratio: 0.05
107 | trajectory_point_step: 4
108 | threshold_to_consider: 0.5
109 | offset_from_furthest: 20
110 | use_path_orientations: false
111 | PathFollowCritic:
112 | enabled: true
113 | cost_power: 1
114 | cost_weight: 5.0
115 | offset_from_furthest: 5
116 | threshold_to_consider: 1.4
117 | PathAngleCritic:
118 | enabled: true
119 | cost_power: 1
120 | cost_weight: 2.0
121 | offset_from_furthest: 4
122 | threshold_to_consider: 0.5
123 | max_angle_to_furthest: 1.0
124 | mode: 0
125 |
126 | local_costmap:
127 | local_costmap:
128 | ros__parameters:
129 | enable_stamped_cmd_vel: true
130 | update_frequency: 5.0
131 | publish_frequency: 2.0
132 | global_frame: odom
133 | robot_base_frame: base_link
134 | rolling_window: true
135 | width: 5
136 | height: 5
137 | resolution: 0.06
138 | footprint: "[ [0.480, 0.3965], [0.480, -0.3965], [-0.480, -0.3965], [-0.480, 0.3965] ]"
139 | always_send_full_costmap: true
140 | plugins: ["static_layer", "voxel_layer", "inflation_layer"]
141 | inflation_layer:
142 | plugin: "nav2_costmap_2d::InflationLayer"
143 | cost_scaling_factor: 4.0
144 | inflation_radius: 0.8
145 | voxel_layer:
146 | plugin: "nav2_costmap_2d::VoxelLayer"
147 | enabled: true
148 | publish_voxel_map: true
149 | origin_z: 0.0
150 | z_resolution: 0.05
151 | z_voxels: 16
152 | max_obstacle_height: 2.0
153 | mark_threshold: 0
154 | observation_sources: scan
155 | scan:
156 | topic: sensors/lidar2d_0/scan
157 | max_obstacle_height: 2.0
158 | clearing: true
159 | marking: true
160 | data_type: "LaserScan"
161 | raytrace_max_range: 3.0
162 | raytrace_min_range: 0.0
163 | obstacle_max_range: 2.5
164 | obstacle_min_range: 0.0
165 | static_layer:
166 | plugin: "nav2_costmap_2d::StaticLayer"
167 | map_subscribe_transient_local: true
168 |
169 | global_costmap:
170 | global_costmap:
171 | ros__parameters:
172 | enable_stamped_cmd_vel: true
173 | update_frequency: 1.0
174 | publish_frequency: 1.0
175 | global_frame: map
176 | robot_base_frame: base_link
177 | footprint: "[ [0.480, 0.3965], [0.480, -0.3965], [-0.480, -0.3965], [-0.480, 0.3965] ]"
178 | resolution: 0.06
179 | track_unknown_space: true
180 | always_send_full_costmap: true
181 | plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
182 | obstacle_layer:
183 | plugin: "nav2_costmap_2d::ObstacleLayer"
184 | enabled: true
185 | observation_sources: scan
186 | scan:
187 | topic: sensors/lidar2d_0/scan
188 | max_obstacle_height: 2.0
189 | clearing: true
190 | marking: true
191 | data_type: "LaserScan"
192 | raytrace_max_range: 3.0
193 | raytrace_min_range: 0.0
194 | obstacle_max_range: 2.5
195 | obstacle_min_range: 0.0
196 | static_layer:
197 | plugin: "nav2_costmap_2d::StaticLayer"
198 | map_subscribe_transient_local: true
199 | inflation_layer:
200 | plugin: "nav2_costmap_2d::InflationLayer"
201 | cost_scaling_factor: 4.0
202 | inflation_radius: 0.8
203 |
204 | planner_server:
205 | ros__parameters:
206 | enable_stamped_cmd_vel: true
207 | # expected_planner_frequency: 20.0
208 | planner_plugins: ["GridBased"]
209 | GridBased:
210 | plugin: "nav2_navfn_planner::NavfnPlanner"
211 | tolerance: 0.5
212 | use_astar: false
213 | allow_unknown: true
214 |
215 | smoother_server:
216 | ros__parameters:
217 | enable_stamped_cmd_vel: true
218 | smoother_plugins: ["simple_smoother"]
219 | simple_smoother:
220 | plugin: "nav2_smoother::SimpleSmoother"
221 | tolerance: 1.0e-10
222 | max_its: 1000
223 | do_refinement: true
224 |
225 | behavior_server:
226 | ros__parameters:
227 | enable_stamped_cmd_vel: true
228 | local_costmap_topic: local_costmap/costmap_raw
229 | global_costmap_topic: global_costmap/costmap_raw
230 | local_footprint_topic: local_costmap/published_footprint
231 | global_footprint_topic: global_costmap/published_footprint
232 | cycle_frequency: 10.0
233 | behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
234 | spin:
235 | plugin: "nav2_behaviors::Spin"
236 | backup:
237 | plugin: "nav2_behaviors::BackUp"
238 | drive_on_heading:
239 | plugin: "nav2_behaviors::DriveOnHeading"
240 | wait:
241 | plugin: "nav2_behaviors::Wait"
242 | assisted_teleop:
243 | plugin: "nav2_behaviors::AssistedTeleop"
244 | global_frame: map
245 | local_frame: odom
246 | robot_base_frame: base_link
247 | transform_tolerance: 0.1
248 | enable_stamped_cmd_vel: true
249 | simulate_ahead_time: 2.0
250 | max_rotational_vel: 1.0
251 | min_rotational_vel: 0.2
252 | rotational_acc_lim: 0.5
253 |
254 | waypoint_follower:
255 | ros__parameters:
256 | enable_stamped_cmd_vel: true
257 | loop_rate: 20
258 | stop_on_failure: false
259 | action_server_result_timeout: 900.0
260 | waypoint_task_executor_plugin: "wait_at_waypoint"
261 | wait_at_waypoint:
262 | plugin: "nav2_waypoint_follower::WaitAtWaypoint"
263 | enabled: true
264 | waypoint_pause_duration: 200
265 |
266 | velocity_smoother:
267 | ros__parameters:
268 | enable_stamped_cmd_vel: true
269 | smoothing_frequency: 20.0
270 | scale_velocities: False
271 | feedback: "OPEN_LOOP"
272 | max_velocity: [1.3, 1.3, 4.0]
273 | min_velocity: [-1.3,-1.3, -4.0]
274 | max_accel: [1.0, 1.0, 2.0]
275 | max_decel: [-1.0, -1.0, -2.0]
276 | odom_topic: "platform/odom/filtered"
277 | odom_duration: 0.1
278 | deadband_velocity: [0.0, 0.0, 0.0]
279 | velocity_timeout: 1.0
280 |
281 | collision_monitor:
282 | ros__parameters:
283 | enable_stamped_cmd_vel: true
284 | base_frame_id: "base_link"
285 | odom_frame_id: "odom"
286 | cmd_vel_in_topic: "cmd_vel_smoothed"
287 | cmd_vel_out_topic: "cmd_vel"
288 | state_topic: "collision_monitor_state"
289 | transform_tolerance: 0.2
290 | source_timeout: 1.0
291 | base_shift_correction: True
292 | stop_pub_timeout: 2.0
293 | # Polygons represent zone around the robot for "stop", "slowdown" and "limit" action types,
294 | # and robot footprint for "approach" action type.
295 | polygons: ["FootprintApproach"]
296 | FootprintApproach:
297 | type: "polygon"
298 | action_type: "approach"
299 | footprint_topic: "local_costmap/published_footprint"
300 | time_before_collision: 1.2
301 | simulation_time_step: 0.1
302 | min_points: 6
303 | visualize: False
304 | enabled: True
305 | observation_sources: ["scan"]
306 | scan:
307 | type: "scan"
308 | topic: "sensors/lidar2d_0/scan"
309 | min_height: 0.15
310 | max_height: 2.0
311 | enabled: True
312 |
313 | docking_server:
314 | ros__parameters:
315 | enable_stamped_cmd_vel: true
316 | controller_frequency: 50.0
317 | initial_perception_timeout: 5.0
318 | wait_charge_timeout: 5.0
319 | dock_approach_timeout: 30.0
320 | undock_linear_tolerance: 0.05
321 | undock_angular_tolerance: 0.1
322 | max_retries: 3
323 | base_frame: "base_link"
324 | fixed_frame: "odom"
325 | dock_backwards: false
326 | dock_prestaging_tolerance: 0.5
327 |
328 | # Types of docks
329 | dock_plugins: ['simple_charging_dock']
330 | simple_charging_dock:
331 | plugin: 'opennav_docking::SimpleChargingDock'
332 | docking_threshold: 0.05
333 | staging_x_offset: -0.7
334 | use_external_detection_pose: true
335 | use_battery_status: false # true
336 | use_stall_detection: false # true
337 |
338 | external_detection_timeout: 1.0
339 | external_detection_translation_x: -0.18
340 | external_detection_translation_y: 0.0
341 | external_detection_rotation_roll: -1.57
342 | external_detection_rotation_pitch: -1.57
343 | external_detection_rotation_yaw: 0.0
344 | filter_coef: 0.1
345 |
346 | # Dock instances
347 | # The following example illustrates configuring dock instances.
348 | # docks: ['home_dock'] # Input your docks here
349 | # home_dock:
350 | # type: 'simple_charging_dock'
351 | # frame: map
352 | # pose: [0.0, 0.0, 0.0]
353 |
354 | controller:
355 | k_phi: 3.0
356 | k_delta: 2.0
357 | v_linear_min: 0.15
358 | v_linear_max: 0.15
359 |
--------------------------------------------------------------------------------
/config/j100/nav2.yaml:
--------------------------------------------------------------------------------
1 | bt_navigator:
2 | ros__parameters:
3 | enable_stamped_cmd_vel: true
4 | global_frame: map
5 | robot_base_frame: base_link
6 | odom_topic: platform/odom/filtered
7 | bt_loop_duration: 10
8 | default_server_timeout: 20
9 | wait_for_service_timeout: 1000
10 | action_server_result_timeout: 900.0
11 | navigators: ["navigate_to_pose", "navigate_through_poses"]
12 | navigate_to_pose:
13 | plugin: "nav2_bt_navigator::NavigateToPoseNavigator"
14 | navigate_through_poses:
15 | plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator"
16 | error_code_names:
17 | - compute_path_error_code
18 | - follow_path_error_code
19 |
20 | controller_server:
21 | ros__parameters:
22 | enable_stamped_cmd_vel: true
23 | controller_frequency: 20.0
24 | min_x_velocity_threshold: 0.001
25 | min_y_velocity_threshold: 0.5
26 | min_theta_velocity_threshold: 0.001
27 | failure_tolerance: 0.3
28 | progress_checker_plugins: ["progress_checker"]
29 | goal_checker_plugins: ["general_goal_checker"]
30 | controller_plugins: ["FollowPath"]
31 | use_realtime_priority: false
32 | progress_checker:
33 | plugin: "nav2_controller::SimpleProgressChecker"
34 | required_movement_radius: 0.5
35 | movement_time_allowance: 10.0
36 | general_goal_checker:
37 | stateful: true
38 | plugin: "nav2_controller::SimpleGoalChecker"
39 | xy_goal_tolerance: 0.25
40 | yaw_goal_tolerance: 0.25
41 | FollowPath:
42 | plugin: "nav2_mppi_controller::MPPIController"
43 | time_steps: 56
44 | model_dt: 0.05
45 | batch_size: 2000
46 | ax_max: 3.0
47 | ax_min: -3.0
48 | ay_max: 3.0
49 | az_max: 3.5
50 | vx_std: 0.2
51 | vy_std: 0.2
52 | wz_std: 0.4
53 | vx_max: 0.5
54 | vx_min: -0.35
55 | vy_max: 0.5
56 | wz_max: 1.9
57 | iteration_count: 1
58 | prune_distance: 1.7
59 | transform_tolerance: 0.1
60 | temperature: 0.3
61 | gamma: 0.015
62 | motion_model: "DiffDrive"
63 | visualize: true
64 | regenerate_noises: true
65 | TrajectoryVisualizer:
66 | trajectory_step: 5
67 | time_step: 3
68 | AckermannConstraints:
69 | min_turning_r: 0.2
70 | critics: [
71 | "ConstraintCritic", "CostCritic", "GoalCritic",
72 | "GoalAngleCritic", "PathAlignCritic", "PathFollowCritic",
73 | "PathAngleCritic", "PreferForwardCritic"]
74 | ConstraintCritic:
75 | enabled: true
76 | cost_power: 1
77 | cost_weight: 4.0
78 | GoalCritic:
79 | enabled: true
80 | cost_power: 1
81 | cost_weight: 5.0
82 | threshold_to_consider: 1.4
83 | GoalAngleCritic:
84 | enabled: true
85 | cost_power: 1
86 | cost_weight: 3.0
87 | threshold_to_consider: 0.5
88 | PreferForwardCritic:
89 | enabled: true
90 | cost_power: 1
91 | cost_weight: 5.0
92 | threshold_to_consider: 0.5
93 | CostCritic:
94 | enabled: true
95 | cost_power: 1
96 | cost_weight: 3.81
97 | critical_cost: 300.0
98 | consider_footprint: true
99 | collision_cost: 1000000.0
100 | near_goal_distance: 1.0
101 | trajectory_point_step: 2
102 | PathAlignCritic:
103 | enabled: true
104 | cost_power: 1
105 | cost_weight: 14.0
106 | max_path_occupancy_ratio: 0.05
107 | trajectory_point_step: 4
108 | threshold_to_consider: 0.5
109 | offset_from_furthest: 20
110 | use_path_orientations: false
111 | PathFollowCritic:
112 | enabled: true
113 | cost_power: 1
114 | cost_weight: 5.0
115 | offset_from_furthest: 5
116 | threshold_to_consider: 1.4
117 | PathAngleCritic:
118 | enabled: true
119 | cost_power: 1
120 | cost_weight: 2.0
121 | offset_from_furthest: 4
122 | threshold_to_consider: 0.5
123 | max_angle_to_furthest: 1.0
124 | mode: 0
125 |
126 | local_costmap:
127 | local_costmap:
128 | ros__parameters:
129 | enable_stamped_cmd_vel: true
130 | update_frequency: 5.0
131 | publish_frequency: 2.0
132 | global_frame: odom
133 | robot_base_frame: base_link
134 | rolling_window: true
135 | width: 5
136 | height: 5
137 | resolution: 0.06
138 | footprint: "[ [0.254, 0.2159], [0.254, -0.2159], [-0.254, -0.2159], [-0.254, 0.2159] ]"
139 | always_send_full_costmap: true
140 | plugins: ["static_layer", "voxel_layer", "inflation_layer"]
141 | inflation_layer:
142 | plugin: "nav2_costmap_2d::InflationLayer"
143 | cost_scaling_factor: 4.0
144 | inflation_radius: 0.8
145 | voxel_layer:
146 | plugin: "nav2_costmap_2d::VoxelLayer"
147 | enabled: true
148 | publish_voxel_map: true
149 | origin_z: 0.0
150 | z_resolution: 0.05
151 | z_voxels: 16
152 | max_obstacle_height: 2.0
153 | mark_threshold: 0
154 | observation_sources: scan
155 | scan:
156 | topic: sensors/lidar2d_0/scan
157 | max_obstacle_height: 2.0
158 | clearing: true
159 | marking: true
160 | data_type: "LaserScan"
161 | raytrace_max_range: 3.0
162 | raytrace_min_range: 0.0
163 | obstacle_max_range: 2.5
164 | obstacle_min_range: 0.0
165 | static_layer:
166 | plugin: "nav2_costmap_2d::StaticLayer"
167 | map_subscribe_transient_local: true
168 |
169 | global_costmap:
170 | global_costmap:
171 | ros__parameters:
172 | enable_stamped_cmd_vel: true
173 | update_frequency: 1.0
174 | publish_frequency: 1.0
175 | global_frame: map
176 | robot_base_frame: base_link
177 | footprint: "[ [0.254, 0.2159], [0.254, -0.2159], [-0.254, -0.2159], [-0.254, 0.2159] ]"
178 | resolution: 0.06
179 | track_unknown_space: true
180 | always_send_full_costmap: true
181 | plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
182 | obstacle_layer:
183 | plugin: "nav2_costmap_2d::ObstacleLayer"
184 | enabled: true
185 | observation_sources: scan
186 | scan:
187 | topic: sensors/lidar2d_0/scan
188 | max_obstacle_height: 2.0
189 | clearing: true
190 | marking: true
191 | data_type: "LaserScan"
192 | raytrace_max_range: 3.0
193 | raytrace_min_range: 0.0
194 | obstacle_max_range: 2.5
195 | obstacle_min_range: 0.0
196 | static_layer:
197 | plugin: "nav2_costmap_2d::StaticLayer"
198 | map_subscribe_transient_local: true
199 | inflation_layer:
200 | plugin: "nav2_costmap_2d::InflationLayer"
201 | cost_scaling_factor: 4.0
202 | inflation_radius: 0.8
203 |
204 | planner_server:
205 | ros__parameters:
206 | enable_stamped_cmd_vel: true
207 | # expected_planner_frequency: 20.0
208 | planner_plugins: ["GridBased"]
209 | GridBased:
210 | plugin: "nav2_navfn_planner::NavfnPlanner"
211 | tolerance: 0.5
212 | use_astar: false
213 | allow_unknown: true
214 |
215 | smoother_server:
216 | ros__parameters:
217 | enable_stamped_cmd_vel: true
218 | smoother_plugins: ["simple_smoother"]
219 | simple_smoother:
220 | plugin: "nav2_smoother::SimpleSmoother"
221 | tolerance: 1.0e-10
222 | max_its: 1000
223 | do_refinement: true
224 |
225 | behavior_server:
226 | ros__parameters:
227 | enable_stamped_cmd_vel: true
228 | local_costmap_topic: local_costmap/costmap_raw
229 | global_costmap_topic: global_costmap/costmap_raw
230 | local_footprint_topic: local_costmap/published_footprint
231 | global_footprint_topic: global_costmap/published_footprint
232 | cycle_frequency: 10.0
233 | behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
234 | spin:
235 | plugin: "nav2_behaviors::Spin"
236 | backup:
237 | plugin: "nav2_behaviors::BackUp"
238 | drive_on_heading:
239 | plugin: "nav2_behaviors::DriveOnHeading"
240 | wait:
241 | plugin: "nav2_behaviors::Wait"
242 | assisted_teleop:
243 | plugin: "nav2_behaviors::AssistedTeleop"
244 | global_frame: map
245 | local_frame: odom
246 | robot_base_frame: base_link
247 | transform_tolerance: 0.1
248 | enable_stamped_cmd_vel: true
249 | simulate_ahead_time: 2.0
250 | max_rotational_vel: 1.0
251 | min_rotational_vel: 0.2
252 | rotational_acc_lim: 0.5
253 |
254 | waypoint_follower:
255 | ros__parameters:
256 | enable_stamped_cmd_vel: true
257 | loop_rate: 20
258 | stop_on_failure: false
259 | action_server_result_timeout: 900.0
260 | waypoint_task_executor_plugin: "wait_at_waypoint"
261 | wait_at_waypoint:
262 | plugin: "nav2_waypoint_follower::WaitAtWaypoint"
263 | enabled: true
264 | waypoint_pause_duration: 200
265 |
266 | velocity_smoother:
267 | ros__parameters:
268 | enable_stamped_cmd_vel: true
269 | smoothing_frequency: 20.0
270 | scale_velocities: False
271 | feedback: "OPEN_LOOP"
272 | max_velocity: [2.0, 0.0, 4.0]
273 | min_velocity: [-2.0, 0.0, -4.0]
274 | max_accel: [20.0, 0.0, 25.0]
275 | max_decel: [-20.0, 0.0, -25.0]
276 | odom_topic: "platform/odom/filtered"
277 | odom_duration: 0.1
278 | deadband_velocity: [0.0, 0.0, 0.0]
279 | velocity_timeout: 1.0
280 |
281 | collision_monitor:
282 | ros__parameters:
283 | enable_stamped_cmd_vel: true
284 | base_frame_id: "base_link"
285 | odom_frame_id: "odom"
286 | cmd_vel_in_topic: "cmd_vel_smoothed"
287 | cmd_vel_out_topic: "cmd_vel"
288 | state_topic: "collision_monitor_state"
289 | transform_tolerance: 0.2
290 | source_timeout: 1.0
291 | base_shift_correction: True
292 | stop_pub_timeout: 2.0
293 | # Polygons represent zone around the robot for "stop", "slowdown" and "limit" action types,
294 | # and robot footprint for "approach" action type.
295 | polygons: ["FootprintApproach"]
296 | FootprintApproach:
297 | type: "polygon"
298 | action_type: "approach"
299 | footprint_topic: "local_costmap/published_footprint"
300 | time_before_collision: 1.2
301 | simulation_time_step: 0.1
302 | min_points: 6
303 | visualize: False
304 | enabled: True
305 | observation_sources: ["scan"]
306 | scan:
307 | type: "scan"
308 | topic: "sensors/lidar2d_0/scan"
309 | min_height: 0.15
310 | max_height: 2.0
311 | enabled: True
312 |
313 | docking_server:
314 | ros__parameters:
315 | enable_stamped_cmd_vel: true
316 | controller_frequency: 50.0
317 | initial_perception_timeout: 5.0
318 | wait_charge_timeout: 5.0
319 | dock_approach_timeout: 30.0
320 | undock_linear_tolerance: 0.05
321 | undock_angular_tolerance: 0.1
322 | max_retries: 3
323 | base_frame: "base_link"
324 | fixed_frame: "odom"
325 | dock_backwards: false
326 | dock_prestaging_tolerance: 0.5
327 |
328 | # Types of docks
329 | dock_plugins: ['simple_charging_dock']
330 | simple_charging_dock:
331 | plugin: 'opennav_docking::SimpleChargingDock'
332 | docking_threshold: 0.05
333 | staging_x_offset: -0.7
334 | use_external_detection_pose: true
335 | use_battery_status: false # true
336 | use_stall_detection: false # true
337 |
338 | external_detection_timeout: 1.0
339 | external_detection_translation_x: -0.18
340 | external_detection_translation_y: 0.0
341 | external_detection_rotation_roll: -1.57
342 | external_detection_rotation_pitch: -1.57
343 | external_detection_rotation_yaw: 0.0
344 | filter_coef: 0.1
345 |
346 | # Dock instances
347 | # The following example illustrates configuring dock instances.
348 | # docks: ['home_dock'] # Input your docks here
349 | # home_dock:
350 | # type: 'simple_charging_dock'
351 | # frame: map
352 | # pose: [0.0, 0.0, 0.0]
353 |
354 | controller:
355 | k_phi: 3.0
356 | k_delta: 2.0
357 | v_linear_min: 0.15
358 | v_linear_max: 0.15
359 |
--------------------------------------------------------------------------------
/config/dd100/nav2.yaml:
--------------------------------------------------------------------------------
1 | bt_navigator:
2 | ros__parameters:
3 | enable_stamped_cmd_vel: true
4 | global_frame: map
5 | robot_base_frame: base_link
6 | odom_topic: platform/odom/filtered
7 | bt_loop_duration: 10
8 | default_server_timeout: 20
9 | wait_for_service_timeout: 1000
10 | action_server_result_timeout: 900.0
11 | navigators: ["navigate_to_pose", "navigate_through_poses"]
12 | navigate_to_pose:
13 | plugin: "nav2_bt_navigator::NavigateToPoseNavigator"
14 | navigate_through_poses:
15 | plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator"
16 | error_code_names:
17 | - compute_path_error_code
18 | - follow_path_error_code
19 |
20 | controller_server:
21 | ros__parameters:
22 | enable_stamped_cmd_vel: true
23 | controller_frequency: 20.0
24 | min_x_velocity_threshold: 0.001
25 | min_y_velocity_threshold: 0.5
26 | min_theta_velocity_threshold: 0.001
27 | failure_tolerance: 0.3
28 | progress_checker_plugins: ["progress_checker"]
29 | goal_checker_plugins: ["general_goal_checker"]
30 | controller_plugins: ["FollowPath"]
31 | use_realtime_priority: false
32 | progress_checker:
33 | plugin: "nav2_controller::SimpleProgressChecker"
34 | required_movement_radius: 0.5
35 | movement_time_allowance: 10.0
36 | general_goal_checker:
37 | stateful: true
38 | plugin: "nav2_controller::SimpleGoalChecker"
39 | xy_goal_tolerance: 0.25
40 | yaw_goal_tolerance: 0.25
41 | FollowPath:
42 | plugin: "nav2_mppi_controller::MPPIController"
43 | time_steps: 56
44 | model_dt: 0.05
45 | batch_size: 2000
46 | ax_max: 3.0
47 | ax_min: -3.0
48 | ay_max: 3.0
49 | az_max: 3.5
50 | vx_std: 0.2
51 | vy_std: 0.2
52 | wz_std: 0.4
53 | vx_max: 0.5
54 | vx_min: -0.35
55 | vy_max: 0.5
56 | wz_max: 1.9
57 | iteration_count: 1
58 | prune_distance: 1.7
59 | transform_tolerance: 0.1
60 | temperature: 0.3
61 | gamma: 0.015
62 | motion_model: "DiffDrive"
63 | visualize: true
64 | regenerate_noises: true
65 | TrajectoryVisualizer:
66 | trajectory_step: 5
67 | time_step: 3
68 | AckermannConstraints:
69 | min_turning_r: 0.2
70 | critics: [
71 | "ConstraintCritic", "CostCritic", "GoalCritic",
72 | "GoalAngleCritic", "PathAlignCritic", "PathFollowCritic",
73 | "PathAngleCritic", "PreferForwardCritic"]
74 | ConstraintCritic:
75 | enabled: true
76 | cost_power: 1
77 | cost_weight: 4.0
78 | GoalCritic:
79 | enabled: true
80 | cost_power: 1
81 | cost_weight: 5.0
82 | threshold_to_consider: 1.4
83 | GoalAngleCritic:
84 | enabled: true
85 | cost_power: 1
86 | cost_weight: 3.0
87 | threshold_to_consider: 0.5
88 | PreferForwardCritic:
89 | enabled: true
90 | cost_power: 1
91 | cost_weight: 5.0
92 | threshold_to_consider: 0.5
93 | CostCritic:
94 | enabled: true
95 | cost_power: 1
96 | cost_weight: 3.81
97 | critical_cost: 300.0
98 | consider_footprint: true
99 | collision_cost: 1000000.0
100 | near_goal_distance: 1.0
101 | trajectory_point_step: 2
102 | PathAlignCritic:
103 | enabled: true
104 | cost_power: 1
105 | cost_weight: 14.0
106 | max_path_occupancy_ratio: 0.05
107 | trajectory_point_step: 4
108 | threshold_to_consider: 0.5
109 | offset_from_furthest: 20
110 | use_path_orientations: false
111 | PathFollowCritic:
112 | enabled: true
113 | cost_power: 1
114 | cost_weight: 5.0
115 | offset_from_furthest: 5
116 | threshold_to_consider: 1.4
117 | PathAngleCritic:
118 | enabled: true
119 | cost_power: 1
120 | cost_weight: 2.0
121 | offset_from_furthest: 4
122 | threshold_to_consider: 0.5
123 | max_angle_to_furthest: 1.0
124 | mode: 0
125 |
126 | local_costmap:
127 | local_costmap:
128 | ros__parameters:
129 | enable_stamped_cmd_vel: true
130 | update_frequency: 5.0
131 | publish_frequency: 2.0
132 | global_frame: odom
133 | robot_base_frame: base_link
134 | rolling_window: true
135 | width: 5
136 | height: 5
137 | resolution: 0.06
138 | footprint: "[ [0.2755, 0.2585], [0.2755, -0.2585], [-0.2755, -0.2585], [-0.2755, 0.2585] ]"
139 | always_send_full_costmap: true
140 | plugins: ["static_layer", "voxel_layer", "inflation_layer"]
141 | inflation_layer:
142 | plugin: "nav2_costmap_2d::InflationLayer"
143 | cost_scaling_factor: 4.0
144 | inflation_radius: 0.8
145 | voxel_layer:
146 | plugin: "nav2_costmap_2d::VoxelLayer"
147 | enabled: true
148 | publish_voxel_map: true
149 | origin_z: 0.0
150 | z_resolution: 0.05
151 | z_voxels: 16
152 | max_obstacle_height: 2.0
153 | mark_threshold: 0
154 | observation_sources: scan
155 | scan:
156 | topic: sensors/lidar2d_0/scan
157 | max_obstacle_height: 2.0
158 | clearing: true
159 | marking: true
160 | data_type: "LaserScan"
161 | raytrace_max_range: 3.0
162 | raytrace_min_range: 0.0
163 | obstacle_max_range: 2.5
164 | obstacle_min_range: 0.0
165 | static_layer:
166 | plugin: "nav2_costmap_2d::StaticLayer"
167 | map_subscribe_transient_local: true
168 |
169 | global_costmap:
170 | global_costmap:
171 | ros__parameters:
172 | enable_stamped_cmd_vel: true
173 | update_frequency: 1.0
174 | publish_frequency: 1.0
175 | global_frame: map
176 | robot_base_frame: base_link
177 | footprint: "[ [0.2755, 0.2585], [0.2755, -0.2585], [-0.2755, -0.2585], [-0.2755, 0.2585] ]"
178 | resolution: 0.06
179 | track_unknown_space: true
180 | always_send_full_costmap: true
181 | plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
182 | obstacle_layer:
183 | plugin: "nav2_costmap_2d::ObstacleLayer"
184 | enabled: true
185 | observation_sources: scan
186 | scan:
187 | topic: sensors/lidar2d_0/scan
188 | max_obstacle_height: 2.0
189 | clearing: true
190 | marking: true
191 | data_type: "LaserScan"
192 | raytrace_max_range: 3.0
193 | raytrace_min_range: 0.0
194 | obstacle_max_range: 2.5
195 | obstacle_min_range: 0.0
196 | static_layer:
197 | plugin: "nav2_costmap_2d::StaticLayer"
198 | map_subscribe_transient_local: true
199 | inflation_layer:
200 | plugin: "nav2_costmap_2d::InflationLayer"
201 | cost_scaling_factor: 4.0
202 | inflation_radius: 0.8
203 |
204 | planner_server:
205 | ros__parameters:
206 | enable_stamped_cmd_vel: true
207 | # expected_planner_frequency: 20.0
208 | planner_plugins: ["GridBased"]
209 | GridBased:
210 | plugin: "nav2_navfn_planner::NavfnPlanner"
211 | tolerance: 0.5
212 | use_astar: false
213 | allow_unknown: true
214 |
215 | smoother_server:
216 | ros__parameters:
217 | enable_stamped_cmd_vel: true
218 | smoother_plugins: ["simple_smoother"]
219 | simple_smoother:
220 | plugin: "nav2_smoother::SimpleSmoother"
221 | tolerance: 1.0e-10
222 | max_its: 1000
223 | do_refinement: true
224 |
225 | behavior_server:
226 | ros__parameters:
227 | enable_stamped_cmd_vel: true
228 | local_costmap_topic: local_costmap/costmap_raw
229 | global_costmap_topic: global_costmap/costmap_raw
230 | local_footprint_topic: local_costmap/published_footprint
231 | global_footprint_topic: global_costmap/published_footprint
232 | cycle_frequency: 10.0
233 | behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
234 | spin:
235 | plugin: "nav2_behaviors::Spin"
236 | backup:
237 | plugin: "nav2_behaviors::BackUp"
238 | drive_on_heading:
239 | plugin: "nav2_behaviors::DriveOnHeading"
240 | wait:
241 | plugin: "nav2_behaviors::Wait"
242 | assisted_teleop:
243 | plugin: "nav2_behaviors::AssistedTeleop"
244 | global_frame: map
245 | local_frame: odom
246 | robot_base_frame: base_link
247 | transform_tolerance: 0.1
248 | enable_stamped_cmd_vel: true
249 | simulate_ahead_time: 2.0
250 | max_rotational_vel: 1.0
251 | min_rotational_vel: 0.2
252 | rotational_acc_lim: 0.5
253 |
254 | waypoint_follower:
255 | ros__parameters:
256 | enable_stamped_cmd_vel: true
257 | loop_rate: 20
258 | stop_on_failure: false
259 | action_server_result_timeout: 900.0
260 | waypoint_task_executor_plugin: "wait_at_waypoint"
261 | wait_at_waypoint:
262 | plugin: "nav2_waypoint_follower::WaitAtWaypoint"
263 | enabled: true
264 | waypoint_pause_duration: 200
265 |
266 | velocity_smoother:
267 | ros__parameters:
268 | enable_stamped_cmd_vel: true
269 | smoothing_frequency: 20.0
270 | scale_velocities: False
271 | feedback: "OPEN_LOOP"
272 | max_velocity: [1.3, 0.0, 4.0]
273 | min_velocity: [-1.3, 0.0, -4.0]
274 | max_accel: [1.0, 0.0, 2.0]
275 | max_decel: [-1.0, 0.0, -2.0]
276 | odom_topic: "platform/odom/filtered"
277 | odom_duration: 0.1
278 | deadband_velocity: [0.0, 0.0, 0.0]
279 | velocity_timeout: 1.0
280 |
281 | collision_monitor:
282 | ros__parameters:
283 | enable_stamped_cmd_vel: true
284 | base_frame_id: "base_link"
285 | odom_frame_id: "odom"
286 | cmd_vel_in_topic: "cmd_vel_smoothed"
287 | cmd_vel_out_topic: "cmd_vel"
288 | state_topic: "collision_monitor_state"
289 | transform_tolerance: 0.2
290 | source_timeout: 1.0
291 | base_shift_correction: True
292 | stop_pub_timeout: 2.0
293 | # Polygons represent zone around the robot for "stop", "slowdown" and "limit" action types,
294 | # and robot footprint for "approach" action type.
295 | polygons: ["FootprintApproach"]
296 | FootprintApproach:
297 | type: "polygon"
298 | action_type: "approach"
299 | footprint_topic: "local_costmap/published_footprint"
300 | time_before_collision: 1.2
301 | simulation_time_step: 0.1
302 | min_points: 6
303 | visualize: False
304 | enabled: True
305 | observation_sources: ["scan"]
306 | scan:
307 | type: "scan"
308 | topic: "sensors/lidar2d_0/scan"
309 | min_height: 0.15
310 | max_height: 2.0
311 | enabled: True
312 |
313 | docking_server:
314 | ros__parameters:
315 | enable_stamped_cmd_vel: true
316 | controller_frequency: 50.0
317 | initial_perception_timeout: 5.0
318 | wait_charge_timeout: 5.0
319 | dock_approach_timeout: 30.0
320 | undock_linear_tolerance: 0.05
321 | undock_angular_tolerance: 0.1
322 | max_retries: 3
323 | base_frame: "base_link"
324 | fixed_frame: "odom"
325 | dock_backwards: false
326 | dock_prestaging_tolerance: 0.5
327 |
328 | # Types of docks
329 | dock_plugins: ['simple_charging_dock']
330 | simple_charging_dock:
331 | plugin: 'opennav_docking::SimpleChargingDock'
332 | docking_threshold: 0.05
333 | staging_x_offset: -0.7
334 | use_external_detection_pose: true
335 | use_battery_status: false # true
336 | use_stall_detection: false # true
337 |
338 | external_detection_timeout: 1.0
339 | external_detection_translation_x: -0.18
340 | external_detection_translation_y: 0.0
341 | external_detection_rotation_roll: -1.57
342 | external_detection_rotation_pitch: -1.57
343 | external_detection_rotation_yaw: 0.0
344 | filter_coef: 0.1
345 |
346 | # Dock instances
347 | # The following example illustrates configuring dock instances.
348 | # docks: ['home_dock'] # Input your docks here
349 | # home_dock:
350 | # type: 'simple_charging_dock'
351 | # frame: map
352 | # pose: [0.0, 0.0, 0.0]
353 |
354 | controller:
355 | k_phi: 3.0
356 | k_delta: 2.0
357 | v_linear_min: 0.15
358 | v_linear_max: 0.15
359 |
--------------------------------------------------------------------------------
/config/dd150/nav2.yaml:
--------------------------------------------------------------------------------
1 | bt_navigator:
2 | ros__parameters:
3 | enable_stamped_cmd_vel: true
4 | global_frame: map
5 | robot_base_frame: base_link
6 | odom_topic: platform/odom/filtered
7 | bt_loop_duration: 10
8 | default_server_timeout: 20
9 | wait_for_service_timeout: 1000
10 | action_server_result_timeout: 900.0
11 | navigators: ["navigate_to_pose", "navigate_through_poses"]
12 | navigate_to_pose:
13 | plugin: "nav2_bt_navigator::NavigateToPoseNavigator"
14 | navigate_through_poses:
15 | plugin: "nav2_bt_navigator::NavigateThroughPosesNavigator"
16 | error_code_names:
17 | - compute_path_error_code
18 | - follow_path_error_code
19 |
20 | controller_server:
21 | ros__parameters:
22 | enable_stamped_cmd_vel: true
23 | controller_frequency: 20.0
24 | min_x_velocity_threshold: 0.001
25 | min_y_velocity_threshold: 0.5
26 | min_theta_velocity_threshold: 0.001
27 | failure_tolerance: 0.3
28 | progress_checker_plugins: ["progress_checker"]
29 | goal_checker_plugins: ["general_goal_checker"]
30 | controller_plugins: ["FollowPath"]
31 | use_realtime_priority: false
32 | progress_checker:
33 | plugin: "nav2_controller::SimpleProgressChecker"
34 | required_movement_radius: 0.5
35 | movement_time_allowance: 10.0
36 | general_goal_checker:
37 | stateful: true
38 | plugin: "nav2_controller::SimpleGoalChecker"
39 | xy_goal_tolerance: 0.25
40 | yaw_goal_tolerance: 0.25
41 | FollowPath:
42 | plugin: "nav2_mppi_controller::MPPIController"
43 | time_steps: 56
44 | model_dt: 0.05
45 | batch_size: 2000
46 | ax_max: 3.0
47 | ax_min: -3.0
48 | ay_max: 3.0
49 | az_max: 3.5
50 | vx_std: 0.2
51 | vy_std: 0.2
52 | wz_std: 0.4
53 | vx_max: 0.5
54 | vx_min: -0.35
55 | vy_max: 0.5
56 | wz_max: 1.9
57 | iteration_count: 1
58 | prune_distance: 1.7
59 | transform_tolerance: 0.1
60 | temperature: 0.3
61 | gamma: 0.015
62 | motion_model: "DiffDrive"
63 | visualize: true
64 | regenerate_noises: true
65 | TrajectoryVisualizer:
66 | trajectory_step: 5
67 | time_step: 3
68 | AckermannConstraints:
69 | min_turning_r: 0.2
70 | critics: [
71 | "ConstraintCritic", "CostCritic", "GoalCritic",
72 | "GoalAngleCritic", "PathAlignCritic", "PathFollowCritic",
73 | "PathAngleCritic", "PreferForwardCritic"]
74 | ConstraintCritic:
75 | enabled: true
76 | cost_power: 1
77 | cost_weight: 4.0
78 | GoalCritic:
79 | enabled: true
80 | cost_power: 1
81 | cost_weight: 5.0
82 | threshold_to_consider: 1.4
83 | GoalAngleCritic:
84 | enabled: true
85 | cost_power: 1
86 | cost_weight: 3.0
87 | threshold_to_consider: 0.5
88 | PreferForwardCritic:
89 | enabled: true
90 | cost_power: 1
91 | cost_weight: 5.0
92 | threshold_to_consider: 0.5
93 | CostCritic:
94 | enabled: true
95 | cost_power: 1
96 | cost_weight: 3.81
97 | critical_cost: 300.0
98 | consider_footprint: true
99 | collision_cost: 1000000.0
100 | near_goal_distance: 1.0
101 | trajectory_point_step: 2
102 | PathAlignCritic:
103 | enabled: true
104 | cost_power: 1
105 | cost_weight: 14.0
106 | max_path_occupancy_ratio: 0.05
107 | trajectory_point_step: 4
108 | threshold_to_consider: 0.5
109 | offset_from_furthest: 20
110 | use_path_orientations: false
111 | PathFollowCritic:
112 | enabled: true
113 | cost_power: 1
114 | cost_weight: 5.0
115 | offset_from_furthest: 5
116 | threshold_to_consider: 1.4
117 | PathAngleCritic:
118 | enabled: true
119 | cost_power: 1
120 | cost_weight: 2.0
121 | offset_from_furthest: 4
122 | threshold_to_consider: 0.5
123 | max_angle_to_furthest: 1.0
124 | mode: 0
125 |
126 | local_costmap:
127 | local_costmap:
128 | ros__parameters:
129 | enable_stamped_cmd_vel: true
130 | update_frequency: 5.0
131 | publish_frequency: 2.0
132 | global_frame: odom
133 | robot_base_frame: base_link
134 | rolling_window: true
135 | width: 5
136 | height: 5
137 | resolution: 0.06
138 | footprint: "[ [0.2755, 0.2585], [0.2755, -0.2585], [-0.2755, -0.2585], [-0.2755, 0.2585] ]"
139 | always_send_full_costmap: true
140 | plugins: ["static_layer", "voxel_layer", "inflation_layer"]
141 | inflation_layer:
142 | plugin: "nav2_costmap_2d::InflationLayer"
143 | cost_scaling_factor: 4.0
144 | inflation_radius: 0.8
145 | voxel_layer:
146 | plugin: "nav2_costmap_2d::VoxelLayer"
147 | enabled: true
148 | publish_voxel_map: true
149 | origin_z: 0.0
150 | z_resolution: 0.05
151 | z_voxels: 16
152 | max_obstacle_height: 2.0
153 | mark_threshold: 0
154 | observation_sources: scan
155 | scan:
156 | topic: sensors/lidar2d_0/scan
157 | max_obstacle_height: 2.0
158 | clearing: true
159 | marking: true
160 | data_type: "LaserScan"
161 | raytrace_max_range: 3.0
162 | raytrace_min_range: 0.0
163 | obstacle_max_range: 2.5
164 | obstacle_min_range: 0.0
165 | static_layer:
166 | plugin: "nav2_costmap_2d::StaticLayer"
167 | map_subscribe_transient_local: true
168 |
169 | global_costmap:
170 | global_costmap:
171 | ros__parameters:
172 | enable_stamped_cmd_vel: true
173 | update_frequency: 1.0
174 | publish_frequency: 1.0
175 | global_frame: map
176 | robot_base_frame: base_link
177 | footprint: "[ [0.2755, 0.2585], [0.2755, -0.2585], [-0.2755, -0.2585], [-0.2755, 0.2585] ]"
178 | resolution: 0.06
179 | track_unknown_space: true
180 | always_send_full_costmap: true
181 | plugins: ["static_layer", "obstacle_layer", "inflation_layer"]
182 | obstacle_layer:
183 | plugin: "nav2_costmap_2d::ObstacleLayer"
184 | enabled: true
185 | observation_sources: scan
186 | scan:
187 | topic: sensors/lidar2d_0/scan
188 | max_obstacle_height: 2.0
189 | clearing: true
190 | marking: true
191 | data_type: "LaserScan"
192 | raytrace_max_range: 3.0
193 | raytrace_min_range: 0.0
194 | obstacle_max_range: 2.5
195 | obstacle_min_range: 0.0
196 | static_layer:
197 | plugin: "nav2_costmap_2d::StaticLayer"
198 | map_subscribe_transient_local: true
199 | inflation_layer:
200 | plugin: "nav2_costmap_2d::InflationLayer"
201 | cost_scaling_factor: 4.0
202 | inflation_radius: 0.8
203 |
204 | planner_server:
205 | ros__parameters:
206 | enable_stamped_cmd_vel: true
207 | # expected_planner_frequency: 20.0
208 | planner_plugins: ["GridBased"]
209 | GridBased:
210 | plugin: "nav2_navfn_planner::NavfnPlanner"
211 | tolerance: 0.5
212 | use_astar: false
213 | allow_unknown: true
214 |
215 | smoother_server:
216 | ros__parameters:
217 | enable_stamped_cmd_vel: true
218 | smoother_plugins: ["simple_smoother"]
219 | simple_smoother:
220 | plugin: "nav2_smoother::SimpleSmoother"
221 | tolerance: 1.0e-10
222 | max_its: 1000
223 | do_refinement: true
224 |
225 | behavior_server:
226 | ros__parameters:
227 | enable_stamped_cmd_vel: true
228 | local_costmap_topic: local_costmap/costmap_raw
229 | global_costmap_topic: global_costmap/costmap_raw
230 | local_footprint_topic: local_costmap/published_footprint
231 | global_footprint_topic: global_costmap/published_footprint
232 | cycle_frequency: 10.0
233 | behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
234 | spin:
235 | plugin: "nav2_behaviors::Spin"
236 | backup:
237 | plugin: "nav2_behaviors::BackUp"
238 | drive_on_heading:
239 | plugin: "nav2_behaviors::DriveOnHeading"
240 | wait:
241 | plugin: "nav2_behaviors::Wait"
242 | assisted_teleop:
243 | plugin: "nav2_behaviors::AssistedTeleop"
244 | global_frame: map
245 | local_frame: odom
246 | robot_base_frame: base_link
247 | transform_tolerance: 0.1
248 | enable_stamped_cmd_vel: true
249 | simulate_ahead_time: 2.0
250 | max_rotational_vel: 1.0
251 | min_rotational_vel: 0.2
252 | rotational_acc_lim: 0.5
253 |
254 | waypoint_follower:
255 | ros__parameters:
256 | enable_stamped_cmd_vel: true
257 | loop_rate: 20
258 | stop_on_failure: false
259 | action_server_result_timeout: 900.0
260 | waypoint_task_executor_plugin: "wait_at_waypoint"
261 | wait_at_waypoint:
262 | plugin: "nav2_waypoint_follower::WaitAtWaypoint"
263 | enabled: true
264 | waypoint_pause_duration: 200
265 |
266 | velocity_smoother:
267 | ros__parameters:
268 | enable_stamped_cmd_vel: true
269 | smoothing_frequency: 20.0
270 | scale_velocities: False
271 | feedback: "OPEN_LOOP"
272 | max_velocity: [1.3, 0.0, 4.0]
273 | min_velocity: [-1.3, 0.0, -4.0]
274 | max_accel: [1.0, 0.0, 2.0]
275 | max_decel: [-1.0, 0.0, -2.0]
276 | odom_topic: "platform/odom/filtered"
277 | odom_duration: 0.1
278 | deadband_velocity: [0.0, 0.0, 0.0]
279 | velocity_timeout: 1.0
280 |
281 | collision_monitor:
282 | ros__parameters:
283 | enable_stamped_cmd_vel: true
284 | base_frame_id: "base_link"
285 | odom_frame_id: "odom"
286 | cmd_vel_in_topic: "cmd_vel_smoothed"
287 | cmd_vel_out_topic: "cmd_vel"
288 | state_topic: "collision_monitor_state"
289 | transform_tolerance: 0.2
290 | source_timeout: 1.0
291 | base_shift_correction: True
292 | stop_pub_timeout: 2.0
293 | # Polygons represent zone around the robot for "stop", "slowdown" and "limit" action types,
294 | # and robot footprint for "approach" action type.
295 | polygons: ["FootprintApproach"]
296 | FootprintApproach:
297 | type: "polygon"
298 | action_type: "approach"
299 | footprint_topic: "local_costmap/published_footprint"
300 | time_before_collision: 1.2
301 | simulation_time_step: 0.1
302 | min_points: 6
303 | visualize: False
304 | enabled: True
305 | observation_sources: ["scan"]
306 | scan:
307 | type: "scan"
308 | topic: "sensors/lidar2d_0/scan"
309 | min_height: 0.15
310 | max_height: 2.0
311 | enabled: True
312 |
313 | docking_server:
314 | ros__parameters:
315 | enable_stamped_cmd_vel: true
316 | controller_frequency: 50.0
317 | initial_perception_timeout: 5.0
318 | wait_charge_timeout: 5.0
319 | dock_approach_timeout: 30.0
320 | undock_linear_tolerance: 0.05
321 | undock_angular_tolerance: 0.1
322 | max_retries: 3
323 | base_frame: "base_link"
324 | fixed_frame: "odom"
325 | dock_backwards: false
326 | dock_prestaging_tolerance: 0.5
327 |
328 | # Types of docks
329 | dock_plugins: ['simple_charging_dock']
330 | simple_charging_dock:
331 | plugin: 'opennav_docking::SimpleChargingDock'
332 | docking_threshold: 0.05
333 | staging_x_offset: -0.7
334 | use_external_detection_pose: true
335 | use_battery_status: false # true
336 | use_stall_detection: false # true
337 |
338 | external_detection_timeout: 1.0
339 | external_detection_translation_x: -0.18
340 | external_detection_translation_y: 0.0
341 | external_detection_rotation_roll: -1.57
342 | external_detection_rotation_pitch: -1.57
343 | external_detection_rotation_yaw: 0.0
344 | filter_coef: 0.1
345 |
346 | # Dock instances
347 | # The following example illustrates configuring dock instances.
348 | # docks: ['home_dock'] # Input your docks here
349 | # home_dock:
350 | # type: 'simple_charging_dock'
351 | # frame: map
352 | # pose: [0.0, 0.0, 0.0]
353 |
354 | controller:
355 | k_phi: 3.0
356 | k_delta: 2.0
357 | v_linear_min: 0.15
358 | v_linear_max: 0.15
359 |
--------------------------------------------------------------------------------