The best ground control station (GCS) for learning lets you fly a real autopilot before you own a drone, tells you in plain words why the vehicle did what it did, and lets you try again at no cost. UXDuck does this for ArduPilot. Open app.uxduck.com, choose Start flying, and a simulated VTOL is flying in your browser with nothing to install; Get started, Practice exercises, readiness checks, replays and your own AI agent over uxduck mcp take you from there.
Mission Planner and QGroundControl taught a generation of pilots and engineers to fly ArduPilot and PX4, and they are free, mature and maintained in the open. UXDuck works alongside them. This post is about the people who are new: students joining a university drone team, engineers moving into drones from software or robotics, and operators training for their first flights. They keep describing the same problems in public, and each section below cites one and shows what UXDuck does about it.
Ben, UXDuck's founder, on where this comes from: "I've travelled to train drone operators and worked closely with pilots and hardware engineers." In his launch notes he lists what UXDuck gives you first: "Simulations and tutorials to practice how a real drone would fly".
Ben puts it this way: "Software makes the difference between users getting comfortable operating a specific platform within one day of training versus 3 weeks. I saw first hand how the difficulty to run practice and simulation environments meant student pilots didn't use and didn't get the experience they needed before flying real drones."
What makes a ground control station good for learning?
Four things, in this order:
- Nothing between you and a first flight. No drone, no build environment, no virtual machine. A simulator that runs the real autopilot, so what you learn carries over.
- Guided practice. Short tasks with a clear goal, judged as you fly, so you know when you've got it and what to try next.
- Explanations at the moment you're stuck. When the vehicle refuses to arm or a number looks wrong, the reason in words, next to the thing it's about.
- A way to look back. Your own flights played back, with the modes, warnings and settings changes marked, so a mistake becomes a lesson instead of a mystery.
UXDuck adds a fifth: an AI agent, Claude or Codex, that can read the same vehicle you're looking at and explain it, while anything it wants to change waits for you.
Why is ArduPilot hard for beginners?
Because there is a lot of it, and it's built for people who already know it. Zarvan Movdawalla, who mentors undergraduate teams, wrote on ArduPilot Discourse: "I've often found ArduPilot a bit overwhelming for newcomers. There's just a LOT going on" (ArduPilot Discourse). He suggested a stripped-down version that "could potentially become a great student tool". Another newcomer's whole first post was a single question: "Where should I start?" (ArduPilot Discourse). A Copter user asked for a simple mode for the people who "just want to take off, enjoy a few flight modes, maybe tune just a bit, fly a couple auto-missions", without "having to read countless web pages" (ArduPilot Discourse).
How UXDuck handles it. UXDuck answers "where should I start?" in the sidebar. Get started sits above Fleet as a checklist, and its first item is a first flight with your simulated vehicle, split into steps that tick themselves once the vehicle has done them: send it somewhere, change its mode, bring it back. Each vehicle type has its own first flight. The multicopter's is "send it somewhere, stop it, bring it home and land", the rover's is "a first drive", and the submarine's is "a first dive: arm it, send it somewhere, hold its depth and bring it up". After that come a practice flight, flying by hand, another kind of vehicle, planning missions and connecting real hardware. The sidebar only shows the step to do now, and during your first flight the current step stays visible (Practice).
You don't have to learn ArduPilot's whole surface to fly. You learn it one step at a time, on a vehicle that can't break.
How do I practise flying a drone without crashing one?
ArduPilot's own tips for new pilots are written "for those with limited or no previous experience flying RC aircraft or multicopters", and they say: "Make sure to practice a lot". PX4's documentation calls simulation "a quick, easy, and most importantly, safe way" to test and "a good way to start flying with PX4 when you haven't yet got a vehicle to experiment with" (PX4 Guide). The advice is right. What beginners lack is something to practise.
How UXDuck handles it. Practice gives you short exercises on a simulated vehicle, judged as you fly (Practice). Open it from + in any tab bar, pick an exercise and press Start. The vehicle restarts where the exercise needs it, a hint appears if a step takes a while, and at the end you get one result, such as "Passed. Home with 31% left." Your best result is kept, so you can come back and beat it. The exercises build on each other:
- Read the panel: answer questions from Telemetry, such as how high it is and its mode.
- Bring it home: it starts 400 m out with a low battery; get it home.
- Mode tour: Loiter, Guided, Return to launch, then Land.
- Fly there: send it to three rings in turn with Go to.
- Land in the circle: land inside the ring.
- Plan the survey: plan a mission over a field, upload it and fly it in Auto.
- Timed delivery: reach the drop point, stay 20 s, and land at home within 4 minutes.
- Hold the box: by hand, keep it in the box for a minute in Loiter, then in Stabilize.
- Through the gates: by hand, fly through five gates in order.
- Parameter puzzle: it's too slow to reach the ring in time; find the parameter and fix it.
The VTOL and the plane have their own versions: Hold the box in QLOITER then QHOVER, and the gates 300 m out in FBWB.
Flying by hand works with a controller or your keyboard, picked under Fly with in the Cockpit's Controls subtab. A common beginner trap is a vehicle in a mode that flies itself, such as GUIDED, which barely answers the sticks. UXDuck notices: while a controller or the keyboard is flying, the Cockpit's status line and Controls say so in one line and offer the modes you can steer in, such as LOITER on a multicopter or QLOITER on the VTOL. Nothing changes the mode until you choose one (Practice, Controllers).
Outside an exercise, Pause (Shift+P) freezes a simulated vehicle where it is, so you can stop and think mid-flight. A real vehicle can't pause, and the Cockpit says what holds one in place instead (Telemetry, Cockpit and Messages). Exercises never run on a real vehicle.
Can I run an ArduPilot simulator without installing anything?
With most setups, no. ArduPilot's simulator, SITL, is "a build of the autopilot code using an ordinary C++ compiler" (ArduPilot Dev), and building it is where many newcomers stop. One wrote "I trying to start studying what are ardupilot and SITL" and, after two full installs on Windows with WSL2, reported "This time I haven't no single succeeded run" (ArduPilot Discourse). Another, after Cygwin and then WSL failed, asked: "Why isn't there a prebuild windows binary that you can just download and execute to install SITIL with all required dependencies on Windows?" (ArduPilot Discourse). A student team's setup guide for SITL with Gazebo starts with Ubuntu 20.04, Gazebo 11, ROS Noetic and MAVROS (ARIITK wiki). That stack is right for research. It's a lot to ask before someone's first takeoff.
How UXDuck handles it. UXDuck runs real ArduPilot in Chrome, Firefox or Safari on a computer (Try it in the browser). Choose Start flying at app.uxduck.com and a simulated VTOL starts in flight over Y Combinator's parking lot in Dogpatch, San Francisco. From the home page's Try link, the VTOL is climbing about 3 seconds after the page opens. Fleet › Simulated vehicle picks another type and starting place, from eight: multicopter, plane, jet, VTOL, rover, boat, submarine and blimp. You can run several at once, each in its own colour, which is how a team learns to fly together before it has one airframe.
When you outgrow the defaults, the same app runs your own build: start it from New simulation › Advanced › Your own build, after uxduck sim build turns your ArduPilot checkout into a simulator, and SITL, PX4 SITL or Gazebo can connect over MAVLink (Your own simulator).
Why won't my drone arm, and what does the message mean?
Pre-arm checks keep vehicles from taking off with something wrong, and they are the first wall most beginners hit. ArduPilot's pre-arm safety checks page explains that a pilot notices a failure "because he/she will be unable to arm the vehicle and the notification LED, if available, will be flashing yellow", and that "the first cause of the Pre-Arm Check failure will be displayed in red on the HUD window". The page lists dozens of messages. Even experienced builders get stuck on one: "It tossed a pre arm message at me... But this time I had no clue it said Pre Arm Leaning. huh. the copter was level, calibration was done. I find no documentation on it" (ArduPilot Discourse).
How UXDuck handles it. UXDuck puts the reason where you're looking. The Cockpit keeps a compact readiness summary beside the arming state, with the full checklist, warnings and fixes in Checks. When a vehicle refuses to arm, the Cockpit says why, using what the vehicle itself said around then, such as PreArm: GPS not healthy (Confirmations). The Messages tab keeps everything the vehicle says in order, filtered by severity or searched (Telemetry, Cockpit and Messages). A simulated mission that can't start explains why, including terrain still being prepared, and offers another attempt without starting it for you.
The same idea applies to every number on screen. The ⓘ beside a value in Telemetry, a setting or a simulation field says what it is, its unit and where it comes from (Ask about a value). A dash means the evidence is missing, not that the value is zero, and UXDuck says so instead of showing a misleading number (Troubleshooting). Learning which altitude you're reading (above home, sea level or terrain) is half of learning to fly, so each altitude tile names its frame.
How do I learn what ArduPilot's parameters do?
Slowly, by design. Asked how many parameters Copter has, ArduPilot developer Amilcar Lucas answered "About 1200, but only 300 are required to be configured for proper operation" (ArduPilot Discourse). The Copter user who asked for a simpler mode wanted it for "the 95% of users not who are not interested in parameter tweaking for days" (ArduPilot Discourse).
How UXDuck handles it. The Parameters tab shows each value with its description from the matching Plane, Copter, Rover or Sub firmware, groups parameters by name and marks every value changed from its default. Related changes are staged and written together, and the vehicle's History records each one with who made it. On a simulated vehicle, nothing you change can hurt anyone, so the safest way to learn what a parameter does is to change it in a simulation and watch. The Parameter puzzle exercise turns that into a task: the vehicle is too slow to reach the ring in time, and you have to find out why and fix it.
How do I learn from my own flights?
Logs hold the answer to most "what just happened?" questions, but reading them is its own skill. ArduPilot's guide to diagnosing problems using logs teaches it by graphing message fields, for example comparing "the ATT message's DesRoll vs Roll" to spot a mechanical failure. That's the right method for an engineer, and a hard first step for a learner.
How UXDuck handles it. A replay plays a flight back: the vehicle flies its path on both maps, every tab shows it as it was, and its camera's recordings play at the same time (Replay a flight). The bar at the foot marks arming, the time in the air, the modes, warnings, the settings changed and where there is video, so you can jump to the moment it went wrong and step through it a frame at a time. The Parameters tab follows the replay's time, so you see the settings the vehicle actually had. Flights you fly in the browser stay in the Logbook on later visits, so you can replay your own practice flights with nothing installed. Telemetry logs from Mission Planner, QGroundControl and MAVProxy open too, and so do DataFlash .bin logs from the vehicle.
Can an AI agent help me learn ArduPilot?
Yes, if it can see the vehicle. A general chatbot can explain what a pre-arm message usually means. It can't see your vehicle's messages, parameters or telemetry, so it guesses. UXDuck's MCP server, uxduck mcp, gives Claude Code, Claude Desktop, Codex and Cursor the same context you have (Use with AI agents).
To learn with an agent:
- Install UXDuck and start a simulation from New simulation. MCP connects to the installed app, which is separate from a simulation running only in the browser.
- Add it to Claude Code with
claude mcp add uxduck -- uxduck mcp, or to Codex withcodex mcp add uxduck -- uxduck mcp. - Ask about what's in front of you. The docs suggest: "Why won't this vehicle arm? Read its latest pre-arm messages and relevant parameters; explain the evidence before proposing a change."
The agent reads parameters with their firmware descriptions (param_get and describedBy), the vehicle's messages and history, and up to five minutes of telemetry, so it can answer "why did it drift?" with the numbers rather than a guess. Reading needs no approval. Commands and changes wait for you in UXDuck, with Allow once, Allow for this connection, Always allow and Deny, and an unanswered request is denied after 60 seconds. So the agent can explain and suggest, and you stay the pilot. In Practice, only commands you send count, so an agent can coach you through an exercise but can't pass it for you.
Is UXDuck useful for university drone teams?
Student competitions are putting more weight on simulation. Ahead of the 2025 IMechE UAS Challenge, its project manager said: "There's a lot more emphasis on the design and testing, specifically the simulation elements" (IMechE).
UXDuck is free for non-commercial academic use. A new team member can fly in the browser on day one, on the same eight vehicle types the team might build. Several simulations run at once, a plan can be simulated across vehicles, speeds and winds and the runs replayed together, and Plan the survey teaches the mission workflow a competition needs. Then the same app connects the team's real vehicle over USB, a telemetry radio, UDP or TCP (Connect a vehicle), and can forward MAVLink to Mission Planner or QGroundControl if the team already uses them.
Does UXDuck replace Mission Planner or QGroundControl?
It doesn't have to. UXDuck works alongside your current GCS: a Forward to a program link sends the same MAVLink to Mission Planner or QGroundControl while UXDuck stays connected (Connect a vehicle), and UXDuck opens their telemetry logs. If your course or team uses one of them, learning in UXDuck still carries over, because the autopilot, its modes, its pre-arm checks and its parameters are the same ArduPilot.
Learning problems and where UXDuck covers them
| Problem | What UXDuck does | Guide |
|---|---|---|
| Not knowing where to start | Get started checklist with a first flight for each vehicle type | Practice |
| Nothing to practise on | Ten exercises judged as you fly, hints, best results kept, Pause | Practice |
| Installing a simulator | Real ArduPilot in the browser, eight vehicle types, several at once | Try it in the browser |
| Pre-arm messages | Readiness summary and Checks, refusal reasons in the Cockpit, Messages | Telemetry, Cockpit and Messages |
| Unfamiliar numbers | ⓘ on every value with its unit and source, named altitude frames | Ask about a value |
| Too many parameters | Firmware-matched descriptions, changed-from-default marks, Parameter puzzle | Parameters |
| Reading logs | Replays with modes, warnings and settings changes marked | Replay a flight |
| Questions with no one to ask | Claude or Codex reading the vehicle over uxduck mcp, with your approval for changes | Use with AI agents |
Try it
- Open app.uxduck.com on a computer and choose Start flying.
- Follow Get started in the sidebar through your first flight.
- Open Practice from + and try Mode tour, then Bring it home.
- To learn with Claude or Codex, download UXDuck, start a simulation, and run
claude mcp add uxduck -- uxduck mcporcodex mcp add uxduck -- uxduck mcp.
Frequently asked questions
Do I need a drone to learn ArduPilot with UXDuck?
No. UXDuck runs real ArduPilot in Chrome, Firefox or Safari on a computer with nothing to install. Open app.uxduck.com and choose Start flying, and a simulated VTOL starts in flight. When you have a vehicle, the same app connects to it.
Is UXDuck free for students?
Yes. UXDuck is free for personal, non-commercial use and non-commercial academic use. For business or government use, contact support@uxduck.com for pricing.
Which vehicles can I learn to fly in the simulator?
Eight types: multicopter, plane, jet, VTOL, rover, boat, submarine and blimp. Each has its own Get started first flight, and the VTOL and the plane have their own Practice exercises.
What practice exercises does UXDuck have?
Read the panel, Bring it home, Mode tour, Fly there, Land in the circle, Plan the survey, Timed delivery, Hold the box, Through the gates and Parameter puzzle. Each is judged as you fly, gives one result at the end, and keeps your best.
Can I fly the simulator with a keyboard or a game controller?
Yes. Pick the keyboard or a controller under Fly with in the Cockpit's Controls subtab. Radio transmitters such as a TBS Tango 2 or RadioMaster GX12 in USB joystick mode, and Xbox gamepads, work too.
Why won't my simulated drone arm?
The Cockpit says why, using the vehicle's own pre-arm messages, and Checks lists the full checklist with warnings and fixes. The Messages tab keeps everything the vehicle said, in order.
Can Claude or Codex help me learn to fly?
Yes. Install UXDuck, start a simulation, and connect Claude Code, Codex, Claude Desktop or Cursor with uxduck mcp. The agent reads the vehicle's telemetry, messages and parameters with their descriptions to explain what's happening. Any command or change it asks for waits for your approval.
Does UXDuck work with PX4?
UXDuck supports ArduPilot today, and PX4 support is planned. A PX4 SITL can already send its MAVLink to UXDuck, but Practice runs on UXDuck's ArduPilot simulations.
