Michael James Gratton

Curriculum Vitae

Research associate and PhD candidate in artificial intelligence and robotics; software engineer.

The most recent version of this document can always be found online at: http://mjog.vee.net/curriculum-vitae

Last updated: July 8, 2018.

Overview

Research Associate and PhD candidate investigating reasoning and perception in artificial intelligence and robotics. Research interests include knowledge representation and reasoning, machine perception, cognitive robotics, and cognitive science. Experienced in symbolic reasoning, logic programming, cognitive vision, robotic software systems and hardware interfacing.

Previously a software architect, software engineer and UNIX systems engineer. Areas of expertise include Java and Python software design and development - particularly of Web and Internet-based applications, XML data representation and UNIX system deployment and management.

Education

Academic Career

Creative Robotics Lab, UNSW Art and Design

Research Associate, The University of New South Wales. 2015-present.

A research-focused academic position at the Creative Robotics Lab, UNSW Art and Design, and previously jointly with the School of Computer Science and Engineering, UNSW Engineering. This role has involved a number of research and development projects in tactile perception for cognitive robotics and for human-robot interaction more generally.

Select projects include:

National Facility for Human Robotic Interaction Research
Collaborating with and managing a team of researchers and software engineers to design and implement large-scale state estimation, data fusion, and vision processing systems for real-time, high-accuracy ground truth sensing in the Facility, which aims to provide an open, integrated laboratory for the multidisciplinary experimental study of human-robot interaction.
Interaction Interface for Creative Robotics
Co-PI on a teaching-focused, high-level software development project for robot control, which has enabled undergrad students with limited technical experience successfully learn and prototype embodied interaction design.
Eliciting emotions from tactile surfaces and kinetic agents
Developed machine learning systems for the recognition, formal representation and reasoning about human emotions via tactile interaction with a cognitive robotics system, that allowed people to communicate their affective state with robotic systems via touch.
Catch the Tiger, Big Anxiety Festival 2017
Collaborated with a team of researchers, architects and designers, to design the operating software for Catch the Tiger, an interactive study and large-scale interactive, co-operative game which examined the physiological and psychological response of participants to varying environmental stressors whilst carrying out a joint tasks.

Grants awarded:

UNSW Scientia Education Investment Fund, 2017
Jointly awarded grant to fund the Interaction Interface for Creative Robotics project, above.

Reasoning about Action in Contextual Logics

PhD Candidate, Computer Science, University of New South Wales, 2010-present.

Developed a formal account of the use of context in reasoning about action and change, motivated by the desire to build autonomous robotic systems that can successfully carry out tasks in human environments. Currently under examination.

Laboratory class consultant

Casual teaching, University of New South Wales, 2013-2015

Led student laboratory classes for the Prolog component of COMP9414; a postgraduate Artificial Intelligence course, and the Arduino micro-controller programming component of ENGG1000; an under-graduate engineering course.

Cognitive Vision

B.Sc. Honours thesis, University of New South Wales, 2009.

Examined the use of abductive reasoning for computer vision. Developed an automated reasoner in Prolog that generated symbolic hypotheses from visual percepts using abductive inference, and was able to infer the contents of simple scenes. Awarded 1st class Honours.

Constructing an optimisation phase using Grammatical Evolution

Summer research project, University of Adelaide, 2007.

Investigated the use of genetic programming to evolve a compiler optimisation phase for a functional, data-parallel language. This approach produced executables that performed as fast as hand-tuned optimisers.

Professional Career

Quuxo Software

Proprietor, 2004-present.

Founded Quuxo Software, a software consulting business. Manages day-to-day affairs of the business, provides software consulting and development effort for projects on behalf of clients.

Select projects include:

Robotics software engineering, 2014
Developed embedded operating software for Blue Iris, an episodic, interactive robotics installation artwork for artist and researcher Professor Mari Velonaki at the Creative Robotics Lab, UNSW Art & Design. Low-level sensory processing enabled interactive walls to respond visually to tactile sensory input from the viewer.
Robotics software engineering, 2012
Developed a reactive robot software architecture using ROS Groovy for TRACKER, an interactive robotics artwork for artist Margaret Seymour. Reactive behavioural control and 3D depth and sonar sensor processing allowed the mobile robotic systems to track and follow people in the exhibition space, manage on-board audio-visual interfaces, and alter behaviour based on external data inputs.
Web application software engineering, 2000-2016
Designed, developed and maintained tailored, web-based applications for Focus Metals Pty Ltd and Axiom Communications, which provided customer relations management, financial accounting, and business process automation services.

