-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Add nav2_gps_waypoint_follower #2814
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
SteveMacenski
merged 91 commits into
ros-navigation:main
from
kiwicampus:gps-waypoint-follower
Sep 21, 2023
Merged
Changes from all commits
Commits
Show all changes
91 commits
Select commit
Hold shift + click to select a range
5f33ac5
Add nav2_gps_waypoint_follower
jediofgever 277c1e1
use correct client node while calling it to spin
jediofgever c6ee437
changed after 1'st review
jediofgever 7b6f8cf
apply requested changes
jediofgever ac94d2d
nav2_util::ServiceClient instead of CallbackGroup
jediofgever cd9a287
another iteration to adress issues
jediofgever 9c0e408
update poses with function in the follower logic
jediofgever f94e3b3
add deps of robot_localization: diagnostics
jediofgever e4fe184
fix typo in underlay.repo
jediofgever c2f4d95
add deps of robot_localization: geographic_info
jediofgever 98804f1
minor clean-ups
jediofgever e95f55a
merge ros-planning::navigation2::main into jediofgever::navigation2::…
jediofgever 960bb13
bond_core version has been updated
jediofgever 623c6a6
rotation should also be considered in GPS WPFing
jediofgever ef57df0
use better namings related to gps wpf orientation
jediofgever 063b8e7
handle cpplint errors
jediofgever e544fde
tf_listener needs to be initialized
jediofgever 84c7ef0
apply requested changes
jediofgever d2c4127
apply requested changes 2.5/3.0
jediofgever aee13ca
apply requested changes 3.0/3.0
jediofgever 4f83167
fix misplaced ";"
jediofgever 6e322ea
use run time param for gps transform timeout
jediofgever 81c7c64
change timeout var name
jediofgever 7c69520
make use of stop_on_failure for GPS too
jediofgever 7889ae3
passing emptywaypont vectors are seen as failure
jediofgever c28b93e
pull changes from ros-planing::navigation2::main
jediofgever c6613a8
update warning for empty requests
jediofgever 0d0d59c
get upstream changes
jediofgever d7e2ad4
consider utm -> map yaw offset
jediofgever d6527d2
fix missed RCLCPP info
jediofgever f99ebff
reorrect action;s name
jediofgever e0a3aa6
get mainstream changes
jediofgever 5fcfb83
waypoint stamps need to be updated
jediofgever 5ceb349
Fix merge conflicts
pepisg 3e7af6b
Fix segmentation fault on waypoint follower
pepisg bc87763
Parametric frames and matrix multiplications
pepisg cfb6f13
Replace oriented navsatfix for geographic_msgs/geopose
pepisg cafef39
Remove deprecated oriented navsatfix message
pepisg 4b3f774
Update branch name on robot_localization dependency
pepisg 534f01a
Fix parametric frames logic
pepisg f4466b6
Rename functions and adress comments
pepisg 9cdefaf
fix style in underlay.repos
pepisg 6aee420
remove duplicate word in underlay.repos
pepisg c7c8c01
update dependency version of ompl
pepisg eabbfcf
Template ServiceClient class to accept lifecycle node
pepisg af8f468
Remove link to stackoverflow answer
pepisg b14fcca
Remove yaw offset compensation
pepisg b5222b8
Merge branch 'main' of github.com:ros-planning/navigation2 into gps-w…
pepisg 87b43f7
Merge branch 'main' of github.com:kiwicampus/navigation2 into gps-way…
pepisg 84999e1
Fix API change
pepisg 879b4e6
Fix styling
pepisg 8cc6311
Minor docs fixes
pepisg 03cca60
Fix style divergences
pepisg 8e87793
Style fixes
pepisg 231f705
Style fixes v2
pepisg 6a3a5fb
Style fixes v3
pepisg f855cf2
Merge branch 'main' of github.com:kiwicampus/navigation2 into gps-way…
pepisg cf4ed6e
Remove unused variables and timestam overrides
pepisg 3c58360
Update branch
pepisg 46fce6e
restore goal timestamp override
pepisg d2c7fcb
fetch upstream
pepisg e84158a
WIP: Add follow gps waypoints test
pepisg 939756e
Style fixes and gazebo world inertia fix
pepisg 901ce78
Merge branch 'ros-planning:main' into gps-waypoint-follower
pepisg 5f95c13
Reduce velocity smoother timeout
pepisg 839655f
empty commit to rerun tests
pepisg 5226c0b
Increment circle ci cache idx
pepisg 292ce05
Merge branch 'ros-planning:main' into gps-waypoint-follower
pepisg 96215ef
Remove extra space in cmakelists.txt
pepisg 3252f6d
Merge branch 'gps-waypoint-follower' of github.com:kiwicampus/navigat…
pepisg e53886b
Merge branch 'ros-planning:main' into gps-waypoint-follower
pepisg a8c7a0f
Merge branch 'ros-planning:main' into gps-waypoint-follower
pepisg f6623ae
Merge branch 'ros-planning:main' into gps-waypoint-follower
pepisg 376f599
Fix wrong usage of the global action server
pepisg 339e260
Merge branch 'main' of github.com:kiwicampus/navigation2 into gps-way…
pepisg 5ec4d8c
update follow gps waypoints action definition
pepisg dbcb923
Merge branch 'main' into gps-waypoint-follower
pepisg cefd0bf
Fix action definition and looping
pepisg ed96101
update params for the unit testing
pepisg 179d5c5
WIP: update tests
pepisg 0f7c700
fix tests
pepisg 67aec18
fixes to nav2 simple commander
pepisg d31cc53
add robot_localization localizer
pepisg d595cca
Merge branch 'main' of github.com:kiwicampus/navigation2 into gps-way…
pepisg 6fe265a
Bring back from LL client
pepisg 40bf684
Update nav2_simple_commander/nav2_simple_commander/robot_navigator.py
pepisg 0bb5072
missing argument in test function
pepisg 85f57ed
Merge branch 'gps-waypoint-follower' of github.com:kiwicampus/navigat…
pepisg fb3a035
small test error
pepisg 1ca58db
style fixes nav2 simple commander
pepisg a01cbbc
rename cartesian action server
pepisg File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| #goal definition | ||
| uint32 number_of_loops | ||
| uint32 goal_index 0 | ||
| geographic_msgs/GeoPose[] gps_poses | ||
| --- | ||
| #result definition | ||
|
|
||
| # Error codes | ||
| # Note: The expected priority order of the errors should match the message order | ||
| uint16 NONE=0 | ||
|
SteveMacenski marked this conversation as resolved.
|
||
| uint16 UNKNOWN=600 | ||
| uint16 TASK_EXECUTOR_FAILED=601 | ||
|
|
||
| MissedWaypoint[] missed_waypoints | ||
| --- | ||
| #feedback | ||
| uint32 current_waypoint | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| ament_add_test(test_gps_waypoint_follower | ||
| GENERATE_RESULT_FOR_RETURN_CODE_ZERO | ||
| COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/test_case_py.launch.py" | ||
| WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" | ||
| TIMEOUT 180 | ||
| ENV | ||
| TEST_DIR=${CMAKE_CURRENT_SOURCE_DIR} | ||
| TEST_WORLD=${PROJECT_SOURCE_DIR}/worlds/turtlebot3_ros2_demo_gps.world | ||
| GAZEBO_MODEL_PATH=${PROJECT_SOURCE_DIR}/models | ||
| BT_NAVIGATOR_XML=navigate_to_pose_w_replanning_and_recovery.xml | ||
| ) |
63 changes: 63 additions & 0 deletions
63
nav2_system_tests/src/gps_navigation/dual_ekf_navsat.launch.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,63 @@ | ||
| # Copyright 2018 Open Source Robotics Foundation, Inc. | ||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||
| # you may not use this file except in compliance with the License. | ||
| # You may obtain a copy of the License at | ||
| # | ||
| # http://www.apache.org/licenses/LICENSE-2.0 | ||
| # | ||
| # Unless required by applicable law or agreed to in writing, software | ||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| # See the License for the specific language governing permissions and | ||
| # limitations under the License. | ||
|
|
||
| from launch import LaunchDescription | ||
| import launch_ros.actions | ||
| import os | ||
| import launch.actions | ||
|
|
||
|
|
||
| def generate_launch_description(): | ||
| launch_dir = os.path.dirname(os.path.realpath(__file__)) | ||
| params_file = os.path.join(launch_dir, "dual_ekf_navsat_params.yaml") | ||
| os.environ["FILE_PATH"] = str(launch_dir) | ||
| return LaunchDescription( | ||
| [ | ||
| launch.actions.DeclareLaunchArgument( | ||
| "output_final_position", default_value="false" | ||
| ), | ||
| launch.actions.DeclareLaunchArgument( | ||
| "output_location", default_value="~/dual_ekf_navsat_example_debug.txt" | ||
| ), | ||
| launch_ros.actions.Node( | ||
| package="robot_localization", | ||
| executable="ekf_node", | ||
| name="ekf_filter_node_odom", | ||
| output="screen", | ||
| parameters=[params_file, {"use_sim_time": True}], | ||
| remappings=[("odometry/filtered", "odometry/local")], | ||
| ), | ||
| launch_ros.actions.Node( | ||
| package="robot_localization", | ||
| executable="ekf_node", | ||
| name="ekf_filter_node_map", | ||
| output="screen", | ||
| parameters=[params_file, {"use_sim_time": True}], | ||
| remappings=[("odometry/filtered", "odometry/global")], | ||
| ), | ||
| launch_ros.actions.Node( | ||
| package="robot_localization", | ||
| executable="navsat_transform_node", | ||
| name="navsat_transform", | ||
| output="screen", | ||
| parameters=[params_file, {"use_sim_time": True}], | ||
| remappings=[ | ||
| ("imu/data", "imu/data"), | ||
| ("gps/fix", "gps/fix"), | ||
| ("gps/filtered", "gps/filtered"), | ||
| ("odometry/gps", "odometry/gps"), | ||
| ("odometry/filtered", "odometry/global"), | ||
| ], | ||
| ), | ||
| ] | ||
| ) |
127 changes: 127 additions & 0 deletions
127
nav2_system_tests/src/gps_navigation/dual_ekf_navsat_params.yaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,127 @@ | ||
| # For parameter descriptions, please refer to the template parameter files for each node. | ||
|
|
||
| ekf_filter_node_odom: | ||
| ros__parameters: | ||
| frequency: 30.0 | ||
| two_d_mode: true # Recommended to use 2d mode for nav2, since its world representation is 2d | ||
| print_diagnostics: true | ||
| debug: false | ||
| publish_tf: true | ||
|
|
||
| map_frame: map | ||
| odom_frame: odom | ||
| base_link_frame: base_link | ||
| world_frame: odom | ||
|
|
||
| odom0: odom | ||
| odom0_config: [false, false, false, | ||
| false, false, false, | ||
| true, true, true, | ||
| false, false, true, | ||
| false, false, false] | ||
| odom0_queue_size: 10 | ||
| odom0_differential: false | ||
| odom0_relative: false | ||
|
|
||
| imu0: imu/data | ||
| imu0_config: [false, false, false, | ||
| false, false, true, | ||
| false, false, false, | ||
| false, false, false, | ||
| false, false, false] | ||
| imu0_differential: false # If using a real robot you might want to set this to true, since usually absolute measurements from real imu's are not very accurate | ||
| imu0_relative: false | ||
| imu0_queue_size: 10 | ||
| imu0_remove_gravitational_acceleration: true | ||
|
|
||
| use_control: false | ||
|
|
||
| process_noise_covariance: [1e-3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 1e-3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 1e-3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3] | ||
|
|
||
| ekf_filter_node_map: | ||
| ros__parameters: | ||
| frequency: 30.0 | ||
| two_d_mode: true # Recommended to use 2d mode for nav2, since its world representation is 2d | ||
| print_diagnostics: true | ||
| debug: false | ||
| publish_tf: true | ||
|
|
||
| map_frame: map | ||
| odom_frame: odom | ||
| base_link_frame: base_link | ||
| world_frame: map | ||
|
|
||
| odom0: odom | ||
| odom0_config: [false, false, false, | ||
| false, false, false, | ||
| true, true, true, | ||
| false, false, true, | ||
| false, false, false] | ||
| odom0_queue_size: 10 | ||
| odom0_differential: false | ||
| odom0_relative: false | ||
|
|
||
| odom1: odometry/gps | ||
| odom1_config: [true, true, false, | ||
| false, false, false, | ||
| false, false, false, | ||
| false, false, false, | ||
| false, false, false] | ||
| odom1_queue_size: 10 | ||
| odom1_differential: false | ||
| odom1_relative: false | ||
|
|
||
| imu0: imu/data | ||
| imu0_config: [false, false, false, | ||
| false, false, true, | ||
| false, false, false, | ||
| false, false, false, | ||
| false, false, false] | ||
| imu0_differential: false # If using a real robot you might want to set this to true, since usually absolute measurements from real imu's are not very accurate | ||
| imu0_relative: false | ||
| imu0_queue_size: 10 | ||
| imu0_remove_gravitational_acceleration: true | ||
|
|
||
| use_control: false | ||
|
|
||
| process_noise_covariance: [1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 1e-3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, | ||
| 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3] | ||
|
|
||
| navsat_transform: | ||
| ros__parameters: | ||
| frequency: 30.0 | ||
| delay: 3.0 | ||
| magnetic_declination_radians: 0.0429351 # For lat/long 55.944831, -3.186998 | ||
| yaw_offset: 0.0 | ||
| zero_altitude: true | ||
| broadcast_utm_transform: true | ||
| publish_filtered_gps: true | ||
| use_odometry_yaw: true | ||
| wait_for_datum: false |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.