The Intel Aero Ready to Fly Drone® is a UAV development platform. Part of this is the Intel Aero Compute Board, running Linux on a Quad-core CPU. The other part is an STM32 microcontroller that is connected to it and that runs PX4 on NuttX. These are integrated in the same package on the Intel Aero Ready to Fly Drone, which also includes the vision accessory kit.
The main documentation on the official wiki explains how to setup, update and connect to the board, and how to do development on the Linux side. The instructions in this topic concentrate on updating the firmware on the microcontroller from a development tree.
It's important to update to the latest image available since some instructions change between releases. You can check the BIOS and distro version by connecting to the board and running the following command:
The instructions here are tested with the following version:
BIOS_VERSION = Aero-01.00.13 OS_VERSION = Poky Aero (Intel Aero Linux Distro) 1.5.1-dev (pyro)" AIRMAP_VERSION = 1.8 FPGA_VERSION = 0xc1
In order to install Ubuntu on Intel Aero, the following equipment is needed:
- Power supply (battery or network cable)
- Micro HDMI to HDMI cable to attach a monitor
- Micro USB3 to USB2 female adapter
- USB Hub to attach mouse and keyboard
Follow the linked instructions from Intel Aero wiki > Installing Ubuntu on Intel Aero:
As soon as the steps under Intel Aero Repository (above) are completed the Aero kernel is installed. From this point forwards, always boot using this kernel.
Follow the instructions to flash the BIOS, FPGA and Flight Controller. Open the MAVLink router config file: /etc/mavlink-router/main.conf
Include the laptop IP as a UDP Endpoint by adding the following lines to the configuration file.
The IP address must be set to the one of the laptop.
To find the IP address of the laptop, execute:
[UdpEndpoint wifi] Mode = Normal Address = 192.168.8.255
After all those steps are completed, the drone should automatically connect to QGroundControl running on the laptop.
Next install ROS, by following the instructions here.
Follow the steps to install the RealSense SDK listed on the aero wiki. When cloning the repository, the legacy branch needs to be used for the R200 model. If the D435 or D415 is used, the master branch needs to be cloned. All other steps are the same and the branches can be just switched back and forth if the camera is changed.
If the RealSense R200 is used, it can already be started over a ROS node using:
roslaunch realsense_camera r200_nodelet_default.launch
If any D400 series camera is used, follow the next step to install a different ROS wrapper.
ROS Wrapper for D400 series RealSense
Follow the instructions in Install Intel RealSense ROS from Sources to install a catkin workspace and clone the RealSense software.
Install the udev rules using:
sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/ sudo udevadm control --reload-rules && udevadm trigger
Now the RealSense can be started over a ROS node using:
roslaunch realsense2_camera rs_camera.launch
To run the PX4 obstacle avoidance software, install catkin first:
apt install python-catkin-tools
Create a catkin workspace and initialize it. Then clone the avoidance repository into the source space, or use a symbolic link to the source space. Build the package and start the ROS node using:
catkin build local_planner roslaunch local_planner local_planner_aero.launch
After setting up the PX4 development environment, follow these steps update the PX4 software:
- Do a full update of all software on the vehicle (https://github.com/intel-aero/meta-intel-aero/wiki/Upgrade-To-Latest-Software-Release)
- Grab the Firmware
- Compile with
Configure the target hostname
If your system resolves link local names you don't have to do anything and you can skip this step. You can test it by trying to ssh into
intel-aero.localafter connecting to it either via WiFi or USB:
If it doesn't work you can try giving the IP that will be used by the upload script:
# WiFi IP export AERO_HOSTNAME=192.168.8.1 # Ethernet-over-USB IP export AERO_HOSTNAME=192.168.7.2
make intel_aerofc-v1_default upload
- Make sure you are connected to the board with WiFi or USB Network
- ssh to the board and make sure MAVLink forwarding runs. By default it automatically starts when booting. It can be started manually with:
systemctl start mavlink-router
- Start QGroundControl and it should automatically connect.
- Instead of starting QGroundControl, you can open a NuttX shell with:
Connect the LeddarOne to the Aero telemetry port. The pinout for the LeddarOne and Aero telemetry port are as follows.
If you need to restore the telemetry port to MAVLink, set
The Lidar Lite is not recommended for use with Intel Aero Ready to Fly Drone® due to measurements spikes.
The following instructions are for a Lidar Lite V3 connected via I2C. The Intel® Aero Ready to Fly Drone has two ports with I2C: One labled COMPASS and the other TELEMETRY. The pinout for both of them can be found below. We recommend using the TELEMETRY port as it is not being used. If your TELEMETRY port is already occupied, a splitter can be used to share the I2C connection (works on any I2C port). Check the images below for the splitter setup.
In addition it is recommended to use a electrolytic capacitor for the Lidar Lite I2C connection to reduce spikes in the distance readings (see here on page 3).
The pinout for the Lidar Lite V3 and Aero telemetry port are as follows
|Pin||Aerofc TELEMETRY||Lidar Lite V3|
|pin||Aerofc COMPASS||Lidar Lite V3|
The Intel Aero Ready to Fly Drone® comes with a preinstalled optical flow binary on the compute board (Linux OS version 1.6 or higher), which enables it to stably fly based on optical flow velocity estimation. In order to use optical flow, a range sensor has to be installed first (see above).
To use the optical flow, run the following command in a console on the vehicle's compute board:
systemctl start aero-optical-flow
If you want to start the optical flow binary at boot, use
systemctl enable aero-optical-flow #use disable to undo
In addition, the following parameter values should be set in the flight controller.