My Masters

Introduction

After thoroughly enjoying the research-based aspects of my undergraduate engineering degree, I chose to further my studies with a Master of Engineering. I have since completed my ME thesis, which was titled A Semi-autonomous Wheelchair Navigation System. The title should give you a fairly clear indication on what the project was on. Using a systems engineering based approach, the key aspects of the system I developed were:

  1. Ability to learn the layout of an unstructured indoor environment. This requires a capable operator to drive the wheelchair around the area. During the training period, the navigation software incrementally constructs a map of the area using an online and real-time SLAM algorithm.
  2. Provide obstacle avoidance, to assist the user with the task of navigation. This was achieved using a well known real-time obstacle avoidance algorithm, VFH.
  3. Provided that the smart wheelchair had traversed the environment before, the navigation system was capable of autonomously travelling to a user-specified destination within the map of the environment. This mode of operation is obviously only required for users who know where they want to go, but suffer from severe motor impairments. If the path planner has successfully found a path to the destination, with the touch of the button the wheelchair will travel to the goal, while not only avoiding collisions with the environment, but also with dynamic obstacles (i.e., people and objects that were not there when the wheelchair was being trained).
  4. I implemented a variety of modes for the user to control the system, including: joystick, keyboard, via GUI, and autonomous navigation towards a goal. The wheelchair was also instrumented with three different distance sensors that could each be used as input to the mapping module: an expensive laser scanner, a cheaper laser scanner pulled from a robotics vacuum cleaner, and a XBox Kinect.    

What my Masters entailed

A lot of work! At my university, in addition to the thesis another requirement of Master of Engineering is to do four courses. Since I had already taken many of the interesting and relevant courses in Mechatronics undergraduate degree, for three out the the four courses that I took were ones which I was missing two years of pre-requisite courses each. Sure, I could have taken 'easier' courses, but I'm glad I took ones that challenged myself and broadened my skillset. The courses I took were machine learning, advanced algorithms, image reconstruction, and advanced embedded systems.

Believe it or not, the scope for developing a semi-autonomous wheelchair navigation system is large, and to be honest, quite ambitious for a Masters. I say this not to gloat but instead to share my hindsight. Your masters project is, and in my opinion always should be, entirely propelled by yourself. Of course it is easier if others are help you along the way (supervisors, technicians, colleages, etc), but ultimately and most likely, you are the only one who can overcome particular challenges and problems with your project. Even part way through your thesis, chances are that you are more of an expert than your supervisor(s) in that area.

Since I did not want to concentrate solely on one area, in order to deliver on the large scope of the project I utilised many existing open source frameworks. Without a doubt, bolting together existing software together greatly speeds up development and allows you to focus your attention to the higher level aspects of the project. However, in my experience, there is no such thing as a smooth and hassle-free install of an open-source project. The problem is dependencies and differences between your system and the developers. Installing and using open-source software is great, but be aware that it takes a lot more effort and work that others will probably give you credit for (but the more you install, the easier it gets). The main open source framework I used was The Player Project, and to make installing it easier, I've devoted a page on this website to get you up and running quicker. 

Over the duration of my masters, I also added a couple of programming languages to my repertoire. I learnt how to use Python quickly after starting in the deep end (threads, event handlers, GUI design, and interfacing to code I had written in C/C++). I wanted to use Python for the front-end interface to the system, i.e., the GUI. I also learnt how to write documents in LaTeX. Like any other programming language, expect to have to get over the initial learning hurdle. I also became more fluent in operating Linux, particularly through the command line, and better at installing open-source projects.

Most of my masters was software related. In order to evaluate sensors and test out of the system, I also had to modify electronics, design circuit boards, and instrument a wheelchair with sensors. Dealing with hardware can be just as frustrating as software. A lot of time is taken up by testing, and it can also be difficult even to find a safe environment to test out your system in. 

Lastly, and key component to the Masters, is the write-up of the project in the form of a thesis (sometimes referred to as a dissertation). My thesis ended up to be a 127 page document with approximately 40,000 words and 122 references. A fair chunk of my thesis was devoted to presenting and discussing others' research. Literature reviews can be quite time consuming - unless you are clued up already, you end up re-reading dissertations, articles, journals, and papers several times before you can start synthesising and writing about their work in your own words.

