Skip to content
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

AUTO-607 use path distance instead of euclidean distance for pruning path #9

Merged
merged 28 commits into from
Mar 10, 2023
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
d629349
calculate_path_length instead of euclidean distance
Feb 27, 2023
b7ff565
do not look for closest pose further away than prune distance
Feb 27, 2023
9b50aac
keep using untouched max_robot_pose_search_dist_ for closest pose search
Feb 28, 2023
d473aca
lint
Feb 28, 2023
d3c638f
wip
Feb 28, 2023
e86ef51
update end of path
Feb 28, 2023
adf3d3a
Don't search close pose further away than the prune distance
Feb 28, 2023
8c091d0
Merge branch 'AUTO-607_path_distance_for_pruning' into AUTO-610_enfor…
Feb 28, 2023
17b1c89
lint
Feb 28, 2023
a6953a6
Savitsky Golay Filter order 9
Mar 1, 2023
876a4d5
new inversion logic
Mar 2, 2023
219a01f
Merge branch 'AUTO-610_enforce_global_inversion' into AUTO-612_mppi_9…
Mar 2, 2023
8ad8942
remove merge artefact
Mar 2, 2023
88b79b3
Merge pull request #11 from botsandus/AUTO-612_mppi_9_sync
doisyg Mar 6, 2023
565a672
rename to pruned_plan_end
Mar 6, 2023
dec4c45
fix tests
Mar 6, 2023
c515b74
fix for enforce inversion false
Mar 6, 2023
eec1057
poc
Mar 6, 2023
7e0ed2b
do not use prune_distance to limit the search for the closest pose
Mar 7, 2023
d477ef2
Merge branch 'humble_path_nav2_pr' into AUTO-610_enforce_global_inver…
Mar 7, 2023
0696188
sync with nav2 pr
Mar 7, 2023
80f2322
Merge branch 'fix_angle_path_critics' into inversion_plus_angle_fix
Mar 7, 2023
c4d7e0f
abs backward
Mar 8, 2023
8a19de7
change bi directional method
Mar 8, 2023
022d3c4
first try
Mar 9, 2023
0098056
Merge pull request #13 from botsandus/AUTO-655_rotation_progres_checker
doisyg Mar 10, 2023
4d58ce0
Merge pull request #12 from botsandus/AUTO-645_path_angle_fix
doisyg Mar 10, 2023
376069b
Merge pull request #10 from botsandus/AUTO-610_enforce_global_inversion
doisyg Mar 10, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions nav2_mppi_controller/src/path_handler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,12 @@ PathHandler::getGlobalPlanConsideringBoundsInCostmapFrame(
using nav2_util::geometry_utils::euclidean_distance;

auto begin = global_plan_.poses.begin();
auto end = global_plan_.poses.end();

// Don't search further away than the prune distance
auto closest_pose_upper_bound =
nav2_util::geometry_utils::first_after_integrated_distance(
global_plan_.poses.begin(), global_plan_.poses.end(), max_robot_pose_search_dist_);
global_plan_.poses.begin(), global_plan_end_,
std::min(max_robot_pose_search_dist_, prune_distance_));

// Find closest point to the robot
auto closest_point = nav2_util::geometry_utils::min_by(
Expand All @@ -61,17 +62,17 @@ PathHandler::getGlobalPlanConsideringBoundsInCostmapFrame(
transformed_plan.header.frame_id = costmap_->getGlobalFrameID();
transformed_plan.header.stamp = global_pose.header.stamp;

auto pose_above_prune_distance =
nav2_util::geometry_utils::first_after_integrated_distance(
closest_point, global_plan_.poses.end(), prune_distance_);

unsigned int mx, my;
// Find the furthest relevent pose on the path to consider within costmap
// bounds
// Transforming it to the costmap frame in the same loop
for (auto global_plan_pose = closest_point; global_plan_pose != end; ++global_plan_pose) {
// Distance relative to robot pose check
auto distance = euclidean_distance(global_pose, *global_plan_pose);
if (distance >= prune_distance_) {
return {transformed_plan, closest_point};
}

for (auto global_plan_pose = closest_point; global_plan_pose != pose_above_prune_distance;
++global_plan_pose)
{
// Transform from global plan frame to costmap frame
geometry_msgs::msg::PoseStamped costmap_plan_pose;
global_plan_pose->header.stamp = global_pose.header.stamp;
Expand Down
2 changes: 0 additions & 2 deletions nav2_mppi_controller/test/path_handler_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ TEST(PathHandlerTests, TestBounds)
std::unique_ptr<tf2_ros::TransformBroadcaster> tf_broadcaster_ =
std::make_unique<tf2_ros::TransformBroadcaster>(node);
geometry_msgs::msg::TransformStamped t;
//t.header.stamp = node->get_clock()->now();
t.header.frame_id = "map";
t.child_frame_id = "base_link";
tf_broadcaster_->sendTransform(t);
Expand Down Expand Up @@ -157,7 +156,6 @@ TEST(PathHandlerTests, TestTransforms)
std::unique_ptr<tf2_ros::TransformBroadcaster> tf_broadcaster_ =
std::make_unique<tf2_ros::TransformBroadcaster>(node);
geometry_msgs::msg::TransformStamped t;
//t.header.stamp = node->get_clock()->now();
t.header.frame_id = "map";
t.child_frame_id = "base_link";
tf_broadcaster_->sendTransform(t);
Expand Down