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

Turning radius is too short on curves #1759

Closed
3 tasks done
beyzanurkaya opened this issue Sep 1, 2022 · 10 comments
Closed
3 tasks done

Turning radius is too short on curves #1759

beyzanurkaya opened this issue Sep 1, 2022 · 10 comments
Assignees
Labels
component:planning Route planning, decision-making, and navigation. (auto-assigned) priority:high High urgency and importance. type:bug Software flaws or errors.

Comments

@beyzanurkaya
Copy link
Contributor

beyzanurkaya commented Sep 1, 2022

Checklist

  • I've read the contribution guidelines.
  • I've searched other issues and no duplicate issues were found.
  • I'm convinced that this is not my fault but a bug.

Description

Trajectory from motion planner is outside the drivable area as in the figure below

Screenshot from 2022-09-01 09-48-34

Expected behavior

A path outside the drivable area should not have occurred.

Actual behavior

Motion planner output is outside of drivable area.

Steps to reproduce

  1. Download 1759.zip

  2. Download isuzu_vehicle_launch in here

  3. Put isuzu_vehicle_launch in autoware.universe/vehicle directory and compile this package with colcon build

  4. Change pcd and lanelet2 maps file path in yaml file

  5. run ros2 launch scenario_test_runner scenario_test_runner.launch.py sensor_model:=sample_sensor_kit vehicle_model:=isuzu_vehicle \ scenario:=/scenario/path/1759.yaml \ architecture_type:=awf/universe launch_rviz:=false launch_autoware:=true

  6. Add /planning/scenario_planning/lane_driving/trajectory topic in rviz

  7. When you run the scenario, you'll see trajectory is outside drivable area.

Versions

No response

Possible causes

No response

Additional context

No response

@mehmetdogru mehmetdogru added the type:bug Software flaws or errors. label Sep 1, 2022
@mehmetdogru mehmetdogru added the component:planning Route planning, decision-making, and navigation. (auto-assigned) label Sep 1, 2022
@mehmetdogru mehmetdogru added this to the Bus ODD Sep-Oct Milestone milestone Sep 1, 2022
@mehmetdogru mehmetdogru added the priority:high High urgency and importance. label Sep 1, 2022
@maxime-clem maxime-clem self-assigned this Sep 2, 2022
@maxime-clem
Copy link
Contributor

I was able to reproduce the issue using the planning simulator with the latest autoware (autowarefoundation/autoware@44c70d3).
image
I will investigate possible solutions.

@maxime-clem
Copy link
Contributor

The main issue seems to be the road being too narrow for the dimensions of the vehicle, making it impossible to follow the road while keeping the footprint of the vehicle inside the lane.

The solution I found is to expand the drivable area, i.e., the space where the obstacle_avoidance_planner can do motion planning.
The drivable area is generated by the behavior_path_planner which has parameters to enable expanding the drivable area and to set the left and right expansion distance.

Changing these parameters to the following values allow to drive in the narrow curve.

      expand_drivable_area: true
      right_bound_offset: 0.0
      left_bound_offset: 1.0

These parameters cannot be changed dynamically and have to be changed in the parameter file loaded at launch time.

expand_drivable_area_isuzu.mp4

In the video, the following extra topics are shown:

  • DrivableArea (/planning/scenario_planning/lane_driving/behavior_planning/path) with color scheme "costmap".
  • DebugMarkers (/planning/scenario_planning/lane_driving/motion_planning/obstacle_avoidance_planner/debug/marker) only for namespace "mpt_footprints".

@mehmetdogru
Copy link
Contributor

@maxime-clem

Thank you for the solution you proposed!

There is one problem related to this approach. If there is an obstacle around and path_planner/avoidance module is registered then expanded drivable_area wouldn't be published for mpt to optimize the motion plan since drivable_area is expanded only in path_planner/lane_following module.

I will create a separate issue about it. I guess we can close this issue.

@xmfcx
Copy link
Contributor

xmfcx commented Sep 6, 2022

There is one problem related to this approach. If there is an obstacle around and path_planner/avoidance module is registered then expanded drivable_area wouldn't be published for mpt to optimize the motion plan since drivable_area is expanded only in path_planner/lane_following module.

@mehmetdogru can you explain again, @maxime-clem doesn't understand about this worry.

@maxime-clem
Copy link
Contributor

I opened a discussion about dynamically expanding the drivable area: https://github.com/orgs/autowarefoundation/discussions/2851

@mehmetdogru
Copy link
Contributor

@xmfcx @maxime-clem

Sorry for not being clear.

I will attach a video here that explains my worry.

You can see here clearly that when path_planner/avoidance module active (it means there are obstracles around/in the lane) drivable_area is not expanded. That is because drivable_area is extended only in path_planner/lane_following module except for some lane_changing cases.

As @maxime-clem suggested implementing a dynamic expansion not depending on the path_planner modules would solve this issue. We can disscuss further in the disscussion.

expanding_drivable_area_issue.mp4

@TakaHoribe
Copy link
Contributor

@takayuki5168 Could you check this problem? Seems the Drivable Area generation does not have consistency between behavior_path_planner modules.

@takayuki5168
Copy link
Contributor

@mehmetdogru
Static expansion of drivable area is only implemented in lane_following for now.
By implementing it in other modules, you can use the static expansion in any module.

if (parameters_.expand_drivable_area) {
lanelet::ConstLanelets expand_lanes{};
for (const auto & current_lane : current_lanes) {
const std::string r_type =
current_lane.rightBound().attributeOr(lanelet::AttributeName::Type, "none");
const std::string l_type =
current_lane.leftBound().attributeOr(lanelet::AttributeName::Type, "none");
const double r_offset =
r_type.compare("road_border") != 0 ? -parameters_.right_bound_offset : 0.0;
const double l_offset =
l_type.compare("road_border") != 0 ? parameters_.left_bound_offset : 0.0;
expand_lanes.push_back(lanelet::utils::getExpandedLanelet(current_lane, l_offset, r_offset));
}
current_lanes = expand_lanes;
}

@mitsudome-r
Copy link
Member

I think we can discuss the original issue in this discussion: autowarefoundation/autoware#2851
and @maxime-clem will create a new issue regarding inconsistent drivable area parameter. After the new issue is created, I will close this issue.

@maxime-clem
Copy link
Contributor

I opened the follow-up issue #1854

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component:planning Route planning, decision-making, and navigation. (auto-assigned) priority:high High urgency and importance. type:bug Software flaws or errors.
Projects
No open projects
Status: Done
Development

No branches or pull requests

7 participants