Setting Up SITL On Windows - Dev Documentation
Setting Up SITL On Windows - Dev Documentation
This article shows how to build and run SITL (Software In The Loop) natively on Windows using
Cygwin. These commands were tested on Windows 10 with MAVProxy and Copter-4.0.0-dev.
/
MENU
Installation steps
Install Cygwin as described here
Download MAVProxy for Windows (latest build), install the executable including accepting the
license and all default installation options
Tip
Make sure that Cygwin is in your PATH. As for troubleshooting, you may add a Windows
environment variable called CYGWIN_HOME in your path pointing to your c:cygwinbin (if you
installed at “C:”). You may check it by doing a Right-click on “My Computer” -> Properties ->
/
MENU Advanced -> Environment Variables.
Running SITL
1. Open a Cygwin64 terminal from the start menu
2. Navigate to one of the vehicle directories (in this case Copter) and call sim_vehicle.py to start
SITL. If you get a windows security alert for the the rewall, allow the connection.
cd ~/ardupilot/ArduCopter
../Tools/autotest/sim_vehicle.py --map --console
Tip
/
MENU It is useful to arrange the windows as shown above, so you can observe the status and send
commands at the same time.
4. Send commands to SITL from the command prompt and observe the results on the map.
mode guided
arm throttle
takeoff 40
Note
Takeoff must start within 15 seconds of arming, or the motors will disarm.
rc 3 1500
mode circle
param set circle_radius 2000
mode rtl
/
MENU This is a very basic example. For links to more information on what you can do with SITL and
MAVProxy see the section: Next Steps.
Tip
Use batch les to simplify the running of SITL down to a single double-click. See here for some
examples.
FlightGear Flight Simulator can also be used as a viewer to display a 3D simulation of the vehicle and
its surroundings. This provides a much better visualization than the 2D maps and HUD ight displays
provided by MAVProxy and Mission Planner.
/
MENU
SITL outputs FlightGear compatible state information on UDP port 5503. We highly recommend you
start FlightGear before starting SITL (although this is not a requirement, it has been found to
improve stability in some systems).
Warning
At time
of writing version 3.4.0 is required on Windows.
/
MENU
2. Open a new command prompt and run the appropriate batch le for your vehicle in
/ardupilot/Tools/autotest/: fg_plane_view.bat (Plane) and fg_quad_view.bat (Copter).
sim_vehicle.py -L KSFO
Note
Tip
You can now takeoff and y the vehicle as normal for Copter or Plane, observing the vehicle
movement including pitch, yaw and roll.
GUIDED> output
GUIDED> 2 outputs
0: 127.0.0.1:14550
1: 127.0.0.1:14551
This tells us that we can connect Mission Planner to either UDP port 14550 or 14551, as shown on
the dialog below.
Tip
We could connect APM Planner 2 to the remaining port. If we needed a third port, we could add it
as shown:
/
MENU GUIDED> output add 127.0.0.1:14553
Mission Planner can then be used to control the simulated vehicle in exactly the same way as though
it were a real vehicle. We can reproduce the previous “takeoff-circle-land” example as shown below:
Open the FLIGHT DATA screen and select the Actions tab on the bottom left. This is where
we can change the mode and set commands.
Select Guided in the Mode selection list and then press the Set Mode button.
Select the Arm/Disarm button
Right-click on the map and select Takeoff. Then enter the desired takeoff altitude
/
MENU
Note
Takeoff must start within 15 seconds of arming, or the motors will disarm.
2. Change to CIRCLE mode on the Action tab and watch the copter circle on the map.
3. You can change the circle radius in the CONFIG/TUNING screen. Select Full Parameters List,
then the Find button and search for CIRCLE_MODE . When you’ve changed the value press the
Write Params button to save them to the vehicle.
4. When you’re ready to land you can set the mode to RTL.
Run the le in the Cygwin Terminal, specifying a home position and vehicle model as shown below:
/
MENU hamis_000@XPS12ultra ~/ardupilot/ArduCopter
$ ./ArduCopter.elf --home -35,149,584,270 --model quad
Started model quad at -35,149,584,270 at speed 1.0
Starting sketch 'ArduCopter'
Starting SITL input
bind port 5760 for 0
Serial port 0 on TCP port 5760
Waiting for connection ....
The command output shows that you can connect to SITL using TCP/IP at port 5760.
In Mission Planner we rst change the link type to TCP and then press the Connect button. Click
through the remote host and remote Port prompts as these default to the correct values.
/
MENU Mission Planner: Connecting toSITL using TCP
Mission Planner will then connect and can be used just as before.
Tip
ArduCopter.elf has other startup options, which you can use using the -h command line
parameter:
./ArduCopter.elf -h
Updating ArduPilot
See advice on this wiki page regarding how to “Rebase” on ArduPilot’s master branch.
Updating MAVProxy
Warning
The MAVProxy 1.4.19 *installer does not properly remove all parts of preceding installations.
Before installing a new version you must rst delete the old directory: C*:\Program Files
(x86)\MAVProxy\**.
Download and Install MAVProxy for Windows (this link always points to the latest version!)
Next steps
SITL and MAVProxy can do a whole lot more than shown here, including manually guiding the
vehicle, and creating and running missions. To nd out more:
/
MENU Read the MAVProxy documentation.
See Using SITL for ArduPilot Testing for guidance on ying and testing with SITL.
Troubleshooting
Some users have reported build errors related to Windows not setting paths correctly. For more
information see this issue.