Skip to content

Commit afa9f28

Browse files
authored
Merge pull request #134 from madratman/PR/final_round
Final round
2 parents 34f66b3 + ada029e commit afa9f28

File tree

1 file changed

+153
-30
lines changed

1 file changed

+153
-30
lines changed

README.md

Lines changed: 153 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@
1212

1313
### Downloading and running AirSim Binaries
1414
#### Downloading
15+
- Final round binaries and environments (v1.1)
16+
- tl;dr:
17+
- [Linux] Use the [download_final_round_binaries.sh](download_final_round_binaries.sh) script
18+
- Long version:
19+
- Download the v1.1 [Linux](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing/releases/tag/v1.1-linux) or [Windows](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing/releases/tag/v1.1-windows) `AirSim.zip`, and unzip it.
20+
- Download your qualifier environments (shipped in pakfiles) - `Final_Tier_1_and_Tier_2.pak` and ` Final_Tier_3.pak`.
21+
- Move the environment pakfiles into `AirSim/AirSimExe/Content/Paks`.
22+
- Download and move the `settings.json` file to `~/Documents/AirSim/settings.json`.
23+
- Use `airsimneurips` >= 1.2.0
24+
1525
- Qualifier binaries and environments (v1.0)
1626
- tl;dr:
1727
- [Linux] Use the [download_qualification_binaries.sh](download_qualification_binaries.sh) script
@@ -108,7 +118,7 @@ We recommend you used python >= 3.6. Python 2.7 will go [out of support soon](ht
108118
- Going through both open and closed issues in this repository might answer some of your questions. The search bar on top left can prove useful.
109119
- [AirSim upstream API](https://microsoft.github.io/AirSim/docs/apis/) and [examples](https://github.com/microsoft/AirSim/tree/master/PythonClient) can also be of use. However, please note that the main AirSim repo's API is not used in the competition (there's some overlap and some differences), however is a good learning resource.
110120

111-
## Submitting Results and Leaderboard
121+
## Submitting Results and Leaderboard - Qualification Round
112122
- For the qualification round, we have one race track for each tier. The relevant binaries (v1.0) are available for [linux](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing/releases/tag/v1.0-linux) and [windows](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing/releases/tag/v1.0-windows)
113123
- Tier 1: This is in the Soccer Field environment.
114124
THe race track is in the `Qual_Tier_1_and_Tier_3.pak` pakfile
@@ -164,7 +174,58 @@ Please read [the race monitoring section](https://github.com/microsoft/AirSim-Ne
164174
- We have emailed you a private key, which should be entered in the `Team ID` field. This helps us verify it was your team who indeed made the submission.
165175
- The [leaderboard](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/leaderboard.html) is updated once per day at 2100 PST.
166176
If you do not see your results after 24 hours, please [email us](mailto:[email protected]) with your team name and submitted log files.
167-
177+
178+
## Submitting Results and Leaderboard - Final Round
179+
- For the final round, we have one race track for each tier. The relevant binaries (v1.1) are available for [linux](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing/releases/tag/v1.1-linux) and [windows](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing/releases/tag/v1.1-windows)
180+
- Tier 1: This is in the Soccer Field environment.
181+
THe race track is in the `Final_Tier_1_and_Tier_2.pak` pakfile
182+
- Tier 2: This is in the Soccer Field environment.
183+
The race track is in the `Final_Tier_1_and_Tier_2.pak` pakfile.
184+
- Tier 3: This is again in the ZhangJiaJie environment.
185+
The race track is in the `Final_Tier_3.pak` pakfile.
186+
187+
- How to generate logfiles for each tier:
188+
- Loading level and starting race:
189+
- Please update your airsimneurips pythonclient (should be >=1.2.0).
190+
- Calling `simStartRace(race_tier=1, 2, or 3)` generates the appropriate log files. You can only run `tier N` races in `Final_Tier_N` levels.
191+
- Tier 1:
192+
```python
193+
airsim_client.simLoadLevel('Final_Tier_1')
194+
airsim_client.simStartRace(tier=1)
195+
```
196+
197+
- Tier 2:
198+
```python
199+
airsim_client.simLoadLevel('Final_Tier_2')
200+
airsim_client.simStartRace(tier=2)
201+
```
202+
203+
- Tier 3:
204+
```python
205+
airsim_client.simLoadLevel('Final_Tier_3')
206+
airsim_client.simStartRace(tier=3)
207+
```
208+
- As Tier 2 focuses on perception and Tier 3 focuses on both perception and planning, note that `simGetObjectPose` returns noisy gate poses.
209+
210+
- As soon as `simStartRace(tier=1)` or `simStartRace(tier=3)` is called, `drone_2` (MSR opponent racer) will start flying.
211+
212+
- See `baseline_racer.py` for sample code. The previous bullet points are being called in wrapper functions in the following snippet in `baseline_racer.py`:
213+
```python
214+
baseline_racer.load_level(args.level_name)
215+
baseline_racer.start_race(args.race_tier)
216+
```
217+
218+
- To submit your results to the final leaderboard:
219+
- Navigate to the [submission site](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/upload.html), enter your team name in the proper field, and upload any number of [race logs](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing/blob/master/docs/competition_guidelines.md#race-monitoring).
220+
It's ok to make a submission for as little as a single track and/or a single tier.
221+
You can find race logs inside of `AirSimExe/Saved/Logs/RaceLogs` in your downloaded binary folder.
222+
Please read [the race monitoring section](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing/blob/master/docs/competition_guidelines.md#race-monitoring) in the competition guidelines for more details.
223+
- The leaderboard will publish the results of a drone that is named `drone_1` (call [`generate_settings_file.py`](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing/blob/master/baselines/generate_settings_file.py) to generate an AirSim settings file, as done for the `baseline_racer` below.
224+
- Please submit a PDF file in the `report` section to help us verify the honesty of your submission by the Dec 5th, 2359 PST deadline. Please summarize your approach for all tiers you make a submission for, with appropriate citations. The report PDF size should not exceed 10 MB, and should be a maximum of 6 pages in length. We leave the exact format of the report to your descrition, but the [IEEE template](https://ras.papercept.net/conferences/support/tex.php) is a good choice.
225+
- We have emailed you a private key, which should be entered in the `Team ID` field. This helps us verify it was your team who indeed made the submission.
226+
- The [final leaderboard](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/leaderboard_final.html) is updated once per day at 2100 PST.
227+
If you do not see your results after 24 hours, please [email us](mailto:[email protected]) with your team name and submitted log files.
228+
168229
## Sample code
169230
- Plan and move on minimum jerk trajectory using gate ground truth poses:
170231
- Generate an AirSim settings.json file
@@ -203,35 +264,97 @@ Please read [the race monitoring section](https://github.com/microsoft/AirSim-Ne
203264
- R. Spica, D. Falanga, E. Cristofalo, E. Montijano, D. Scaramuzza, and M. Schwager, "A Real-Time Game Theoretic Planner for Autonomous Two-Player Drone Racing", in the Proccedings of Robotics: Science and Systems (RSS), 2018.
204265

205266
## Quick API overview
206-
- Changing unreal environments
207-
There are two ways to swap between environments / "unreal level", either via AirSIm API or by the UI menu.
208-
- Python API
209-
Use `simLoadLevel(level_name="MainMenu")` to change Unreal environments on the fly.
210-
Possible values for `level_name` are : `"Soccer_Field_Easy"`, `"Soccer_Field_Medium"`, `"ZhangJiaJie_Medium"`, `"Building99_Hard"`.
211-
Here's a quick snippet to iterate throught all the training environments.
212-
Before trying this, please ensure you've downloaded the corresponding training (v0.3) / qualifier (v1.0) binaries, [as described above](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing#downloading-airsimexe-and-unreal-environments)
213-
214-
```python
215-
import airsimneurips as airsim
216-
client = airsim.MultirotorClient()
217-
client.confirmConnection()
218-
219-
# use this for training environments (v0.3)
220-
221-
client.simLoadLevel('Soccer_Field_Easy')
222-
client.simLoadLevel('Soccer_Field_Medium')
223-
client.simLoadLevel('ZhangJiaJie_Medium')
224-
client.simLoadLevel('Building99_Hard')
225-
226-
# use this for qualification environments (v1.0)
227-
client.simLoadLevel('Qualification_Tier_1')
228-
client.simLoadLevel('Qualification_Tier_2')
229-
client.simLoadLevel('Qualification_Tier_3')
267+
We added some new APIs (marked with 💚) to [AirSim](https://github.com/Microsoft/Airsim) for the NeurIPS competition binaries.
230268

231-
```
232-
- UI Menu
233-
- Press `F10` to toggle the level menu
234-
- Click your desired level. (Note: the UI lists all the pakfiles in the `AirSim/AirSimExe/Content/Paks` directory. Ensure you downloaded the pakfile, if you are not able to see a particular environment)
269+
#### Loading Unreal Engine environments
270+
- [`simLoadLevel(level_name)`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.level_name) 💚
271+
Possible values for `level_name` are:
272+
- `"Soccer_Field_Easy"`, `"Soccer_Field_Medium"`, `"ZhangJiaJie_Medium"`, `"Building99_Hard"` in the training binaries (`v0.3`).
273+
- `"Qualification_Tier_1"`, `"Qualification_Tier_2"`, `"Qualification_Tier_3"` in the qualification binaries (`v1.0`).
274+
- `"Final_Tier_1"`, `"Final_Tier_2"`, `"Final_Tier_3"` in the final round binaries (`v1.1`).
275+
Before trying this, please ensure you've downloaded the corresponding training (`v0.3`) / qualifier (`v1.0`) / final round (`v1.0`) binaries, [as described above](https://github.com/microsoft/AirSim-NeurIPS2019-Drone-Racing#downloading-airsimexe-and-unreal-environments)
276+
277+
- UI Menu
278+
- Press `F10` to toggle the level menu
279+
- Click your desired level. (Note: the UI lists all the pakfiles in the `AirSim/AirSimExe/Content/Paks` directory. Ensure you downloaded the pakfile, if you are not able to see a particular environment)
280+
281+
#### Race APIs:
282+
- Start a race:
283+
[`simStartRace(tier=1/2/3)`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simStartRace) 💚
284+
285+
- Reset race:
286+
[`simResetRace()`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simResetRace) 💚
287+
288+
- Check if racer is disqualified:
289+
[`simIsRacerDisqualified()`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simIsRacerDisqualified) 💚
290+
291+
- Get index of last gate passed:
292+
[`simGetLastGatePassed()`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simGetLastGatePassed) 💚
293+
294+
- Disable generation of logfiles by race APIs:
295+
[`simDisableRaceLog`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simDisableRaceLog) 💚
296+
297+
#### Lower level control APIs:
298+
- FPV like Angle rate setpoint APIs:
299+
- [`moveByAngleRatesThrottleAsync`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveByAngleRatesThrottleAsync) 💚
300+
- [`moveByAngleRatesZAsync`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveByAngleRatesZAsync) 💚 (stabilizes altitude)
301+
302+
- Angle setpoint APIs:
303+
- [`moveByRollPitchYawThrottleAsync`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveByRollPitchYawThrottleAsync) 💚
304+
- [`moveByRollPitchYawZAsync`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveByRollPitchYawZAsync) 💚 (stabilizes altitude)
305+
306+
- RollPitchYawrate setpoint APIs:
307+
- [`moveByRollPitchYawrateThrottleAsync`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveByRollPitchYawrateThrottleAsync) 💚
308+
- [`moveByRollPitchYawrateZ`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveByRollPitchYawrateZ) 💚 (stabilizes altitude)
309+
310+
#### Medium level control APIs:
311+
- Velocity setpoints
312+
- [`moveByVelocityAsync`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveByVelocityAsync)
313+
- [`moveByVelocityZAsync`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveByVelocityZAsync) (stabilizes altitude)
314+
315+
- Position setpoints
316+
- [`moveToPosition`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveToPositionAsync)
317+
- [`moveOnPath`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveOnPathAsync)
318+
- [`moveToZAsync`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveToZAsync)
319+
320+
#### High level control APIs:
321+
- Minimum jerk trajectory planning (using [ethz-asl/mav_trajectory_generation](https://github.com/ethz-asl/mav_trajectory_generation)), and trajectory tracking (using a pure pursuit like controller minimizing position and velocity errors), with position setpoints.
322+
Optionally use the `*lookahead*` parameters to start new trajectory from a point sampled `n` seconds ahead for trajectory being tracked currently.
323+
- [`moveOnSplineAsync`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveOnSplineAsync) 💚
324+
325+
- Minimum jerk trajectory planning (using [ethz-asl/mav_trajectory_generation](https://github.com/ethz-asl/mav_trajectory_generation)), and trajectory tracking (using a pure pursuit like controller minimizing position and velocity errors), with position setpoints and corresponding velocity constraints. Useful for making a drone go through a gate waypoint, while obeying speed and direction constraints.
326+
Optionally use the `*lookahead*` parameters to start new trajectory from a point sampled `n` seconds ahead for trajectory being tracked currently.
327+
- [`moveOnSplineVelConstraintsAsync`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.moveOnSplineVelConstraintsAsync) 💚
328+
329+
- Clear and stop following current trajectory.
330+
- [`clearTrajectory`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.clearTrajectory) 💚
331+
332+
#### Gain setter APIs:
333+
- [`setAngleRateControllerGains`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.setAngleRateControllerGains) 💚
334+
- [`setAngleLevelControllerGains`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.setAngleLevelControllerGains) 💚
335+
- [`setVelocityControllerGains`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.setVelocityControllerGains) 💚
336+
- [`setPositionControllerGains`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.setPositionControllerGains) 💚
337+
- [`setTrajectoryTrackerGains`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.setTrajectoryTrackerGains) 💚
338+
339+
#### APIs to help generate gate detection datasets:
340+
- Object pose setter and getter:
341+
- [`simSetObjectPose`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simSetObjectPose)
342+
- [`simGetObjectPose`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simGetObjectPose)
343+
344+
- Object scale setter and getter:
345+
- [`simSetObjectScale`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simSetObjectScale) 💚
346+
- [`simGetObjectScale`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simGetObjectScale) 💚
347+
348+
- Object segmentation ID setter and getter:
349+
- [`simGetSegmentationObjectID`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simGetSegmentationObjectID)
350+
- [`simSetSegmentationObjectID`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simSetSegmentationObjectID)
351+
352+
- Listing all the objects in the scene:
353+
- [`simListSceneObjects`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simListSceneObjects) 💚
354+
355+
- Gate specific APIs:
356+
- [`simGetNominalGateInnerDimensions`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simGetNominalGateInnerDimensions) 💚
357+
- [`simGetNominalGateOuterDimensions`](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/api.html#airsimneurips.client.MultirotorClient.simGetNominalGateOuterDimensions) 💚
235358

236359
## Questions
237360
Please open a Github Issue on **this** repository (not [AirSim](https://github.com/microsoft/AirSim)) for any technical questions w.r.t. the Neurips competition.

0 commit comments

Comments
 (0)