Release notes:
Environment Pak Files
- Same as v0.0-linux
[airsimneurips](https://pypi.org/project/airsimneurips/)
- v0.0.14
- [Documentation](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/)
Bug fixes:
- Fixed a bug in [moveByAngleRatesZAsync](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByAngleRatesZAsync) and [moveByRollPitchYawrateZAsync](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByRollPitchYawrateZAsync), which was causing the sent commands to latch on indefinitely, instead of being timed out after `duration` (function parameter) seconds had elapsed.
v-0.1.2-windows
Release notes:
Environment Pak Files
- Same as v0.0-windows
[airsimneurips](https://pypi.org/project/airsimneurips/)
- v0.0.14
- [Documentation](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/)
Bug fixes:
- Fixed a bug in [moveByAngleRatesZAsync](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByAngleRatesZAsync) and [moveByRollPitchYawrateZAsync](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByRollPitchYawrateZAsync), which was causing the sent commands to latch on indefinitely, instead of being timed out after `duration` (function parameter) seconds had elapsed.
v0.1.1-windows
Release notes:
Environment Pak Files
- Same as v0.0-windows. No need to re-download.
[airsimneurips](https://pypi.org/project/airsimneurips/)
- Please upgrade `airsimneurips` python package version to **0.0.11** to use the below-mentioned APIs.
- `$ pip install airsimneurips --upgrade`
- **New:** The pip package is now documented at https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/
API
- This patch is concerned with the low level control APIs. Specifically, updating and extending old angle set-point APIs in the previous version, and addition of new angle-rate APIs.
- All of the below-mentioned (old / new) APIs work in the **body frame** of the drone.
Set points are given in **radians** or **radians / second**.
The body frame follows the Front Left Up (FLU) convention, and right-handedness.
- X axis is along the "Front" direction of the quadrotor.
Clockwise rotation about this axis defines a positive **roll** angle.
Hence, rolling with a positive angle is equivalent to translating in the "right" direction, w.r.t. our FLU body frame.
- Y axis is along the "Left" direction of the quadrotor.
Clockwise rotation about this axis defines a positive **pitch** angle.
Hence, pitching with a positive angle is equivalent to translating in the "front" direction, w.r.t. our FLU body frame.
- Z axis is along the "Up" direction.
Clockwise rotation about this axis defines a positive **yaw** angle.
Hence, yawing with a positive angle is equivalent to rotated towards the "left" direction wrt our FLU body frame. Or in an anticlockwise fashion in the body XY / FL plane.
- [moveByAngleRatesThrottleAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByAngleRatesThrottleAsync) (**new**)
- [moveByAngleRatesZAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByAngleRatesZAsync) (**new**)
- [moveByRollPitchYawThrottleAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByRollPitchYawThrottleAsync) (**new**)
- [moveByRollPitchYawZAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByRollPitchYawZAsync)
(was `moveByAngleZAsync` )
- [moveByRollPitchYawrateThrottleAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByRollPitchYawrateThrottleAsync)
(was `moveByAngleThrottleAsync` )
- [moveByRollPitchYawrateZAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByRollPitchYawrateZAsync) (**new**)
- [moveByYawRateAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByYawRateAsync)
(was `rotateByYawRateAsync` )
- [moveToYawAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveToYawAsync)
(was `rotateToYawAsync` )
- Minor API changes
- `enableApiControl(bool, vehicle_name)` is now broken into `enableApiControl(vehicle_name)`, `disableApiControl(vehicle_name)`
- [enableApiControl](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.enableApiControl)
- [disableApiControl](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.disableApiControl)
- `armDisarm(bool, vehicle_name)` is now broken into `arm(vehicle_name)`, `disarm(vehicle_name)`
- [arm](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.arm)
- [disarm](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.disarm)
v0.1.1-linux
Release Notes:
- Environment Pak files are same as v0.0.0-linux. No need to re-download.
- Please upgrade `airsimneurips` python package version to **0.0.11** to use the below-mentioned APIs.
**New:** The pip package is now documented at https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/
- `$ pip install airsimneurips --upgrade`
- This patch is concerned with the low level control APIs. Specifically, updating and extending old angle set-point APIs in the previous version, and addition of new angle-rate APIs.
- All of the below-mentioned (old / new) APIs work in the **body frame** of the drone.
Set points are given in **radians** or **radians / second**.
The body frame follows the Front Left Up (FLU) convention, and right-handedness.
- X axis is along the "Front" direction of the quadrotor.
Clockwise rotation about this axis defines a positive **roll** angle.
Hence, rolling with a positive angle is equivalent to translating in the "right" direction, w.r.t. our FLU body frame.
- Y axis is along the "Left" direction of the quadrotor.
Clockwise rotation about this axis defines a positive **pitch** angle.
Hence, pitching with a positive angle is equivalent to translating in the "front" direction, w.r.t. our FLU body frame.
- Z axis is along the "Up" direction.
Clockwise rotation about this axis defines a positive **yaw** angle.
Hence, yawing with a positive angle is equivalent to rotated towards the "left" direction wrt our FLU body frame. Or in an anticlockwise fashion in the body XY / FL plane.
- [moveByAngleRatesThrottleAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByAngleRatesThrottleAsync) (**new**)
- [moveByAngleRatesZAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByAngleRatesZAsync) (**new**)
- [moveByRollPitchYawThrottleAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByRollPitchYawThrottleAsync) (**new**)
- [moveByRollPitchYawZAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByRollPitchYawZAsync)
(was `moveByAngleZAsync` )
- [moveByRollPitchYawrateThrottleAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByRollPitchYawrateThrottleAsync)
(was `moveByAngleThrottleAsync` )
- [moveByRollPitchYawrateZAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByRollPitchYawrateZAsync) (**new**)
- [moveByYawRateAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveByYawRateAsync)
(was `rotateByYawRateAsync` )
- [moveToYawAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveToYawAsync)
(was `rotateToYawAsync` )
- Minor API changes
- `enableApiControl(bool, vehicle_name)` is now broken into `enableApiControl(vehicle_name)`, `disableApiControl(vehicle_name)`
- [enableApiControl](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.enableApiControl)
- [disableApiControl](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.disableApiControl)
- `armDisarm(bool, vehicle_name)` is now broken into `arm(vehicle_name)`, `disarm(vehicle_name)`
- [arm](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.arm)
- [disarm](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.disarm)
v0.1.0-windows
Release Notes:
- Environment Pak files are same as v0.0-windows. No need to re-download.
- Please upgrade `airsimneurips` python package version to **0.0.7** to use the below-mentioned APIs
- `$ pip install airsimneurips --upgrade`
- **New** APIs():
- [setTrajectoryTrackerGains()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.setTrajectoryTrackerGains)
python
traj_tracker_gains = airsim.TrajectoryTrackerGains(kp_cross_track = 7.5, kd_cross_track = 0.0,
kp_vel_cross_track = 5.0, kd_vel_cross_track = 0.0,
kp_along_track = 0.4, kd_along_track = 0.0,
kp_vel_along_track = 0.04, kd_vel_along_track = 0.0,
kp_z_track = 2.0, kd_z_track = 0.0,
kp_vel_z = 0.4, kd_vel_z = 0.0,
kp_yaw = 3.0, kd_yaw = 0.1)
traj_tracker_gains_list = traj_tracker_gains.to_list()
client.setTrajectoryTrackerGains(gains=traj_tracker_gains_list, vehicle_name='')
- [moveOnSplineAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveOnSplineAsync)
- Fits a minimum jerk trajectory to the list of given 3D waypoints (specified by the `waypoint_vector3r_list` parameter).
Uses ETHZ-ASL's [`mav_trajectory_generation`](https://github.com/ethz-asl/mav_trajectory_generation) as the trajectory planning backend.
- Tracks the references positions and velocities using a pure pursuit tracking controller. The gains of the pure pursuit tracking controller are set by `setTrajectoryTrackerGains()` as shown above.
- Note: `setTrajectoryTrackerGains()` **must** be called once before calling moveOnSpline()
python
moveOnSplineAsync(waypoint_vector3r_list, vel_max=15.0, acc_max=7.5, add_curr_odom_position_constraint=True, add_curr_odom_velocity_constraint=True, viz_traj=True, vehicle_name = '')
- [moveOnSplineVelConstraintsAsync()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveOnSplineVelConstraintsAsync)
- Fits a minimum jerk trajectory to the list of given 3D waypoints (specified by the `waypoint_vector3r_list` parameter), with corresponding 3D velocity vector constraints (specified by the `velocity_vector3r_list` parameter).
Uses ETHZ-ASL's [`mav_trajectory_generation`](https://github.com/ethz-asl/mav_trajectory_generation) as the trajectory planning backend.
- Tracks the references positions and velocities using a pure pursuit tracking controllers. The gains of the pure pursuit tracking controllers are set by `setTrajectoryTrackerGains()` as shown above.
- Note: `setTrajectoryTrackerGains()` **must** be called once before calling moveOnSplineVelConstraintsAsync()
python
moveOnSplineVelConstraintsAsync(waypoint_vector3r_list, velocity_vector3r_list, vel_max=15.0, acc_max=7.5, add_curr_odom_position_constraint=True, add_curr_odom_velocity_constraint=True, viz_traj=True, vehicle_name = ''):
- [plot_transform()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.plot_transform)
python
plot_transform(pose_list, vehicle_name='')
v0.1.0-linux
Release Notes:
- Environment Pak files are same as v0.0-linux. No need to re-download.
- Please upgrade `airsimneurips` python package version to **0.0.7** to use the below-mentioned APIs
- `$ pip install airsimneurips --upgrade`
- **New** APIs():
- [setTrajectoryTrackerGains()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.setTrajectoryTrackerGains)
python
traj_tracker_gains = airsim.TrajectoryTrackerGains(kp_cross_track = 7.5, kd_cross_track = 0.0,
kp_vel_cross_track = 5.0, kd_vel_cross_track = 0.0,
kp_along_track = 0.4, kd_along_track = 0.0,
kp_vel_along_track = 0.04, kd_vel_along_track = 0.0,
kp_z_track = 2.0, kd_z_track = 0.0,
kp_vel_z = 0.4, kd_vel_z = 0.0,
kp_yaw = 3.0, kd_yaw = 0.1)
traj_tracker_gains_list = traj_tracker_gains.to_list()
client.setTrajectoryTrackerGains(gains=traj_tracker_gains_list, vehicle_name='')
- [moveOnSpline()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.moveOnSplineAsync)
- Fits a minimum jerk trajectory to the list of given 3D waypoints (specified by the `waypoint_vector3r_list` parameter).
Uses ETHZ-ASL's [`mav_trajectory_generation`](https://github.com/ethz-asl/mav_trajectory_generation) as the trajectory planning backend.
- Tracks the references positions and velocities using a pure pursuit tracking controller. The gains of the pure pursuit tracking controller are set by `setTrajectoryTrackerGains()` as shown above.
- Note: `setTrajectoryTrackerGains()` **must** be called once before calling moveOnSpline()
python
moveOnSplineAsync(waypoint_vector3r_list, vel_max=15.0, acc_max=7.5, add_curr_odom_position_constraint=True, add_curr_odom_velocity_constraint=True, viz_traj=True, vehicle_name = '')
- [moveOnSplineVelConstraintsAsync()](moveOnSplineVelConstraintsAsync)
- Fits a minimum jerk trajectory to the list of given 3D waypoints (specified by the `waypoint_vector3r_list` parameter), with corresponding 3D velocity vector constraints (specified by the `velocity_vector3r_list` parameter).
Uses ETHZ-ASL's [`mav_trajectory_generation`](https://github.com/ethz-asl/mav_trajectory_generation) as the trajectory planning backend.
- Tracks the references positions and velocities using a pure pursuit tracking controllers. The gains of the pure pursuit tracking controllers are set by `setTrajectoryTrackerGains()` as shown above.
- Note: `setTrajectoryTrackerGains()` **must** be called once before calling moveOnSplineVelConstraintsAsync()
python
moveOnSplineVelConstraintsAsync(waypoint_vector3r_list, velocity_vector3r_list, vel_max=15.0, acc_max=7.5, add_curr_odom_position_constraint=True, add_curr_odom_velocity_constraint=True, viz_traj=True, vehicle_name = ''):
- [plot_transform()](https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/airsimneurips.client.MultirotorClient.plot_transform)
python
plot_transform(pose_list, vehicle_name='')
v0.0-linux
List of Environments
1. SoccerField - A simple soccer field environment with few obstacles, and an easy to follow course.
2. ZhangJiaJie - A mountainous landscape based on a national park in the Hunan province of China.
3. Building99 - A tight race course designed inside one of Microsoft's very own buildings.
How to Use
1. Download `AirSim.tar.gz` and extract it into a place of your choosing. This is your main executable file.
2. Download your desired DLC package(s).
3. Copy your downloaded `pak` file, and paste it into `Airsim/AirSimExe/Content/Paks`.
v0.0-windows
List of Levels by Difficulty (Least to Most Difficult)
1. Soccer Field - A simple outdoors environment with few obstacles, and an easy to follow course.
2. ZhangJiaJie - A mountainous landscape based on a national park in the Hunan province of China.
3. Building99 - A tight race course designed inside one of Microsoft's very own buildings.
How to Use
1. Download `AirSim.zip` and unzip it into a place of your choosing. This is your main executable file.
2. Download your desired DLC package(s).
3. Copy your downloaded `pak` file, and paste it into `Airsim/AirSimExe/Content/Paks`.