Vision-based emergency landing system for indoor drones (using FPGA)

At 4th semester of my bachelor at Aalborg University me and my project partner became a part of a new research project, UAWorld (DRONER RYKKER INDENDØRS MED DANSK TEKNOLOGI). A project aiming for developing a new infrastructure and a set of drones capable of being used in indoor industrial environments with dynamically changing obstacles (and layout) and human beings likely to walk around. The drones within the project is intended to carry assembly line goods around an assembly line hall into a warehouse where it will be autonomously offloaded.

UAWorld usecase

UAWorld usecase

The main research group within the project had already taken several decisions regarding the drone typology, which indoor positioning system to use and which wireless communication to use. But being dependent on these systems (positioning and wireless link) to reliably navigate a mission critical environment, making sure that the drone would never drop the goods or crash into human beings even at emergency situations, is just as an important task as making the quadcopter navigate safely.

For download links to the report and source code, please scroll to the bottom of the post. Further videos of the project undergoing development can also be found in the bottom of the post.
Read more…

Raspberry Pi playing ZomBuster

Some time ago I had a course dealing with image analysis i.e. image segmentation, moments, colour detection, object recognition etc. As part of the course everyone had to make a project that showcased the theory we had been learning throughout the course. We were allowed to use OpenCV as the backbone for accessing the camera etc, but not allowed to use any of the built-in filters. Instead the goal was to implement the different algorithms ourself.

One day one of my friends was playing the Smartphone game ZomBuster. A screenshot of the gameplay can be seen below:

ZomBuster gameplay

ZomBuster gameplay

The goal of the game is to tap the lane with the zombie in it, in order to kill it. As the zombies are green and humans are blue I thought it would be a fun challenge to build a robot that could play the game autonomously for the course.

This also allowed me to use the 3D printer I had just bought at the time. For that reason I created a 3D model with all the needed components:

3D model

3D model

Read more…

Categories: ARM, Embedded Linux, OpenCV, Raspberry Pi Tags:

Software Defined Radio with USRP N200 and LabVIEW (GUIDE)

As a part of my electronic engineering degree I have decided to look into the world of Software Defined Radios, a complicated but very powerful tool.

Software Defined Radios, SDR in short, is in short a software-based radio platform, making it possible to program the RF transmissions schemes and updating them on the fly if necessary, a bit similar to what we in the digital world know as FPGA’s. This allows end-products to redefine their radio needs, such as when sending a satellite into orbit where it would be impossible to update the RF hardware platform to support other radio protocol and schemes.

USRP N200 module

USRP N200 module


To get familiar with the SDR’s I decided to work with a basic USRP N200 module which is supported by LabVIEW and other tools, eg. GNU Radio, and write a detailed report about my progress and discoveries (see the bottom of the post for a link to the report).
The N200 module is controlled over an Ethernet interface, which is also used to exchange (transmit and receive) the so called IQ samples when they have been converted by the analog RF frontend.

In the video below I demonstrate the use of a Software-Defined radio setup with two USRP N200 modules programmed in LabVIEW programmed with an AM modulation and demodulation scheme.
The modules are programmed and tested thru LabVIEW where a graphical interface allows me to transmit a single tone signals or an audio-file from one SDR unit to another for.


Read more…

Bachelor’s Thesis: LaunchPad Flight Controller

I recently got my bachelor’s degree in electrical engineering. As I wrote in an earlier blog post I decided to implement a custom flight controller on a Tiva C Series TM4C123G LaunchPad for my project.

Currently it supports several different modes including acro/rate mode, self level mode, heading hold and altitude hold. Below is a series of videos demonstrating the different modes:

The source is available on Github: https://github.com/Lauszus/LaunchPadFlightController as usual including the report I wrote.

I would really recommend anyone that is interested in this sort of thing to read through it for a deeper understanding on the fundamental theory and how it is implemented on a flight controller in practice.

It consists of three parts. The first part presents a theoretical model and the equations used to estimate the attitude and altitude of the quadcopter. The second part describes how the system is implemented on the microcontroller and lists the hardware used for the project.

The final part measures the performance of the flight controller by logging the data in real time. This data is then compared to the simulated results based on a theoretical model simulated using Simulink.

Flight modes

In total there are four different flight modes supported by the flight controller. The first one is acro/rate mode, which only uses the gyroscope to stabilise the quadcopter. This mode is mainly used for advanced pilots and acrobatic manoeuvres. In this mode the aileron and elevator stick inputs indicate the desired rotation rate of the quadcopter. Thus, if the user wants the quadcopter to rotate fast clockwise along its roll axis the aileron input can be put all the way to the right.

Read more…

IoT Arduino Vending Machine

February 7th, 2015 6 comments

In this blog post I will describe a IoT (Internet of Things) Vending Machine that I built quite some time ago with a friend of mine Sigurd Jervelund Hansen.
At Sigurd’s dorm room they got hold of an old vending machine free of charge, as it did not work. We quickly decided that we wanted to get it working and give it a overhaul as well. In the end we enabled it to take both RFID/NFC cards and coins and make funny twitter updates about it.

The video below gives a short overview on how it works.

As mentioned we reused some shift registers, relays and voltage regulators on the original mainboard. One Arduino Pro Mini is connected to the mainboard and takes care of reading and lighting up the buttons (lights up if the relevant slot is not empty), controls the 7-segment LED display, reading the output from the coin validator and returning money if the user requests it by pressing a dedicated button.

Read more…

Categories: Arduino, Raspberry Pi, TKJ Electronics Tags:

LaunchPad Flight Controller

January 23rd, 2015 8 comments

As some of you might know I have been studying in San Francisco the last semester at San Francisco State University. For that reason I have not done as much as development as I usually do, due to all my equipment being back in Denmark and also because I prioritised being social and not just sit behind my desk coding all night 😉

Anyway I did not fully stop working. I actually started working on my own flight controller written from scratch in one of by courses. Below is the result so far:

Read more…

Handheld XV-11 LIDAR with STM32F429 and MATLAB

The XV-11 LIDAR unit

The XV-11 LIDAR unit

To make our robots even more autonomous we would like to investigate the world of Laser range finding using LIDAR technology. Unfortunately for the users who want to try out LIDAR it’s a very expensive technology to get your hands on.

Throughout the years though Vacuum Clearner robots have evolved a lot, both in the algorithms gettings better but also in the use of more advanced sensors. Lately the Neato XV-11 All Floor Robotic Vacuum System included a small range (0.2m to 6m) LIDAR with 1 degree precision and a resolution of a couple of centimeters. As this vacuum cleaner only costs around $400 makes it a bargain to get hold of a LIDAR if just you could disassemble the robot and use just the LIDAR.

Luckily for us there was put up a bounty for people “hacking” the XV-11 LIDAR and a new hacking community had begun: http://xv11hacking.wikispaces.com/LIDAR+Sensor
Read more…

Categories: ARM, STM32 Tags:

IoT featured soccer table

IoT table from top

IoT table from top

Internet of Things (IoT) is one of the big electronics subjects throughout the world this year.

To show the capabilities of custom IoT devices and to help a local LAN-event organisation, TheBlast, we offered the help to create an Internet enabled soccer table.
Thanks to generous donation by Tuborg Fonden we were able to buy a brand new soccer table for us to modify.

We modified the table by adding two touch displays for user interaction, a barcode scanner for user registration. Inside the table we installed two score detection IR sensors and a ball release system, made by using a motor/wheel from an old Roomba robot. Finally we installed 5 meter of RGB LED strip to light up the playfield.

When scores is detected they are immediately registered online, to be displayed on the LAN-event website, where score timetable and all previous matches can be found.
This post will describe the features of the final table and how it was developed.


Read more…

Categories: ARM, STM32 Tags: , , , , , ,

Full size DIY Balancing Robot

It has been quite a while since my last blog post, but I am finally ready to reveal what I have been working on the last months. Ever since I made my first balancing robot: http://blog.tkjelectronics.dk/2012/03/the-balancing-robot/ and the Balanduino I wanted to build myself a full size version which I would be able to ride just like a regular Segway.

Finally I decided to make one together with a good friend of mine Mads Friis Bornebusch in a course at my university DTU (Danish Technical University/Technical University of Denmark).

Video demonstration

Mechanical construction
The main frame is an aluminium checker plate that is 500x360x7mm which the motors are bolted onto. This width was chosen, so it would be able to go through a normal door opening. The motors used are two MY1020Z 500W, 24V, 12.6Nm brushed DC motors.

I ordered them from Germany, as I needed them right away, but you should be able to get them much cheaper by ordering them directly from China.

Below is an image of the aluminium checker plate after we have drilled the holes for the 8mm steel bolts. Note that these are countersunk, so they are flush with the surface. I would recommend using lock nuts to ensure that the bolts will stay in place – you can also use Loctite instead.

Aluminium checker plate - ready to mount the motors

Aluminium checker plate – ready to mount the motors

Motor with hub

Motor with hub



Read more…

USB Host Shield Mini in webshop

After some great success with the USB Host shield development and the sales of the USB Host shield for Arduino thru our webshop, we are happy to announce that we have also started carrying the compact version of the shield, the USB Host Shield for Arduino Pro Mini.

USB Host Shield for Arduino Pro Mini

USB Host Shield for Arduino Pro Mini

The shield is just a compact version of the well known USB Host shield for Arduino’s and it makes you able to add the USB Host functionality such as Bluetooth control with PS3, Wii or your Android phone, to any Arduino Pro Mini equipped projects. Please note that your Arduino Pro Mini must be running 3.3V though!

We will be selling the mini shield at an introductory price of $20.00 USD and it can be bought including pre-cut headers for stacking.

Visit our webshop for more information: http://shop.tkjelectronics.dk/product_info.php?cPath=22&products_id=45

Categories: Arduino, News, USB Tags: