autowarefoundation / autoware_launch

Apache License 2.0
29 stars 261 forks source link

chore(static_obstacle_avoidance): make a certain scenario succeed #1024

Open sasakisasaki opened 3 months ago

sasakisasaki commented 3 months ago

Description

This PR makes a certain scenario succeed, but shows unexpected behavior as the provided video below.

(In advance discussion is performed with @brkay54 in the software working group meeting held on 0:00 (JST) 12nd June 2024).

Related links

https://github.com/autowarefoundation/autoware.universe/issues/7485

Tests performed

On the scenario simulator as the attached video. behavior

Notes for reviewers

The tuned parameter made the situation better, while the car oscillates wider gradually after the avoidance.

Interface changes

No interface changes, but this change is applied for all components which are using the static obstacle avoidance.

Effects on system behavior

Critical. Because merging this PR changes the behavior of car.

Pre-review checklist for the PR author

The PR author must check the checkboxes below when creating the PR.

In-review checklist for the PR reviewers

The PR reviewers must check the checkboxes below before approval.

Post-review checklist for the PR author

The PR author must check the checkboxes below before merging.

After all checkboxes are checked, anyone who has write access can merge the PR.

sasakisasaki commented 3 months ago

Sorry, attaching video file on the description is kind of hard to see. Let me attach the video file here too for finding and checking easily!

Screencast from 2024年06月11日 18時49分40秒.webm

sasakisasaki commented 3 months ago

@brkay54 I found the reason why the oscillation happens. I was using following command when running the scenario not to cause heavy resource load by using global_frame_rate:=5 (default is 30). It seems, using low frequency causes error accumulated control. After removing the option, the behavior became better as the attached video.

ros2 launch scenario_test_runner scenario_test_runner.launch.py \
  architecture_type:=awf/universe \
  record:=false \
  scenario:=$SCENARIO_YML \
  sensor_model:=sample_sensor_kit \
  vehicle_model:=sample_vehicle \
  global_frame_rate:=5

Screencast from 2024年06月14日 18時32分50秒.webm

brkay54 commented 3 months ago

Sorry, @sasakisasaki -san for my late reply. Also, @ahmeddesokyebrahim proposed a similar change for these parameters if I remember correctly. As I understood, the problem is avoidance module does not select objects as avoidable for some cases.

@ahmeddesokyebrahim Could you check these parameters? As I remember, also we discussed the change same parameters. If this configuration also solves your scenario, we can merge it IMO.

sasakisasaki commented 3 months ago

Thank you @brkay54 for your confirmation. I'm going to do double check if this fix still works on the latest Autoware. And also I'll check if this fix does not cause any side effect for the other modules by asking my colleagues by next meeting on 2nd July.

sasakisasaki commented 3 months ago

@shmpwk san, We want to have your opinion :pray: . We are now doing feasibility study to adapt to some challenging scenarios by changing parameters. As we encountered an unexpected behavior by changing some parameters, I guess it might be better to use the non-main branch for the investigation/study purpose. If we want to have a branch for the purpose, which way looks better for us? Any your proposals are highly appreciated :pray: . Thank you very much in advance!

sasakisasaki commented 3 months ago

My idea for now is (sorry for being still draft ideas),

ahmeddesokyebrahim commented 3 months ago

Thanks @sasakisasaki for this PR. Reflecting the discussion that we have earlier, I was working on the scenario UC-NTR-002-0001 where ego vehicle was not able to overtake parking NPC. After investigation, I found lower the parameter hard_margin_for_parked_vehicle to 0.2 helped in triggering the avoidance module and successfully overtaking the parked NPC. You may consider testing this scenario as well with your changes to take the advantage of having more one scenario passing with your change.

cc: @brkay54

shmpwk commented 3 months ago

@sasakisasaki Sorry I missed your mentioning. We usually test tuning with forking repository.

sasakisasaki commented 3 months ago

@shmpwk Thank you for sharing the information. I understand!

sasakisasaki commented 3 months ago

@ahmeddesokyebrahim Thank you for providing the information which works in such the scenarios! Actually I also had the similar observation when changing the margins (honestly, I tried many changes and not sure which is the effective ones). After trying some tuning on my environment, I'll put the update here by tomorrow (7th July).

sasakisasaki commented 3 months ago

@ahmeddesokyebrahim Perhaps I'm using something different combination of the parameters. I tried your proposal hard_margin_for_parked_vehicle=0.2 for vehicle, but I could not observe improvement on my local environment. Let me do double check if I'm doing something different :pray: . I'm now using the Autoware whose version is that of 25th June 2024. First of all I'll check the possible changes on my local machine.

Again, thank you for sharing your ideas!

brkay54 commented 3 months ago

@sasakisasaki -san, hi, I want to clarify something. I set several scenarios in the parent issue, which also include the problem of not avoiding parked vehicles. Could you fine-tune the package parameters to trigger static_obstacle_avoidance for all cases? Also, when proposing your changes, could you please explain and support the reasons for the parameter adjustments? Please also consider the other road users and try similar scenarios for them too (e.g. bicycles and motorcycles)

sasakisasaki commented 2 months ago

@brkay54 Thank you for your support and having the online session today. Now I understood what is the next actions for me: focus on the static obstacle case and find the parameters which makes the scenario succeed :+1: .

stale[bot] commented 4 weeks ago

This pull request has been automatically marked as stale because it has not had recent activity.