Autonomous Immersive Quadcopter – Build Log

Standard

It’s been a while since my last post back in December (all about Windows Azure, you can read about that here) and a lot has been going on in the interim. I’ve mainly been focused (as always) on work, but in my down time, I’ve been working on somethin’ a little special.

I’ve always been fascinated by things that fly: aeroplanes, helicopters, birds, bees, even hot air balloons and solar wings. Flight gives us an opportunity to view things from a different perspective; it opens a new world to explore.

The trouble is, as a human, I was born without the (native) ability to fly. And that’s always made me a little, well, sad.

A couple of years ago, I started toying with a model aeroplane and my goal at that point was to turn that into a UAV, like so many of the projects I’d seen online. I ended up dismissing the idea, for a couple of reasons: planes are pretty limited (manoeuvrability-wise), and unless you can fly yours incredibly high and incredibly fast, you’re a little limited to the types of cool things you can do. Plus, the open-source autopilots that are currently available are mainly all built using non-Microsoft technologies, and, being a “Microsoft guy”, I wanted to do something about that (let’s say it’s just for selfish purposes: I’m much more productive using Microsoft technologies than I am with something like C on the Arduino platform, and I have very limited time for this project).

So I’ve been working on building a custom quadcopter since January, and I’m very pleased with the results so far. It flies, and in this video you’ll see the first test flight. Toward the end, just before the ‘aerobatics’, I disable the automatic flight stabilisation remotely, which causes even more aerobatics. Anyway, the quadcopter was fun to build, and was a huge learning curve for me: and I really enjoyed the challenge of having to figure out all the flight dynamics, propeller equations, lift calculations and of course, the designing and building of the frame, electrical and radio systems.

But it’s not awesome enough yet, not anywhere near it! In fact, check out some of the plans:

  1. I’m currently building a three-axis motorised gimbal that will fit underneath the main airframe. It is going to be connected to an Oculus Rift virtual reality stereoscopic headset, which will relay movements of the wearer’s head to the servos on the gimbal; thus enabling you to ‘sit’ and experience flight from within the virtual cockpit. My colleague, Rob G, is currently building the most awesome piece of software to power the Oculus’ dual stereoscopic displays, while I finish designing and building the mount and video transmission system.
  2. Cloud Powered AutoPilot and Flight Command. That’s right: using Windows Azure, I will provide command and control functionality using Service Bus and sophisticated sensor logging through Azure Mobile Services. Flight data and video will be recorded and shared real-time with authenticated users. Why? There’s nothing cooler than Windows Azure, except maybe something that flies around actually in the clouds, powered by the Cloud!

I don’t know where this project will end up taking me, but so far it’s taken me on some very interesting journeys. I’ve had to learn much more about:

  • Circuit design
  • Fluid dynamics
  • Thrust and vector calculations
  • Power system design
  • Radio-control systems (on various frequencies: 5.8GHz, 2.4GHz, 433MHz and 968MHz) and the joys of trying to tame RF energy using antennae
  • Soldering

… The list goes on!

Current Activity

I’m already in the progress of building a sensor network on the quadcopter. This comprises of:

  • 5 x Ultrasonic range finders (four mounted on each of the motor arms, one downward-facing)
  • 1 x Barometric pressure (for altitude and airspeed sensing, using pitot tubes)
  • 1 x 66-satellite GPS tracking module
  • 1 x Triple-axis accelerometer
  • 1 x Triple-axis gyroscope

The current plan is to use a Netduino to interface directly with the sensors, and transform all of the sensor data into a proprietary messaging standard, which will be emitted via the I2C interface using a message bus architecture. In this way, the Netduino is able to create ‘virtual’ sensors, too, such as:

  • Altitude (based on either the downward-facing ultrasonic sensor, or the barometric pressure sensor; whenever the quad moves out of range of the ultrasonic sensor)
  • Bearing
  • Velocity (allowing selection of air/ground speed)

The Netduino is an amazing device, however it doesn’t have sufficient capacity or processing power on-board to interface with the radio control receiver (which receives pitch, roll, yaw, throttle and other inputs from my handheld transmitter). For this activity, I’m going to use a Raspberry Pi (running Mono!). The RPi apparently features the ability to turn GPIO pins into PWM-capable pins (either generating, or interpreting), which is exactly what I need.  The Netduino will output the sensor data to the RPi, which will be running the ‘autopilot’ system (more on the planned autopilot modes in a later post).

