Windows Installation Instructions

There are a number of ways you can set up a Windows development toolchain for PX4. These allow you to build for NuttX/Pixhawk and jMAVSim simulator targets.

The Windows toolchains are not officially supported (and we discourage their use). They are unbearably slow during Firmware compilation and do not support new boards like Snapdragon Flight. They also cannot run the standard robotics software packages many developers use to prototype computer vision and navigation.

Before starting to develop on Windows, consider installing a dual-boot environment with Ubuntu.

Native Toolchain

Download and install these on your system:

Bash on Windows (NEW!)

Windows users can alternatively install a slightly modified Ubuntu Linux PX4 development environment within Bash on Windows, and use it to:

  • Build firmware for NuttX/Pixhawk targets.
  • Run the PX4 JMAVSim simulation (using a Windows-hosted X-Windows app to display the UI)

Setup Environment

The easiest way to setup the environment is to use the windows_bash_nuttx.sh script (details for script are given below).

To setup the development environment:

  1. Install Bash on Windows.
  2. Open the bash shell.
  3. Download the windows_bash_nuttx.sh:
    wget https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/windows_bash_nuttx.sh
    
  4. Run the script using the command below (acknowledging any prompts as required):
    source windows_bash_nuttx.sh
    

Build Firmware

To build the firmware (i.e. for px4fmu-v4):

  1. Enter the following commands in the bash shell:

    cd ~/src/Firmware
    make px4fmu-v4_default
    

    On successful completion you'll find the firmware here: Firmware/build/px4fmu-v4_default/px4fmu-v4_default.px4

    The make commands to build firmware for other boards can be found in Building the Code

  2. You can flash the custom firmware on Windows using QGroundControl or Mission Planner (it is not possible to directly flash the firmware from within the bash shell using the upload command).

Simulation (JMAVSim)

Bash on Windows does not include support for UI libraries. In order to display the jMAVSim UI you will first need to install an X-Window application like XMing into Windows.

To run JMAVSim:

  1. Install and start XMing on Windows.
  2. Enter the following command in the bash shell:
    export DISPLAY=:0
    

    Add this line to the Ubuntu .bashrc file if you don't want to enter it every session.

  3. Start PX4 and jMAVSim in the bash shell:

    make posix jmavsim
    

    The JMAVSim UI is then displayed in XMing as shown below:

    jMAVSimOnWindows

Gazebo can similarly be run within Ubuntu Bash for Windows, but too slow to be useful. To try this, follow the ROS kinetic install guide and run Gazebo in the Bash shell as shown:

  export DISPLAY=:0
  export GAZEBO_IP=127.0.0.1
  make posix gazebo

Build Script Details

The windows_bash_nuttx.sh build script modifies the Ubuntu build instructions to remove Ubuntu-specific and UI-dependent components, including the Qt Creator IDE and the simulators.

In addition, it uses a 64 bit arm-none-eabi compiler since BashOnWindows doesn't run 32 bit ELF programs (and the default compiler from https://launchpad.net/gcc-arm-embedded is 32 bit).

To add this compiler to your environment manually:

  1. Download the compiler:
    wget https://github.com/SolinGuo/arm-none-eabi-bash-on-win10-/raw/master/gcc-arm-none-eabi-5_4-2017q2-20170512-linux.tar.bz2
    
  2. Unpack it using this command line in the Bash On Windows console:
    tar -xvf gcc-arm-none-eabi-5_4-2017q2-20170512-linux.tar.bz2
    
    This will unpack the arm gcc cross-compiler to:
    gcc-arm-none-eabi-5_4-2017q2/bin
    
  3. Add the to the environment (add the line to your bash profile to make the change permanent)
    export PATH=$HOME/gcc-arm-none-eabi-5_4-2017q2/bin:\$PATH
    

Virtual Machine-Hosted Toolchain

Windows developers can also run the PX4 toolchain in a virtual machine. The installation and setup of PX4 within the VM is exactly the same as on a native Linux computer.

Allocate as many CPU and memory resources to the VM as possible.

While using a VM is a very easy way to set up and test an environment for building firmware, users should be aware:

  1. Firmware building will be slower than native building on Linux.
  2. The JMAVSim frame rate be much slower than on native Linux. In some cases the vehicle may crash due to issues related to insufficient VM resources.
  3. Gazebo and ROS can be installed, but are unusably slow.

Ground Control Software

Download and install the QGroundControl Daily Build.

QGroundControl

Editor / IDE

The development team often use:

Next Steps

Once you have finished setting up the environment, continue to the build instructions.

results matching ""

    No results matching ""