Videos

Here are several videos relating to my Masters. The first two video clips involve experiments using a physical robot (i.e., the instrumented electric wheelchair) and demonstrate the mapping module's ability to map a simple office environment. The first video uses a Hokuyo URG-04 laser rangefinder and also shows the GUI that I developed for the system. Note that the laser data overlay often is out of synch with the local map. This is because the laser data being displayed is current, whereas the map data is being shown at a much lower rate for performance. The frame rate of the onboard video has also been reduced, again for performance reasons.

In the second video, a comparison is made between the three different laser scanners that were installed on the robot. The leftmost map was created with a Hokuyo URG-04, a typical rangefinder used in robotics. The resulting map often has grey areas in the middle of the robot's path as a result of out of range readings. This could be fixed by changing the interpretation of these points. The middle one was from a sensor pulled from a robotics vacuum cleaner. Unfortunately this sensor somehow was damaged and was not working properly at the time it was used for mapping. The rightmost map is made from a sensor derived from an XBox Kinect sensor. Essentially the Kinect outputs distance to points in 3-D and to emulate a 2-D laser scanner, you need to project the points onto the X-Y axis (while taking into account the mounting geometry of the device).

The later two videos use the Stage robotics simulator for emulating not only the environment, but also the robot and its sensors. The video below shows the map being created while the robot driven around via the keyboard. Note that the interface is the same between the actual robot and the simulated one, and the two setups differ only by a few high-level configuration settings. This is one of the huge benefits of a modern robotics framework such as Player.

The final video demonstrates the path planning and autonomous navigation functionality of the system. Once the environment has been adequately mapped, a goal point was specified for the path planner to find the best route to it. Provided it found a path, by the click of a button the robot would then drive by itself to the goal point while avoiding dynamic obstacles (obstacles that were not present in the map).

My Thesis

You can access an online copy via the UC Research Repository here.

1

Media coverage

My project had a brief, light-hearted bit of media coverage. It was shown on CTV (Christchurch television) and published online. You can view this short two minute clip about my project and how a little about myself below:

Thoughts and advice

After going through my Masters, I have a few words for those of you considering postgraduate studies in an engineering field.

  • Consider whether you can realistically achieve the goals of your project in a given time frame. Given an infinite amount of time, I'm sure you could probably 'develop a cure for cancer' - well, almost! But ask yourself, at what expense? Am I going to be a hermit until this is the case? Also, funding is generally limited and there is always an incentive to finish on time.
  • Choose your project carefully. Some topics that deal with emerging technology are, by nature, easier to develop and publish novel solutions to. However, they are harder to find research about. On the flip side, topics like SLAM are generally quite mature, and most things under the sun have already been done and there is plenty of research already available. Subsequently it becomes harder to create something new, and requires a substantial amount of effort to get up to the 'state of the art' (particularly if your at an institution does not have an expert(s) in this field).
  • Despite how well you plan, always expect the unexpected and take into account that your project will always be insanely busy towards the end. In an a topic that involves substantial components of both software and hardware development, anticipate for hitting many 'brick walls'. Although only sustained effort will get you over these hurdles, I always find it amazing how giving a problem time and sleeping on it can do wonders.
  • Write your thesis as you go. This was very sound advice given to me by one of my supervisors. Inevitably, you will have to overcome many challenging problems throughout your project. I found that by alternating between doing the work and writing my thesis was an effect way to ensure that my project was always moving forward. Literature reviews, as boring as they are to perform, are essential in your research: they help you to find out what has been done and highlights potential areas that you could improve. Time is generally required for literature reviews. On the other hand, the actual work is exciting but it can be inefficient to continually go at it for long periods of time (particularly if you haven't done your homework and are heading in the wrong direction!). Since you will always have a literature review in your thesis, why not write about once when you do it at the start of your project?
  • Write your thesis in LaTeX. You definately do not have an excuse if you know how to program, but if you are not, make sure you know someone who is familiar with LaTeX to help get you started. I've provided some files to get you started on a page dedicated to writing a thesis in LaTeX, along with some handy tips about formatting.

Share |