title: DJI Virtual Stick Controls are not properly applied
body: <p>I am building a drone application that will send flight commands for indoor flight. I am implementing DJI Mobile SDK's Virtual Sticks that are described <a href="https://developer.dji.com/mobile-sdk/documentation/introduction/component-guide-flightController.html#virtual-sticks" rel="nofollow noreferrer">here</a>.</p>
  
  <p>After experimenting with DJI's Simulator Tutorial found <a href="https://developer.dji.com/mobile-sdk/documentation/ios-tutorials/SimulatorDemo.html#implementing-virtualstickview" rel="nofollow noreferrer">here</a>, I implemented a trimmed-down, non-simulation version for my application. When I tested my application outdoors, the controls work consistently and correctly.</p>
  
  <p>However, when I go indoors, the drone only performs 1 action regardless of the command sent: the drone flies in the direction of its back-left propeller. The drone will always fly in this direction even if the command is only to turn the drone.</p>
  
  <p>Any ideas what could be happening? I'm not sure what code to post since my code works outdoors.</p>
  
  <p><strong>UPDATE #1</strong></p>
  
  <p>Here are my flight controller settings (implemented in Swift):</p>
  
  <pre><code>self.flightController = (DJISDKManager.product() as? DJIAircraft)?.flightController
  
  self.flightController?.rollPitchControlMode = DJIVirtualStickRollPitchControlMode.velocity
  self.flightController?.yawControlMode = DJIVirtualStickYawControlMode.angle
  self.flightController?.rollPitchCoordinateSystem = DJIVirtualStickFlightCoordinateSystem.body
  </code></pre>
  
  <p><strong>UPDATE #2</strong></p>
  
  <p>Code to change Yaw (with some hardcoded numbers). Basically is used to make the drone turn completely around.</p>
  
  <pre><code>private var turnTime = 0
  private var turnTimer: Timer? = nil
  
  func turn() {
      self.turnTimer = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: (#selector(turnDroneCommand)), userInfo: nil, repeats: true)
  }
  
  @objc func turnDroneCommand() {
      self.turnTime += 1
  
      let data = DJIVirtualStickFlightControlData(pitch: 0, roll: 0, yaw: Float(180), verticalThrottle: 0)
  
      self.flightController.send(data, withCompletion: { (error) in
          if error != nil {
              // Fire custom error callback
          }
      })
  
      if self.turnTime &gt;= 7 {
          self.turnTimer?.invalidate()
          self.turnTime = 0
          // Fire custom success callback
      }
  }
  </code></pre>
  
  <p>I've implemented an almost identical method for changing the pitch. As stated perviously, the current outcome is no different for either command.</p>