-
Notifications
You must be signed in to change notification settings - Fork 658
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
Investigate end-to-end delay in sudden obstacle braking response #5540
Comments
We started work on this issue. To see the reaction time, we are currently working on a package. Currently, our target design is: For the first tests, we investigated only the reactions of the control topics. Package: https://github.com/brkay54/autoware.universe/tree/feat/reaction-measure-tool/tools/reaction_analyzer For an easy start, please read the usage part of the readme of the package and also, you can use the LEO-VM-00001. You do not need to edit the entity position in the parameter file, it is already set for LEO-VM-00001 map as default. First test results: Case - 1 - obsacle_stop_planner with use_predicted_objects: Case - 2 - obsacle_stop_planner without use_predicted_objects: Case - 3 - obsacle_cruise_planner: Test document: For the first reaction tests, use_predicted_objects condition for obstacle_stop_planner is running unstable, reaction time is very high for some cases. |
The PR is ready to fix the high reaction times of obstacle_stop_planner when use_predicted_objects is true. |
Reaction Tests For Perception Pipeline The purpose of the tests is to measure the reaction time of each node in the Perception Pipeline. To achieve this, we developed a test environment by utilizing the AWSIM. We recorded rosbags in AWSIM to be able to launch the perception pipeline easily on the local devices. The disadvantage of this method is time resolution is about ~10ms because we can get a maximum 100 hz clock frequency. We used the sample_vehicle with awsim_sensor_kit (which has only 1 lidar) and tests were made in the awsim-stable branch but I am going to change the test environment to be able to run in main branches. Firstly, we wanted to measure the processing time of the Because the time resolution is about ~10 ms and the ring_outlier_filter and crop_box_filter processes finished mostly below 10 ms, the results above are not accurate. However, the concatenating process time is higher than 10 ms and we can see that the total pointcloud preprocess finished around ~115 ms on average. The most time-consuming process is concatenating. To measure the times in the perception pipeline, we created a test environment by using AWSIM. Firstly, we recorded two different rosbag files: one of them was in an empty area without any obstacle around the ego vehicle, and the other bag file was recorded in an area where there was a car in front of the ego vehicle. In both environments, the ego vehicle is in the same position and stationary, so all the topics except pointcloud topic are the same. In reaction_analyzer node, we took sample messages from pointcloud topic in the rosbags and we recorded both pointcloud messages (pointcloud message without any object and pointcloud message with the car in front of the vehicle) at node initialization. It publishes the pointcloud without any obstacle at the beginning, when we want to spawn the obstacle, it starts to publish the pointcloud with car in front of the ego. After reaction_analyzer publishing the pointcloud with a car, it starts to search the first messages of the perception pipeline topics. To be able to run all test environment, steps are explained below:
Test video: 2024-01-23.18-15-31.mp4After the obstacle is spawned (I mean reaction_analyzer starts to publish pointcloud with a car), reaction_analyzer starts to search for the obstacle in predefined topics. When it finds the reacted message, it calculates the time between the spawn command time and the header time of the reacted message. Nodes in the perception pipeline, header times do not have the timing of the process done. Firstly, I had to change the header times of some nodes by changing them to include the current time of the process done. With this test environment, we made 10 tests with some predefined checkpoints in the perception pipeline:
As we can see, the Future Work:
|
@brkay54 Thank you for your great work. 🙏 Currently, trust counts 3 in the multi-object tracker, object should be detected 3 times before publishing as a tracked object. The result looks reasonable. Also, disabling delay_compensation inside into multi-object tracker module could give better results in this use case, it could add extra delay due to publishing a tracked object into a timer. |
Weekly Update
Sample Test Video: reaction-analyzer-sample-test-perception.mp4
When I published 3 lidar pointcloud outputs, the pipeline_latency_ms started with a lower latency value: After 12 minutes: As you can see, the latency value of the concatenated nodelet of the right lidar is accumulating. After 10 minutes: After this higher value, the concatenated pointcloud delay decreases immediately as you can see graph below: It seems to me a weird behavior. After, some time, I thought that it would be caused by phase differences between lidar output publishers. Then, I added another feature to the reaction analyzer to make it able to publish pointcloud outputs synchronically. After running the reaction analyzer with synchronically published pointcloud, I couldn't see this accumulated pipeline_latency on the concatenating process: The concatenated pointcloud delay of the top lidar is higher than others. It is caused by the higher delay of the distortion corrector. Distortion_corrector in the top lidar process takes more time than others because the pointcloud size of the crop_box_filtered_mirror of the top lidar is higher than others. The difference in width between the top lidar and right-left lidars is ~13,000 and it causes ~10ms delay. However, because of this ~10ms delay, the concatenate process is always running with the past pointcloud output of the top lidar. (I didn't try yet but I saw that we can set offset values for the specific pointclouds w.r.t documentation of the concatenate nodelet. I am going to try it.)
|
Weekly Update
|
Closing because the delays are investigated. |
Checklist
Description
During several tests, a notable delay has been observed in the autonomous system's response to sudden obstacles, particularly when braking is required.
For instance, at 3:32 in a test discussion, the planning/perception components reacted later than expected.
This issue is not isolated, as searching for "reacts late" in the discussion page reveals multiple instances.
The proposed approach to investigate this involves a systematic test in both the planning simulator and AWSIM, focusing on the time taken from the obstacle's appearance to the initiation of the braking maneuver by the ego vehicle.
Purpose
The purpose of this investigation is to ensure that the response time of the Autoware system to sudden obstacles meets the necessary safety requirements.
By identifying the sources of delay within the system, from perception to actuation, we aim to optimize the response time and enhance the safety and reliability of the autonomous driving system.
Possible approaches
Planning Simulator Test:
AWSIM Test:
Definition of done
The text was updated successfully, but these errors were encountered: