Overview

These instructions will get a multi-rotor hovering over AR markers. The webcam (pointing downwards) will detect the AR markers using the ROS package ar_track_alvar. This publishes a topic with the position and pose estimate of the camera relative to the AR marker. The mavlink_ros node then subscribes to this topic and converts it to the vicon position esitmate mavlink message and sends it to the Pixhawk via the UART. The PX4 autopilot firmware will then feed the position estimate into the position controller to keep the multi-rotor positioned above the marker.

Hardware Setup

Connect the eMMC card to its adapter, insert the microSD card into a card reader (e.g. via a microSD to SD adapter).

Linux:

To check which drive is the USB SD card reader, list the current drives with the following command then insert the USB SD card reader run the command again and take note of the new drive. Replace /dev/sdX in the commands below with this, normally it will be /dev/sdb if you only have one harddrive.

df-h

Follow these commands to flash the image to eMMC on Linux. Heres the official Odroid guide.

Windows:

A Odroid specific version of Win32DiskImager found here can be used to flash the image to the eMMC.

Getting up and running

Remove the eMMC from the microSD adapter and connect the eMMC to the back of the Odroid board.

Note you can't start eMMC and SD card at the same time (I think you can but it wouldn't work for me).

You need to enlarge the eMMC to use all available space. This can be done while the eMMC, in microSD adapter, is connected to a host Ubuntu PC using gparted. Or running 'sudo odroid-config' command on the Odroid? (this isn't available on this image)

You will need to connect a screen, keyboard and mouse initially to setup SSH (unless you have the UART console cable). Once this is running then you no longer need these peripherals connected.
Connect the Odroid to the internet via cable.
Power up the Odroid.

Then try increasing the virtual memory following the instruction here or re-running catkin_make.
If you get the following error even after increasing the virtual memory, the try re-running catkin_make.

Setup Network Capabilities

ROS is a distributed computing environment. This allows nodes to be distributed across multiple computers to share the workload. We can use this functionality to enable visualisation and debugging from our main development computer.

Add hostnames to the host file so IP addresses are resolvable by hostname:

Edit the hosts file with your favourite editor:

sudonano/etc/hosts

Add the folowing lines (change these to suit the actual hostnames and IP addresses of your machines):