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.
- Doctor of Philosophy Candidate, Computer Science (currently under consideration), 2018
- First Lucia Winter School in Cognitive Robotics, Örebro University, 2013
- B.Sc. Computer Science (Hons. 1st class), University of New South Wales, 2009
- Logic Summer School. Australian National University, 2009
- B.Sc. Mathematics and Computer Science, University of Adelaide, 2007
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.
- 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.
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.
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.
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.
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.
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.
- 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.
- 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
- 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.
- 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.