It’ll be the job of the Raspberry Pi to interpret sensor data, listen to commands it has received from the handheld transmitter on the ground, and decide what action to take, based on the requested input and the sensor data, and the currently-selected autopilot mode. Sounds simple, but it’s anything but!

If you’re not interested in the technical details, you can follow this project on hoverboard.io. Thanks for reading.

Advertisements

My Home Tech: Summer 2011 Roundup

Standard

A long, long time ago, in a blog post far, far away, I documented some of my home tech in a piece that described how it all connected together. The article actually focused on my home network equipment, but I figured it would be useful to document the rest of the kit so that I can look back on it in a few years and marvel at how outdated it all was.

In a move which is hopefully slightly more interesting than my outrageously poor opening line, I figured it would be fun to expand out and showcase how I actually use some of this technology in my day job and my home life because I enjoy reading about the interesting things others have done, so perhaps others out there will appreciate this!

Highlights

Before I can kick-off any mini series style articles, let’s set the foundations:

  • Gigabit Ethernet cabled throughout
  • Netgear GS605 Gigabit Switch
  • Connectix Home Network Cabinet
  • Connectix Home Network Patch Panel (8 RJ45 + 4 telecoms)
  • HP ProLiant N36L MicroServer (4TB storage)

Infrastructure

Our apartment is cabled using gigabit ethernet, with at least two outlets in each bedroom plus four in my home office, and four in the living room behind the TV. This all terminates back to a Conectix Home Network Patch Panel which provides 8 termination points for each of the sockets, plus 4 telecoms connections which can be used to route the BT line to any of the RJ45 outlets scattered around. The network sockets all terminate back to a Netgear GS605 Unmanaged Gigabit Ethernet Switch, which sits inside my Connectix Home Network Cabinet.

I really like having the flexibility to swap-out any active hardware or install new stuff without any hassle, plus having the freedom to route connectivity about as I need it is pretty neat.

Network Cabinet Setup

Energy Metering

Within the network cabinet is a Current Cost Envi and Current Cost Bridge, although I have to say that I am not overly impressed with the bridge’s capabilities since it connects only to the my.currentcost.com web site, which although powered by Pachube, locks all your data away.

In the coming months, I will hopefully be announcing my revised ‘Arduinometer’ project, which is now based on the new Netduino Plus. This open-source platform will be capable of reading simultaneously from different energy meters, including gas, electricity and water.

Connectivity

Right now, I’m using BT as my broadband provider. Until their Infinity service is available in my area (September 2011 is the ETA – yikes!), I’m using their Total Broadband package. As you can see, I get relatively decent connectivity, but I’d obviously like to improve on that and I have high hopes for the BT Infinity Service (when it becomes available):

What matters most to me is reliability: as I work from home, I need a robust connection that’s there when I need it.

Servers & Storage

At the heart of my home network is a new HP ProLiant MicroServer N36L with 4TB of storage capacity. It runs the newest Windows Home Server 2011 operating system. All my client PCs (including my main development station) are backed-up daily by the server. That makes for a total of 4 PCs and 1 laptop being regularly backed up by the server, quietly and transparently.

As an added bonus, after a clean build of my development station, I took a full backup of it and that should allow me to do a complete rebuild simply by restoring the backup (which is actually an image of my machine) to go back to my ‘ideal state’ at any point in time.

Development rig

My main development machine is an Intel Core i7 870 @ 2.93GHz. It has 8GB of Corsair DDR3 RAM and runs Windows 7 Ultimate. I’ve fitted out the very lovely  Antec P90 case with a Corsair sealed liquid-cooling unit for keeping the processor nice and cool. Having a nice big radiator and 12cm fan means the RPMs can be kept low and that in turn reduces noise from the case.

Storage wise, I’m running a 120GB OCZ Colossus SSD as my primary drive with a 600GB Western Digital Green Caviar for storing most of the data. I also have a secondary 60GB Corsair SSD which has holds code I’m working on with Visual Studio 2010 (which, by the way, is installed on my primary SSD).

Driven by the NVidia GeForce GTX 275 primary graphics card are two 24″ LCD monitors, but I have aspirations to update those this year to a couple of IIyama 27″ panels. I also have a cheaper standard graphics card driving a 3rd 21″ CTX LCD monitor on which Twitter sits (yes, it is an addiction – live with it).