wiki:2015/fly15

Flying Neurons

In recent years quadrotors evolved to a popular UAV platform that more and more became reliable and affordable such that nowadays they are used everywhere. While flight physics and motor control are well understood, vision-based control and autonomy are still open challenges. Algorithms such as SLAM and visual odometry have recently been well studied but their implementation on mobile platforms where computational resources and power are limited remains difficult. These machine vision algorithms are based on frame-based vision sensors producing redundant data which upon processing leads to a waste of power or sacrifice in latency. In contrast, event-based systems are data-driven, power efficient and they have low latency which makes them highly suitable for mobile platforms. In this workgroup, we will build a quadrotor from scratch and equip it with the latest event-based sensor (DAVIS) and our neuromorphic online-learning multi-neuron array (ROLLS). The ultimate goal is to develop a network that learns to perform attitude control and flight stabilization and implement it on the neuromorphic processor. The quadrotor will be euquipped with a variety of sensors such as IMU and optical flow which can be either used as teaching signals or further sensory inputs to the network. Within the scope of this workgroup it will also be possible to record some data from indoor flights and to develop visual altitude control, visual odometry and SLAM (directly from events or from event-based low-level features such as edges or corners) and sense & avoid algorithms that then can be tested on the quadrotor.

Software

cAER

Check out the cAER svn repository: https://svn.code.sf.net/p/jaer/code/cAER/

cAER Net Input modules

We developed a TCP (server) and UDP (client) input module for cAER which reads events from a remote server that runs cAER. Download these files and put them into this directory: cAER/trunk/modules/in/

Here is an example of a mainloop implementation that uses the TCP input module and a visualiser:

#include "modules/misc/in/tcpinput.h"

static bool mainloop_2(void) {
	// Typed EventPackets contain events of a certain type.
	caerPolarityEventPacket davis_polarity;
	caerFrameEventPacket davis_frame;

	// TCP Input module
	caerTCPInput(1, &davis_polarity, &davis_frame, NULL, NULL);

	// Statistics
	caerStatistics(2, (caerEventPacketHeader) davis_polarity, 1);

	// OpenGL visualizer
	caerVisualizer(3, davis_polarity, davis_frame);

	return (true); // If false is returned, processing of this loop stops.
}

cAER Matlab interface

We developed a Matlab interface to the DAVIS system using MEX, POSIX threads and parts of cAER, which enables streaming of AER polarity events over TCP to Matlab for processing and visualisation.

Matlab cAER visualizer

Download source package here.

Package is self-contained, you do not need cAER to compile this interface. Compile the C code in Matlab using the compile.m script. When connected to the drone Wifi network you can visualise events by running the example.m script. The IP and port number is hardcoded in the MEX file for simplicity.

Quadrotor

Quadcopter sensors

Overview

Hardware

The quadrotor is equipped with the following programmable hardware:

  • Pixhawk autopilot https://pixhawk.org/modules/pixhawk
    • 168 MHz / 252 MIPS Cortex-M4F
    • PX4 flight stack
    • UART, CAN, I2C, SPI
  • Odroid U3
    • 1.7GHz Quad-Core processor
    • 2GByte RAM
    • Ubuntu 14.04.2 LTS
    • Wifi module (AP mode)
  • Parallella https://www.parallella.org/board/
    • Zynq-Z7020 Dual-core ARM A9 CPU
    • 16-core Epiphany Coprocessor
    • 1GByte RAM
    • Ubuntu 14.04.2 LTS
  • Neuromorphic processor
    • Re-configurable on-line learning spiking neuromorphic processor (ROLLS)
    • 256 neurons
    • 128K synapses

Following sensors are mounted:

Interfaces

Internal communication

Serial

LAN

  • DHCP server on Odroid
  • Gateway: 10.10.0.129
  • Range: 10.10.0.130-10.10.0.255

I2C

External communication

Wireless Access Point

  • Wifi module in AP mode connected to Odroid via USB
  • Router IP: 10.10.1.1
  • DHCP server
    • Range 10.10.1.2-10.10.1.128
SSID Quadcopter-WPA
Password 1234567890

433MHz Radio

  • Baudrate: 57600kps

2.4GHz Radio

Remote access

Wireless

Connect to the Quadcopter-WPA wifi to remotely access the Odroid and Parallella over ssh.

Odroid

IP 10.10.1.1
Username odroid
Password odroid

Parallella

IP 10.10.1.130
Username parallella
Password parallella

Serial access

You can connect a FTDI cable to either the serial port of the parallella or the odroid.

  • Baudrate: 115200kps
Last modified 4 years ago Last modified on 05/06/15 01:19:02

Attachments (4)

Download all attachments as: .zip