The Interaction Consortium

Software engineer, 2014-2015.

Roles include the design and implementation of client web sites, including the Museum of Contemporary Art and The National Association for the Visual Arts; of reusable application components for Django-based web applications; automation of provisioning, maintenance and deployment for Django web applications and Linux-based virtual private servers.

m.Net Corporation

Software Engineer, 2007-2009.

Employed as a server-side Java application engineer. Responsible for designing and implementing server-side components for a mobile phone based social networking application and m.Net's core messaging router.

Rising Sun Pictures

Software Engineer, 2006-2007.

A member of the in-house development team at Rising Sun, a motion picture visual effects production company. Responsible for developing and maintaining Python-based software for both production team and business management use.

Centre for Sleep Research, University of South Australia

Software Engineer, 2004-2006.

Employed by the Centre to take over and complete an existing software project; developing a Java web application for recording and managing industrial workplace safety incidents.

Recall Design Pty. Ltd

Software Architect, 2000-2004.

Initially employed as a senior developer to lead client development projects, then as a software architect for product development. Responsibilities included strategic product and technology planning, design and implementation of an in-house content management system and web application development framework, project management and team leader, mentor for junior staff.

Various

Systems Engineer, 1996-1999.

Employed Cobweb Internet Services to solve the reliability and scalability problems, by N-Space Pty Ltd for internal server and networking services support and maintenance, Internode Professional Access as a Client Support Technician.

Community

As a Free Software enthusiast, Michael participates in the Ubuntu and GNOME communities. He is currently the maintainer of Geary, an email application for the GNOME 3 desktop based around conversations.

Previously, he has been active in the Mozilla and Debian communities, was a member of the GNOME User Interface Hit Squad and a committer for the Apache Xindice project.

Technical Skill-set

Primary Skills

Robotics
Robotics systems development and deployment C++ and Python for the Robot Operating System (ROS), low level sensor and affector driver implementation, high level behaviour implementation, simulation using Gazebo.
Visual Perception
Vision processing in C++ and Python using OpenCV, OpenNI, ROS, and related technologies.
Logic Programming
Prolog and Eclipse based logic and constraint satisfaction programming. Meta-programming in Prolog. Declarative answer set programming (ASP) in the Potassco suite of tools.
Machine Learning
Machine learning for classification using the Weka and scikit-learn toolkits.
Python
Numerical processing using NumPy, SciPy and Pandas, desktop application development using GTK+ and wxPython, and server-side software design and development using WSGI and Genshi for web applications, RDFLib, SQLAlchemy and Elixir for data management.
Java Enterprise Edition
Web tier development using Java Servlets, JSP and XML based presentation layers, Tomcat and Jetty servlet containers. Middle tier development using JPA, Hibernate, JavaMail, and other technologies.
Java Standard Edition
Core Java SE libraries. User interface development using JavaBeans, Swing, AWT and JFC. Many extension APIs, such as JAXP, JNDI and so on.
Web and Markup Languages
Extensive, standards based approach to HTML, XHTML and related technologies such as CSS, ECMAScript/JavaScript, DOM. REST design pattern for web sites and applications. Use of XML for document data representation and (reluctantly) for structured representation and RPC. XSLT for markup transformation and XSL-FO for markup based formatting. Familiar with other main XML technologies such as XSchema, RELAX, XLink/XPointer, and so on.
Systems and Networking
Strong FreeBSD and Linux systems background, familiar with Solaris and IRIX. Familiar with installation and maintenance of common UNIX services such as Apache, MySQL, PostgreSQL, Sendmail, BIND, and Cyrus. Extensive use of Bourne shell scripting. Strong working knowledge TCP/IP based networks, protocols and issues relating to them. Swings both ways: Emacs and vi.

Additional Skills

Android Platform
Software development for Android-based phone and tablet form-factor devices in Java.
Other languages and toolkits
C software development. GTK+, XUL, WxWidgets user interface toolkits.
Scripting languages
PHP, Perl, Ruby, AppleScript.