Skip to content

How to fly the 3DR Solo

amybear edited this page Apr 9, 2016 · 1 revision

How to fly the 3DR Solo

This article explains how to fly the 3DR Solo from the controller. It also explains how channel overrides work.

Controller

Table of Contents

  1. Flight Modes
  2. Guided Takeoff
  3. Manual Takeoff
  4. Landing
  5. Stick Controls
  6. Panic Buttons
  7. Channel Overrides

Flight Modes

You can set the flight mode either through the remote controller, or through a DroneKit script. The most important modes to know here are GUIDED (requires GPS), and STABILIZE, ALT_HOLD, and LAND (do not require GPS).

Setting the flight mode through the remote controller

To set the flight mode through the remote controller, from the app home screen, tap Settings and then choose Advanced Settings. Toggle the Enable Advanced Flight Modes option to gain access to Solo’s advanced modes. To access an advanced flight mode, assign one of the five available advanced modes to the controller’s A or B button in the Solo settings section.

Setting the flight mode through DroneKit

vehicle.mode = VehicleMode(<arducopter_mode>)

See the list of flight modes below. When setting a flight mode in DroneKit, use the ArduCopter name for the mode, not the Solo name.

Flight modes that require GPS:

Flight modes that use GPS-positioning data require an active GPS lock prior to takeoff.

Guided ("GUIDED" in ArduCopter)

Guided mode is a version of standard flight with GPS lock. In Guided, Solo will maintain its altitude and position in the air, unless you control the left and right joysticks. Guided mode uses GPS positioning in order to maintain the position of your Solo.

Drift ("DRIFT" in ArduCopter)

Drift mode requires GPS lock and provides a plane-like flying experience. Drift is ideal for navigating Solo using the video feed. This is known as first-person view (FPV) and provides an immersive flying experience. In Drift, Solo combines roll, pitch, and yaw onto the controller’s right stick.

To navigate Solo in Drift, move the right stick to initiate a coordinated turn in that direction. Releasing the right stick causes Solo to drift to a stop over a two-second period. Solo does not automatically control altitude in Drift, and requires constant adjustments to the throttle stick when flying in Drift.

Flight modes that do not require GPS:

Fly:Manual ("ALT_HOLD" in ArduCopter)

Fly:Manual mode is a version of standard flight without GPS lock. In Fly:Manual, the throttle stick controls altitude the same way as standard flight (Fly mode). However, Fly:Manual includes no GPS positioning so that, when you release the right stick, Solo will not hold its position; it will drift according to wind conditions and existing momentum. When flying in Fly:Manual, make constant adjustment to the right stick to control Solo’s position and use the left stick to maintain Solo’s orientation.

Stabilize ("STABILIZE" in ArduCopter)

Stabilize mode provides full manual control without autopilot assistance. In stabilize, the roll and pitch angles are monitored and regulated so that Solo returns to level when you release the right stick. The throttle stick controls power and acceleration directly; it does not correspond to altitude. Stabilize requires fine-tuned control of both the left and right sticks to fly Solo. Stabilize does not require GPS lock.

Acro ("ACRO" in ArduCopter)

Acro is the most advanced of Solo’s flight modes. It provides unrestricted control over Solo’s roll and pitch angles. Acro is intended for performing aerial acrobatics, flips, and maneuvers requiring extreme angles. No altitude or position assistance is available in Acro, so be prepared to make constant adjustment to both sticks.

Acro is a copter-frame oriented mode, meaning that, in Acro, Solo always responds to controls relative to its own orientation. Acro does not require GPS lock.

Sport ("SPORT" in ArduCopter)

Sport mode in a modified version of Acro that includes altitude assistance and earth-frame orientation. With altitude assistance, the throttle stick behaves the same in Sport as it does in standard flight (Fly mode).

Earth-frame orientation differs from copter-frame orientation in that the direction of yaw rotation is in relation to the earth instead of in relation to the copter itself. For example, if Solo is pitched forward in Sport mode and left yaw is applied, Solo maintains the same pitch angle and rotate around the vertical axis. This differs from Acro’s copter-frame orientation, in which, in the same situation, Solo performs a cartwheel. Sport does not require GPS lock.

Land ("LAND" in ArduCopter)

Land Mode attempts to bring the Solo straight down. Upon reaching the ground, Solo will automatically shut-down the motors and disarm the copter if the pilot’s throttle is at minimum.

Guided Takeoff

