Overview
Ardupilot is a firmware that is commonly run on consumer off the shelf (COTS) flight controllers that WARG uses. These devices use MAVLink as their primary telemetry communication protocol.
Software simulation of hardware components allows testing of software components without requiring hardware to be physically present. This is known as software in the loop (SITL).
The Ardupilot SITL Simulator lets WARG test software using MAVLink without requiring a physical drone.
Mission Planner
Download and install Mission Planner: https://ardupilot.org/planner/docs/mission-planner-installation.html
Windows only, not tested on Linux
Follow the steps here: https://ardupilot.org/planner/docs/mission-planner-simulation.html#setup-and-use
The Simulation tab is at the top of the screen
Select Multirotor in the bottom centre and Stable , unless you specifically need another vehicle
If you have already run Multirotor at least once, you can select the Skip Download button in the bottom left
The default start location is near Canberra Airport in Australia. If you want a different location, you can add
--home=[location]
to the Extra command line text box in the centre, where[location]
is:[latitude in decimal degrees],[longitude in decimal degrees],[ground ASL in metres],[initial heading in degrees]
Example E5:
--home=43.472978,-80.540103,336,0
Example WRESTRC:
--home=43.43405014107003,-80.57898027451816,373,0
Mission Planner automatically downloads and runs the SITL files, and then connects to the simulated vehicle.
Mission Planner is ready to be used as though it is connected to a real drone!
MAVLink forwarding
Mission Planner can be used as a bridge between the drone and another application:
Ctrl+f
Click on Mavlink
If you are running another application, proceed to step 3
If you are observing MAVLink telemetry messages only, proceed to step 4
Another application:
In the upper dropdown, select TCP Host - 14550
Check the Write access checkbox
Click Connect
Enter port 14550 , unless you are specifically using another port
Click OK
The application is ready to receive telemetry and send commands
Observation only:
In the upper dropdown, select UDP Client
Leave the Write access checkbox unchecked
Click Connect
Enter 127.0.0.1 , unless you are specifically using another IP
Enter port 14550 , unless you are specifically using another port
Click OK
Mission Planner is now broadcasting telemetry
You can also observe some of the MAVLink messages through Mavlink Inspector (ctrl+f).
If you want to switch or change connection settings, you have to restart Mission Planner and follow the instructions again.
Sources: https://ardupilot.org/planner/docs/common-mp-tools.html
Common errors
No connection could be made because the target machine actively refused it
Did you start forwarding at all, and with the correct settings?
dronekit.TimeoutError: wait_ready experienced a timeout after 30 seconds.
Restart Mission Planner and follow the instructions again. Do not forget to check Write access
Ardupilot only
Untested.
The Ardupilot website has extensive documentation on setting up the SITL found here (https://ardupilot.org/dev/docs/sitl-simulator-software-in-the-loop.html). You may be able to download the SITL binary without compiling yourself by downloading the firmware from here: https://firmware.ardupilot.org/Copter/latest/. And use https://github.com/ArduPilot/ardupilot/blob/master/Tools/autotest/sim_vehicle.py to run it. (although this is untested).
DroneKit
Untested.
DroneKit also has a SITL simulator.
TODO: Links