opendilab / InterFuser

[CoRL 2022] InterFuser: Safety-Enhanced Autonomous Driving Using Interpretable Sensor Fusion Transformer
Apache License 2.0
549 stars 48 forks source link

Ego vehicle’s (goal) location #67

Open Mariusmarten opened 1 year ago

Mariusmarten commented 1 year ago

How is the ego vehicle’s goal location stored in the data? And do I understand correctly that the vehicle obtains ground truth coordinate information initially?

From the paper, I got the following information:

Note that we first predict each step’s differential displacement and then recover the exact position by accumulation. To inform the waypoints predictor of the ego vehicle’s goal location, we initialize the initial hidden state of GRU with a 64-dimensional vector embedded by the GPS coordinates of the goal location with a linear projection layer.

and

At each run, the benchmark randomly spawns start/destination points, and generates a sequence of sparse goal locations in GPS coordinates. Our method uses these sparse goal locations to guide the driving without manually setting discrete navigational commands (go straight, lane changing, turning).

And I found the following values for the vehicle position: "gps_x": -330.58303211256947, "gps_y": 62.00891884672404, "x": 62.00891876220703, "y": 330.5678405761719 stored in the weather-X/data/routestown01../measurements/0000.json file.

deepcs233 commented 1 year ago

Hi! Your understanding is correct. The "gps_x" and "gps_y" here represent the location given by CARLA Leaderboard. The "x" and "y" here denote the location provided from CARLA simulator.

Mariusmarten commented 1 year ago

Thank you for the quick response. So, to be clear "gps_x" and "gps_y" are the goal locations, and "x" and "y" define the current ground truth position of the vehicle? And during one sequence the ground truth position is only provided once (at the beginning of the sequence) and then internally updated using the model's actions?

deepcs233 commented 1 year ago

Thank you for the quick response. So, to be clear "gps_x" and "gps_y" are the goal locations, and "x" and "y" define the current ground truth position of the vehicle?

No, they are all the current ground truth position of the vehicle, but in different coordinates. They can be converted to each other. "x" = "gps_y", "y" = -"gps_x"

And during one sequence the ground truth position is only provided once (at the beginning of the sequence) and then internally updated using the model's actions?

No, these measurements are provided in the whole period. You can check the 0001.json, 0002.json ...

Mariusmarten commented 1 year ago

Thanks a lot, I understand now!

One final question: I dont see speed or commands as model outputs. Where / How are the resulting output waypoints translated back into actions for the CARLA environment? Or is the model only evaluated in an offline fashion?

deepcs233 commented 1 year ago

Hi! About this question. i recommend you to refer this page: https://github.com/opendilab/InterFuser/blob/main/leaderboard/team_code/interfuser_agent.py

In a word, the agent controller receives the path and traffic prediction of the model. And then compute the safe route that the ego-car can drive. Finally, the code will convert the driving route into the actual actions.

Mariusmarten commented 1 year ago

Very helpful! I try to run the model on offline data, and I instantiate the model as done in this line: https://github.com/opendilab/InterFuser/blob/e4f0314482124bb06a475c3f6fb4bfe3a2701c4d/leaderboard/leaderboard/leaderboard_evaluator.py#L95 This also works fine, but I need help finding how to input the environment variables into this model (with the pure InterFuser this was no problem). Can you point me to the relevant file or line?