Once Solo and the controller are both powered on, and a GPS connection has been established (NOTE: the takeoff button requires a GPS connection), the controller will prompt you to hold the Fly button to start Solo’s motors. Hold Fly to activate the motors.

With the propellers now spinning, Solo is ready for takeoff. Hold Fly once again, and Solo will ascend to 10 ft. (3 m) and hover in place.

Manual Takeoff

You should only be doing this from a DroneKit script, and we do this using a PID control loop to override the remote control (RC) channels. See the Channel Overrides section for more information.

Landing

When you decide to end your flight, simply hold the Fly button to land Solo at its current location. Landing will work without GPS.

Note: When commanded to land, Solo will land at the current location, wherever it is. Always make sure there is a clear path to a safe landing point directly below Solo before landing.

Stick Controls

The controller’s two joysticks allow you to navigate Solo in flight.

Left Joystick

The left stick controls Solo’s altitude and rotation.

left joystick

Move vertically to control Solo’s altitude and acceleration.

Move horizontally to rotate Solo and control orientation.

Right Joystick

Use the right stick to fly Solo forward, back, left, and right. These movements are relative to Solo’s current orientation, so always maintain awareness of Solo’s forward-facing direction before using right-stick controls.

right joystick

Move vertically to control pitch.

Move the right stick horizontally to control roll.

Panic Buttons

If you experience a problem during one of your flights, the following procedures can help you avoid trouble. Note: we have discovered that these buttons can behave unpredictably during controller channel overrides.

Pause Button

The Pause button freezes Solo mid-air like an emergency air brake. This can be useful to stop Solo from hitting an obstacle or to re-orient Solo for navigation. Pressing Pause during Return Home or Land will also freeze Solo during these maneuvers.

Return to Home

The Return Home button allows you to bring your flight to an end by recalling Solo to its launch location and landing. Keep in mind that Return Home requires enough battery to get back to the launch point, so if you need to end your flight immediately then land manually or hold the Fly button. Return Home requires GPS lock prior to takeoff. DO NOT use this button during non-GPS modes.

Solo will not avoid obstacles during its journey home, so make sure the return path is clear before activating Return Home.

Land

If you need to immediately, hold the Fly button to land Solo at its current position.

Motor Shutoff

In the event that Solo’s motors do not stop after landing or for an emergency in-flight kill switch, Solo includes an emergency motor shutoff procedure. To shut off the motors at any time, either in flight or on the ground, hold the A, B, and Pause buttons at the same time. An initial screen will appear on the controller to confirm the shutoff command.

Continue to hold A, B, and Pause buttons to activate motor shutoff. If activated during flight, Solo will crash, so use this procedure only in case of emergency.

Channel Overrides

The RC transmitter channels are connected to the autopilot and control the vehicle.

The values of the first four channels map to the main flight controls: 1=Roll, 2=Pitch, 3=Throttle, 4=Yaw (the mapping is defined in RCMAP_ parameters in Copter).

You can read the values of the channels using the Vehicle.channels attribute. The values are regularly updated, from the UAV, based on the RC inputs from the transmitter. These can be read either as a set or individually:

# Get all channel values from RC transmitter
print "Channel values from RC: ", vehicle.channels

# Access channels individually
print "Read channels individually:"
print " Ch1: %s" % vehicle.channels['1']
print " Ch2: %s" % vehicle.channels['2']

You can override the values sent to the vehicle by the autopilot using Vehicle.channels.overrides. The overrides can be written individually using an indexing syntax or as a set using a dictionary syntax.

# Set Ch2 override to 1500 using indexing syntax
vehicle.channels.overrides['2'] = 1500
# Set Ch3, Ch4 override to 1600, 1300 using dictionary syntax
vehicle.channels.overrides = {'3':1600, '4':1300}

To clear all overrides, set the attribute to an empty dictionary. To clear an individual override you can set its value to None (or call del on it):

# Clear override by setting channels to None
# Clear using index syntax
vehicle.channels.overrides['2'] = None

# Clear using 'del' syntax
del vehicle.channels.overrides['3']

# Clear using dictionary syntax (and set override at same time!)
vehicle.channels.overrides = {'5':None, '6':None,'3':1500}

# Clear all overrides by setting an empty dictionary
vehicle.channels.overrides = {}

Read the channel overrides either as a dictionary or by index. Note: You’ll get a KeyError exception if you read a channel override that has not been set.

# Get all channel overrides
print " Channel overrides: %s" % vehicle.channels.overrides
# Print just one channel override
print " Ch2 override: %s" % vehicle.channels.overrides['2']