Skip to content
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

What subset of the API are we allowed to use? #19

Closed
rmst opened this issue Aug 1, 2019 · 5 comments
Closed

What subset of the API are we allowed to use? #19

rmst opened this issue Aug 1, 2019 · 5 comments

Comments

@rmst
Copy link

rmst commented Aug 1, 2019

The API offers many functions. Which ones will be allowed in the competition?

>>> client.sim
client.simCharGetAvailableFaceExpressions(  client.simCharResetBonePose(                client.simCharSetSkinAgeing(                client.simGetGroundTruthEnvironment(        client.simGetVehiclePose(                   client.simSetObjectPose(
client.simCharGetBonePose(                  client.simCharSetBonePose(                  client.simCharSetSkinDarkness(              client.simGetGroundTruthKinematics(         client.simIsPause(                          client.simSetPose(
client.simCharGetBonePoses(                 client.simCharSetBonePoses(                 client.simContinueForTime(                  client.simGetImage(                         client.simListSceneObjects(                 client.simSetSegmentationObjectID(
client.simCharGetFaceExpression(            client.simCharSetFaceExpression(            client.simDestroyObject(                    client.simGetImages(                        client.simLoadLevel(                        client.simSetTimeOfDay(
client.simCharGetHeadRotation(              client.simCharSetFacePreset(                client.simEnableWeather(                    client.simGetObjectPose(                    client.simPause(                            client.simSetVehiclePose(
client.simCharGetSkinAgeing(                client.simCharSetFacePresets(               client.simGetCameraInfo(                    client.simGetPose(                          client.simPrintLogMessage(                  client.simSetWeatherParameter(
client.simCharGetSkinDarkness(              client.simCharSetHeadRotation(              client.simGetCollisionInfo(                 client.simGetSegmentationObjectID(          client.simSetCameraOrientation(   
@msb336
Copy link
Contributor

msb336 commented Aug 1, 2019

Stay tuned for an official release of whitelisted APIs for the competition, but as a general rule of thumb, APIs with the sim prefix will be blocked. The exceptions to this being simGetImage(s) and simLoadLevel

@madratman
Copy link
Contributor

To add on, for control APIs, see comment here #9 (comment)

@madratman
Copy link
Contributor

See https://microsoft.github.io/AirSim-NeurIPS2019-Drone-Racing/, and the recent release notes v0.1.1 and v0.1.0 for control APIs

@rmst
Copy link
Author

rmst commented Aug 7, 2019

How does something like moveByAngleRatesThrottleAsync(roll_rate, pitch_rate, yaw_rate, throttle, duration, vehicle_name='') work precisely?

Are the rates and throttle arguments target values that a PID controller is trying to reach within duration (by modifying the speed of the rotors) or are those values set directly in the simulator and will be held for duration and set to zero afterwards?

Also, what happens if we call the command again before duration has passed? Is it replaced or will it execute after the previous command finishes?

@madratman
Copy link
Contributor

  • Throttle is set directly. There is no control for the same.
    yes, anglerates are tried to reach with a P controller.
    the controller runs till duration is reached, and then rates are set back to zero. however, wrt throttle, drone switches back to hover, and won't fall out of the sky

  • if you call the command again before duration has passed, it will be replace.
    if you want it to execute after the previous command finishes, you can do :
    moveByAngleRatesThrottleAsync(roll_rate, pitch_rate, yaw_rate, throttle, duration, vehicle_name='').join()
    which will wait for duration to get finished.

Note that for moveByAngleRatesZAsync, Z direction would be stabilized for you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants