Understanding components is the first and most important lesson in getting started with Dronelink. At the most basic level, a component is a collection of one or more instructions for your drone to execute during a mission. Traditional approaches to flight automation treat each mission plan as a unique, indivisible set of instructions for a specific drone at a specific location and even a specific pilot. Dronelink discourages this way of thinking as it leads to inefficiency, complexity, errors, and knowledge silos.
Instead, Dronelink introduces component-based flight automation, acknowledging that most mission plans are simply a reorganization of instructions from previous plans. Creating mission plans from components encourages mission planners to consider reusability from the start, which increases the chance that valuable ideas can be easily incorporated into future plans. Avoiding rework promotes efficiency, and reusing a field-tested component results in fewer repetitive errors. Building with components also opens the door to organization strategies and collaboration workflows that would not otherwise be possible.
Dronelink includes many types of components that allow you to control and move your drone, gimbal(s), and camera(s), and that allow you to create organization and layers of abstraction. We are always looking for new patterns of behavior that are both ubiquitous and tedious to implement using existing component types, and we intend to add many new component types over time. However, deciding when to create a new component type is not always easy. Component types often sacrifice flexibility to gain usability and the trade-off must be carefully considered.
Have an idea for a new component type? Let us know about it!
Dronelink unlocks full, programmatic control of your drone, gimbal(s), and camera(s) through the use of commands. Learn more about commands.
Command components give you direct access to the same underlying commands that the Dronelink flight controller uses to perform pre-programmed behaviors. Direct access allows you to pick up where we left off, essentially allowing you to program your own custom behaviors. For example, you may have 10 different camera settings that you always apply before each flight. Combining camera command components into a list ensures that these settings are consistent every time.
Motion components are the primary way to control the motion of your drone. It is possible to define similar motions using different types (e.g. multiple destination components vs waypoints in a path component), but each component type was designed for a specific set of use-cases. We always recommend using the most basic component type that was designed for your use-case.
Some motion components are considered to be achievable, meaning that the Dronelink flight controller will automatically calculate the best way to achieve the motion given specific parameters. Achievable components allow you to focus on what happens before and after the motion is achieved instead of the exact motion itself. The before and after behavior is controlled through the use of immediate and achieved components, which can be commands or lists of commands. Read about heading components for an example.
Some motion components are considered to be approachable, meaning that the Dronelink flight controller will use a destination component to position the drone at a specified starting location before the primary motion. This special destination component is called the approach, and it has all the same benefits and configuration options as any ordinary achievable component.
Heading Component achievable
Heading components point the drone in a specific direction while maintaining position and altitude. The flight controller will yaw the drone as quickly as possible during execution, meaning you should probably wait to perform data capture until the heading is achieved. The heading component type was designed for use-cases like 360 photos. For example, you can use command components to adjust the gimbal angle and camera settings immediately when the drone starts rotating, and then another command component to capture a still image when the heading is achieved.
Destination Component achievable
Destination components fly the drone to a specific location, Point A to Point B. The flight controller can only perform horizontal motion when the drone is within a specified range around the target altitude, meaning the drone will ascend or descend vertically first if outside the range. The destination component was designed for use-cases such as multiple, single point data captures. For example, when combined with heading components, you could perform multiple 360 photos in a single mission.
Orbit Component approachable
Orbit components fly the drone in a circle around a point of interest. The circumference can be defined as any number of degrees, allowing for full circles, semi-circles, and multiple rotations. The drone heading will automatically face the center of the orbit, so we recommending flying a verification mission before flying any plan with an orbit on drones without side-facing collision sensors.
Path Component approachable
Path components fly the drone along a path defined by a series of waypoints. Use path components over destination components when you need full control over the flight behavior between two points. Consider using multiple smaller path components over one large path component as each independent path can be moved, rotated, and resized. If you create a path that results in a drone heading that is not in the direction of flight, we recommend flying a verification mission if using a drone without side-facing collision sensors.
Map Component approachable
Map components fly the drone in a pattern designed to capture data for orthomosaics or 3D point-clouds. Map components can also be used for other applications such as search and rescue by manually adjusting the data capture and gimbal angle settings.
Organization is the key to managing complexity in large mission plans. Dronelink includes the list component type as the basic building-block for organization.
List components group other components into logical collections that should be executed sequentially. The components in a list component can also be lists, which enables the possibility to create hierarchies of components, known as component trees.