How to Build an RTK Mapping Drone: Parts List & Step-by-Step Guide
Build an RTK mapping quadcopter on a 650 mm frame: a matched 6S parts list, RTK and PPK positioning, camera triggering with hot-shoe feedback, ArduPilot setup, and the GSD, overlap and flight-time maths.
- Frame: a 650 mm X quadcopter with camera rails. On this wheelbase, 16-inch propellers are the practical maximum.
- Power: 6S with 5008-size motors at about 400KV, 16 × 5.4 inch propellers and ESCs rated for 40 A or more continuous. At about 4.4 kg take-off weight that gives roughly 3.3:1 thrust-to-weight.
- Positioning: a u-blox ZED-F9P multi-band rover for navigation, plus a PPK module that records raw observations and the exact moment of each exposure.
- Camera: a 61 MP full-frame mapping camera. With a 35 mm lens it resolves about 1.1 cm per pixel from 100 m.
- Flight time: about 29 minutes of hover on a 6S 12,000 mAh pack in bench-data maths; plan survey flights of 18–20 minutes to keep a landing reserve.
An RTK mapping drone is a camera platform first and a quadcopter second. What makes the maps accurate is the chain from the camera's exposure to a centimetre-level position, so this build pairs a proven 650 mm airframe and 6S power system with a multi-band RTK receiver for navigation and a second module that logs raw satellite data and the camera's hot-shoe signal for post-processing (PPK).
RTK mapping drone parts list
The table lists every part the build needs, what to check before buying, and matching products. The example uses a fixed nadir camera mount, which keeps the antenna-to-camera offset constant.
| Part | What to look for | Matching products |
|---|---|---|
| Frame× 1Drone frames → | 650 mm wheelbase X frame, 16–25 mm motor mount pattern, carbon arms, rail system for a camera mount, battery plate for a 6S 10,000–12,000 mAh pack | |
| Motors× 4Drone motors → | 5008-size, about 400KV for 6S, rated for 15–17 inch propellers, 35 A peak | |
| ESCs× 4Drone ESCs → | 6S input, 40 A or more continuous, no BEC needed | |
| Propellers× 2 pairs + sparesDrone propellers → | 16 × 5.4 inch carbon, CW and CCW pairs, hub that matches the motor | |
| Flight batteries× 2+Drone batteries → | 6S LiPo, 10,000–12,000 mAh, 30C, connector that matches the power module lead | |
| Flight controller× 1Flight controllers → | ArduPilot support, STM32H7 processor, redundant IMUs, CAN ports and spare UARTs for GNSS, telemetry and receiver | |
| Power module× 1Power modules & PDBs → | 6S input, voltage and current sensing of the type your controller reads (analog or I2C) | |
| RTK rover (navigation)× 1Drone GPS → | u-blox ZED-F9P multi-band receiver with compass, UART or DroneCAN connection | |
| PPK and geotag module× 1Drone GPS → | Raw-data logging to card, hot-shoe input, shutter input and output | |
| Base station× 1Drone GPS → | F9P receiver that can run as a base, or an NTRIP correction account within about 100 km | |
| Mapping camera× 1Drone cameras → | Full-frame or APS-C sensor, fixed prime lens, remote trigger input and flash-sync (hot-shoe) output, supply voltage you can provide | |
| Camera power regulator× 1Power modules & PDBs → | 12 V output from the 6S battery for cameras that need 10–18 V | |
| Telemetry radio× 1 setTelemetry radios → | MAVLink radio pair in a band legal in your country (433 or 900 MHz), able to forward RTK corrections | |
| Radio transmitter× 1 | Built-in ExpressLRS, EdgeTX, switches for flight modes and return to launch | |
| Receiver× 1Datalinks, video & radio → | ExpressLRS on the same band as the radio, CRSF output to a UART, 5 V supply | |
| Charger× 1Battery chargers → | 6S LiPo balance charging at 10 A or more per channel, storage mode | |
| Camera mount× 1 | Vibration-damped nadir plate that clamps to 10 mm rails and holds the camera without play | — |
| Small parts | Battery leads with matching connectors, hot-shoe and shutter cables between camera and PPK module, M3 hardware, medium-strength threadlocker, heat shrink | — |
Send this list as it is and get one price for every part.
Quote the full parts list →Tools you need
- Temperature-controlled soldering iron, solder and flux, heat shrink and a heat gun.
- Digital multimeter and a current-limited bench supply or smoke stopper for the first power-up.
- Hex drivers, a propeller wrench, a steel rule and calipers for measuring the antenna-to-camera offset.
- A laptop with Mission Planner or QGroundControl and the configuration tool for your PPK module.
Step-by-step assembly
1. Decide the map before the airframe
Start from the ground sampling distance (GSD) your client needs. GSD depends on flight height, sensor width, image width and focal length, so the camera and lens choice sets everything else: flight height, line spacing and how long each flight lasts. The worked example later in this guide shows the numbers for a 61 MP full-frame camera.
Then choose the positioning method. RTK needs corrections streaming to the aircraft during the flight; PPK records raw data on the aircraft and on a static base and computes positions afterwards. This build carries both, so a dropped correction link does not cost you the flight.
2. Check propeller clearance on paper
On an X quadcopter, adjacent motors sit at the wheelbase divided by 1.414. For a 650 mm frame that is about 460 mm, which leaves about 53 mm between 16-inch propeller tips, about 28 mm with 17-inch propellers and almost nothing with 18-inch propellers. Stay at 16 inches on this frame; motors that need 17–18 inch propellers belong on an 800 mm class frame.
3. Assemble the frame and landing gear
Build the X650 frame with its folding arm mounts and landing gear, and leave the top plate open for wiring. Check that the camera, with lens and cables fitted, clears the ground with the landing gear on soft ground, and that the battery can be swapped without touching the camera or the GNSS mast.
4. Mount motors and ESCs
Fit the motors with the screws supplied for the frame's 16–25 mm mount pattern and check that no screw touches the windings. Mount one ESC per arm where the airflow reaches it, run the motor leads along the arms and protect them where they pass carbon edges. Set the rotation direction for each position from the ArduPilot quad-X diagram before fitting propellers.
5. Wire the power system
Connect the ESCs to the power distribution board and the power module between the battery lead and the board. Match the power module to the controller: Holybro specifies the PM07 for the Pixhawk 6C, which reads analog voltage and current, while the PM02D reports over I2C and does not work with the 6C. Make sure the battery connector matches the lead: the Tattu G-Tech packs in the table use EC5, so an XT60 power module needs an adapter lead rated for the current.
Check polarity and resistance between the positive and negative rails with the multimeter, then power up through a current limiter. Confirm the controller boots and reports a battery voltage close to the multimeter reading.
6. Install the flight controller, receiver and telemetry
Mount the controller at the centre of the frame with its arrow forward. Connect the ExpressLRS receiver to a UART and set that port's SERIALx_PROTOCOL to 23 (CRSF) and RSSI_TYPE to 3. Connect the telemetry radio to TELEM1 and keep its antenna away from the GNSS mast and the camera cables.
7. Mount the RTK rover and the PPK module
Put the ZED-F9P rover on a mast above the propellers, with a clear view of the sky and away from the power wiring. Connect it to the GPS port (GPS1_TYPE = 1 for serial) or to CAN (GPS1_TYPE = 9 for DroneCAN). Mount the PPK module and its antenna where the antenna stays fixed relative to the camera; any later movement changes the offset you are about to measure.
8. Mount the camera and wire the trigger and feedback
Fit the camera to a damped nadir plate on the frame rails, lens pointing straight down, with no free play. Power it from a 12 V regulator if it needs 10–18 V; a 6S battery runs from about 25.2 V full to about 18 V empty, which is outside that range.
Need a quote for this? Tell us what you need →
The trigger is a PWM output from the flight controller. In ArduPilot set SERVOx_FUNCTION = 10 on the chosen output, CAM1_TYPE = 1 (Servo) and reboot, then set CAM1_SERVO_ON and CAM1_SERVO_OFF to the PWM values your camera cable expects and CAM1_DURATION to the pulse length, for example 0.1 seconds. On a controller with separate MAIN and AUX outputs, use AUX OUT 1–6.
The hot-shoe signal is the important half. ArduPilot logs a TRIG message when it sends a trigger and a CAM message when the camera actually fires, if the hot-shoe is wired to a GPIO pin: set that output to SERVOx_FUNCTION = -1, CAM1_FEEDBAK_PIN to its pin number and CAM1_FEEDBAK_POL to 0 or 1 depending on whether the signal goes low or high. If you wire the hot-shoe to the PPK module instead, the module writes a position record for every photo alongside its raw data, which is the file used for PPK geotagging. Check the hot-shoe voltage with a multimeter before connecting it to any input.
9. Measure the antenna-to-camera offset
With a fixed mount, measure the distances from the RTK antenna's reference point to the centre of the camera lens along the aircraft's forward, right and down axes, and record which axis convention your processing software uses. Repeat the measurement after the first flights to make sure nothing has shifted.
ArduPilot setup and RTK corrections
Load ArduCopter, select the quad-X frame and run the accelerometer, compass and radio calibrations. With propellers off, use the motor test page to confirm order and direction. Set the flight modes (Stabilize, Loiter, Auto and RTL at minimum) and the radio and battery failsafes before the first flight.
For corrections there are three common routes. A base receiver plugged into the ground station can survey itself in and the ground station forwards its RTCM data to the aircraft over telemetry; Mission Planner's survey-in typically uses a 2 m accuracy target, and u-blox recommends 5 m or better. An NTRIP service can be forwarded the same way: a reference station within about 100 km usually works, and accuracy degrades by roughly 1–1.5 cm for every 10 km of distance. A third option sends the base's corrections over its own radio straight into the rover's second UART. The ground station shows RTK Float while it uses corrections and RTK Fixed when it reaches full precision.
For PPK, set the base to record static observations for the whole flight. The C-RTK 2 records raw data at up to 25 Hz alongside RTK, and its position log is then processed against the base observations, which can be saved in RINEX format.
Mapping maths: GSD, overlap and trigger distance
GSD is flight height × sensor width ÷ (focal length × image width). The JOUAV CA-103 has a 35.7 mm wide sensor and 9,504 pixel wide images; with a 35 mm lens at 100 m that gives 100 × 35.7 ÷ (35 × 9,504) = 0.0107 m, or about 1.07 cm per pixel.
Each photo then covers about 102 m across the flight line (9,504 pixels) and 68 m along it (6,336 pixels) when the long side of the sensor is mounted across track. For most terrain, plan at least 75% forward overlap and 60% side overlap. That gives a trigger distance of 68 × 0.25 = 17 m and a line spacing of 102 × 0.4 = 41 m. Forests, flat crops and snow need 80–85% overlap or more.
At 8 m/s, a 17 m trigger distance means a photo every 2.1 seconds. Set CAM1_TRIGG_DIST to 17 and CAM1_INTRVAL_MIN to a value longer than the fastest interval your camera can sustain, then run a ground test: fire 200 photos at that interval and compare the number of images with the number of CAM events.
Timing matters as much as GSD. At 8 m/s, an unmeasured 50 ms delay between the trigger and the exposure moves the photo position by 0.4 m, which is why the hot-shoe event, not the trigger command, should be used to tag each image.
Weight, thrust and flight time
Holybro rates the complete X650 kit (frame, motors, ESCs, controller, GPS and telemetry) at 2,000 g without battery and gives a take-off weight limit of 6,300 g at 70% throttle. Using 2,000 g as the airframe baseline and adding a 1,532 g 12,000 mAh pack, the 243 g camera body, about 200 g for a lens, 117 g for the rover, 39 g for the PPK module and about 250 g for the mount and cables gives about 4.4 kg.
T-MOTOR's bench data for the MN5008 KV400 with a P16×5.4 propeller shows 3,591 g of thrust at full throttle, so four motors give about 14.4 kg, or 3.3:1 thrust-to-weight. Hovering at 4.4 kg needs about 1.1 kg per motor, which the same data puts at about 47% throttle and 4.9 A per motor, or about 20 A in total.
Using 80% of a 12,000 mAh pack (9.6 Ah) at 20 A gives about 29 minutes of hover. That figure comes from bench data at a steady 23 V; battery sag, wind and forward flight all reduce it, so plan survey flights of 18–20 minutes and check the real consumption in your logs. At 41 m line spacing and 8 m/s, 18 minutes of flight lines covers up to about 0.35 km² before turns and edge overlap.
Common mistakes
Using the trigger log instead of the exposure log. TRIG messages record when the controller asked for a photo, not when the camera took it. Tag images from the hot-shoe events and check that their count matches the photo count before processing.
Fitting the biggest propellers that will turn. On a 650 mm frame, 18-inch propellers leave almost no tip clearance and 17-inch propellers very little. Match the propeller to the frame first and the motor to the propeller.
Running the camera straight off the flight battery. A camera that needs 10–18 V will see more than 25 V from a full 6S pack. Use a regulator.
Treating RTK Fixed as a finished survey. A fixed solution says the antenna position is good; it says nothing about focus, overlap or a lever-arm offset that was never measured. Check all of them on the first dataset before scaling up.
Moving the antenna after measuring the offset. Any change to the GNSS mast or camera plate makes the recorded offset wrong. Lock both with threadlocker and re-measure after a hard landing.
For a complete kit with the camera and positioning chain checked as one system, send the parts list to our team.
Frequently asked questions
What is the difference between RTK and PPK for drone mapping?
RTK corrects the drone's position in real time, so it needs a correction stream from a base or NTRIP service throughout the flight. PPK records raw satellite data on the drone and on a static base and computes the positions afterwards, so a dropped radio link does not spoil the flight. Many mapping builds carry both: RTK for navigation and PPK for the photo positions. Compare RTK and PPK modules.
Do I need ground control points with an RTK mapping drone?
RTK or PPK reduces the number of ground control points you need, but keep a few checkpoints on every job. They are the only independent proof that the camera offset, timing and coordinate system are all correct, and clients usually ask for that evidence.
What camera is best for a DIY mapping drone?
Choose a camera with a large sensor, a fixed prime lens, a remote trigger input and a flash-sync (hot-shoe) output. A 61 MP full-frame camera with a 35 mm lens gives about 1.1 cm per pixel from 100 m. Check the weight with the lens fitted and the supply voltage: some mapping cameras need 10–18 V, which a 6S battery exceeds when full. See mapping cameras.
How accurate is a ZED-F9P RTK module?
Module makers rate ZED-F9P receivers at about 1 cm plus 1 ppm of the distance to the base horizontally in RTK mode; one module in this guide quotes 2 cm plus 1 ppm vertically. That is the antenna position only. Map accuracy also depends on the camera offset, exposure timing and processing, so check it against ground checkpoints. Compare ZED-F9P modules.
How long can a 650 mm mapping quadcopter fly?
Holybro quotes 30 minutes of hover for its X650 kit on a 6S 10,000 mAh battery with no payload. With a camera, RTK hardware and a 12,000 mAh pack at about 4.4 kg, bench data for the motors in this guide works out to about 29 minutes of hover. Plan survey flights of 18–20 minutes so you always land with a reserve. Compare 6S drone batteries.
Why do my photo count and camera event count not match?
Usually the camera skipped a trigger because the interval was shorter than it could handle, or the card could not keep up. Set the minimum trigger interval above the camera's real limit, test a few hundred shots on the ground at the planned interval, and do not geotag a dataset until the counts match.
Can I use a gimbal on a mapping drone?
You can, but a gimbal changes the distance between the RTK antenna and the camera as it moves, so a single measured offset is no longer exact. For centimetre-level work most builders use a fixed, vibration-damped nadir mount and accept a slightly tilted image in wind. Compare drone gimbals.
How far can the RTK base station be from the drone?
With an NTRIP service, a reference station within about 100 km usually works, but accuracy drops by roughly 1–1.5 cm for every 10 km. For the best results, set up your own base close to the survey area and let it survey in before the flight. See RTK base stations.