- My honours project - imagine moving an object in another room by using your touch screen on the camera feed.
- StellrScope was an arts-meets-science exhibition at Questacon showcasing wheat research in Australia.
- The Kinect Development Workshop was a workshop I ran on the 14th of October, 2011. I presented in front of ~30 people including academics, phd students and undergrads at the ANU. It was the first time I have done a tutorial, and also the first time I have done live coding.
- Kinect Computer Control is going to be my next kinect project. This will involve providing multi-touch input to my desktop pc (possibly using TUIO), as well as gesture and voice control of everyday aps on my computer.
- Shelf - I required a shelf, so I built one!
- Diode Symphony - Course-work project: mixing physical and virtual worlds by creating a software interface for a micro-controller.
- CAD Transformer - A failed project from my attempts at 3D Modeling/Animation
- Stargrafte - a side scrolling shooter game I created in year 10, merging the worlds of Starcraft and Stargate!
I like to showcase the work I have done over the past few years. As time goes on, I hope to update this page with new projects and progress.
Title: Object Manipulation in 3d Remote Guidance Systems Status: Success! Date started: March 2013 Date of completion: October 2013 Publications:
Artifacts
Description: This was a project which enabled real time manipulation of 3D objects using a multi-touch interface for remote guidance purposes. Imagine a video conference scenario where you can 'touch' objects in the other persons' environment and have your directions projected directly into their environment. Demo: Title: StellrScope. Status: Completed - 2013. Description: StellrScope was a project I worked part time on at CSIRO while I was also undertaking my honours year and thesis project. The idea behind StellrScope was to create an interactive exhibit at Questacon - the national science and technology centre - which aims at highlighting 100 years of wheat research in Australia. It was an arts meets science exhibit where we worked alongside artist Elenor Gates Stuart . As part of this project I helped creating the 'stellrLumarca', a 3D projection space created using hundreds of strings suspended by magnets. The strings were carefully calibrated to the vertical columns of pixels in a standard 2D projector to create a very low fidelity 3D projection. Overall, StellrScope was on display at Questacon for the month of August in 2013 where over 10000 members of the general public came and had a look. I was involved in:
Links:
I have two kinects which I regularly use. One for games and one for dev. I love the possibilities that are available with the low cost 3D imaging device, and this section shows off some of the projects that I have worked on.
Kinect Development Workshop | Basic TutorialPreface:This was the first tutorial I have ever written. It was created for a live workshop that I ran on the 14th of October, 2011, hence some things are done for simplicity's sake.It was written on the first beta release of the Microsoft Kinect SDK, I haven't tested it out with the newer/current versions, so there may be better ways of doing things. If you like/hate this tutorial, I'd very much appreciate any feedback. Thanks! How to create a basic Kinect application to control arrow keys using gesturesThis tutorial runs through how to make a very basic Kinect application using the Microsoft Kinect SDK. The application lets you control the left and right arrows keys using hand gestures. It could be used to navigate a powerpoint presentation. Note: The final version in the video looks a bit dodgy, the end result is actually much better. (I highly recomment the optional extras) Final product looks something like this: Jump to:
Video TutorialSet up/Resources1. Visual Studio 2010 C# Express - free from here: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express-iso OR if you are a student you can get Visual Studio 2010 Ultimate from DreamSpark 2. Kinect SDK: http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/download.aspx 3. Coding4Fun: http://c4fkinect.codeplex.com/ Note: This is not required for normal kinect stuff, but is used in our tutorial for simplicity. 4. For speech, go to the readme, and under system requirements, get the3 speech samples. Note: Speech is not used in our tutorial, but is handy to have for future projects http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/docs/readme.htm SourcesSource Files: ANU Workshop.zip This tutorial in PDF form: Kinect Dev Tutorial The quick-start guide from the physical workshop: KinectDevWorkshop-Quicksheet.pdf InstructionsSetting up the Development environmentStep 1 - CreationCreate a new Windows Presentation Foundation (WPF) application. (Optional: Give it a name)Step 2 - ReferencesAdd references to the following:
Step 3 - DisplayBring up the toolbox (ctrl + alt + x) and drag a canvas on to the screen. Inside the canvas, add an image. (Optional: set width and height to 640 x 480 in the properties) Inside the canvas, add 3 ellipses. Give them each a name e.g. headCircle, leftCircle, rightCircle. (Optional: make them look like circles by setting width/height both to 40, and set fill so it stands out) Make sure the image and the ellipses are inside the canvas. e.g. Your XAML code should look like this :
Step 4. References (again)Inside the .cs now, you want to add:
Step 5. Loaded and Closed eventsIn your main window, go to properties -> Events tab -> Double click on 'loaded' and on 'closed' to add two events to your code.Now create a Runtime environment outside of these events. In our example we call it 'nui'.
Within the window_loaded event, we want to initialise the runtime environment and since we want camera and skeletal tracking we give it the following options.
Under window_closed, we need to uninitialise the environment:
Getting the RGB camera to displayStep 6. Create an event for the cameraInside the window_loaded :
Inside the event:
Step 7. Open the video streamInside the window_loaded :
If you run the program, it should now display a video stream from your kinect.
Display the skeleton trackingStep 8. Creating skeleton eventIn the window_loaded, get it to fire off an event for the skeletons:
Step 9. Get the first skeletonThe skeletonframe has all the skeletons, the kinect can see up to 4, but is only tracking 2 skeletons at a time. We want to get the first of these.
Step 10. Move the circlesWe identify joints, using JointIDs within the skeletons array of Joints.Here we call the method setCirclePosition which we need to define.
Step 11. setCirclePositionThe kinects x and y positions need to be scaled to fit our image and then the circles moved to the right position. Each joint has a position vector <x,y ,z >Edit: A better way of doing the tracking has been added in the ''Optional Extras" section.
If you run the program, it should now display a video stream from your kinect and the circles should now be tracking your hand and head.
Controlling actionsNow we want to get program to do something when we move our hands around.Step 12. Process GesturesWe create a method to process these gestures, since we are only tracking the hand and two hands in this case, we only need them as input:
Inside the skeletonframeready method from Step 8, we need to call this method (after we called the setCircle methods)
Step 13. Processing GesturesThe way we process the gestures in our simple application is by looking at the relative distance between each hand and the head. If the hands reach further away from the head, then we will assume that is the gesture. We then send the arrow key commands to the system.
Optional ExtrasControlling the kinect motorThe kinect motor isn't meant to be used often, but sometimes when you first set it up it may be facing the wrong way. You can control its elevation angle using the following function (its range goes from -27 to 27 degrees):nui.NuiCamera.ElevationAngle = 0; Smoothing the skeletons:To smooth the skeletons, this can be added to Window_Loaded.
Better hand trackingAn alternate way of tracking the hands is below, it uses depth images instead and works better:
TroubleshootingI want to control power points, but it sends too many arrow keys. Our basic implementation sends arrow keys to the system as long as your hand is a certain distance from the head. However, if you want to control powerpoints, you only want it to send the key once per gesture. This can be fixed using a Boolean check. Change processGestures to:
HELP I get a XAMLParseException the first time I try to run my program. Try restart your computer. (It actually works!) Helpful LinksVideo tutorials/quick start guide: http://channel9.msdn.com/Series/KinectSDKQuickstartsBetter version of kinect-powered powerpoint: http://kinectpowerpoint.codeplex.com/ Walkthroughs: http://research.microsoft.com/en-us/um/redmond/projects/kinectsdk/guides.aspx ------------------------------------------------------------------------------------------------------ Thanks to Microsoft for providing 2 Kinects to support the event through the MicrosoftStudentPartners Program Title: Kinect control of my computer. Status: Haven't started yet. Projected start date: Jan 2012 Description: The aims of this project are:
Title: Construct a shelf. Status: Complete Date started: 9 July 2011 Date of completion: 17 July 2011 Cost: ~$50 AUD Description: I found myself requiring more space in my room. Mum had been trying to get me storage boxes for months. I had some spare time and decided to build a shelf. Build as opposed to buy for two reasons:
Pre-liminary sketch: I had tried to plan things out on paper, but found it inefficient to keep re-drawing each design. Most people would use a pencil and eraser. I chose to use google sketch up, which was very easy to pick up. These plans don't match the final plans, specifically because there is no secret compartment in the final shelf. (Or is there?) Also excess wood was used to prop up the shelf, due to not accounting for carpet sag. Get the sketch up file here: (Right click, save as- me) Software:
Hardware:
Final Product: Title: Diode Symphony Status: Complete Date Started: 25 April 2011 Date Completed: 17 June 2011 Total cost: $50 + MHVBoard provided by course. Description: This was a project I completed as part of the ARTV2100 - Physical Computing course at the ANU. We were asked to design and create an project that explores the physical computing world with a creative outcome. Diode Symphony interfaces a software program with a 3x3 matrix of red and green leds as well as an RGB Led and a LCD screen. The software package is designed to be used with a touch screen and record button presses. The end goal is to visualize the button presses into a physical graphical display of lights and text. Ideally the button presses would correspond to 'tapping' of fingers to the rhythm of music. See the full documentation for a lot more information :)Files:
The projects in this section are random tidbits that I found when going on a nostalgia trip through an old harddrive. They were mostly made long ago, but I think worthy of showing.
Title: Self-replicating transformer + gun. Status: Cancelled - 2011 Date Started: 2007 Preface: This was a project that I spent a considerable amount of time trying to achieve by re-attempting it every semester break since I was 15. Cancelled because I could never dedicate the time, and have moved onto better things. I think its important to showcase failiures as well as successes. Concept/Description: Inspired by the game Portal, I liked the idea of a handheld gun from an experimental lab being taken over by the test. The idea is a story arc consisting of a gun that fires nano-robotic spheres. The spheres materialise and repair themselves. On impact, they turn into bipedial robots. Below is an early concept flash animation: Some of my other 3D modelling/animation work, including some of the progress I made towards this project. While I very much enjoyed it, 3D modelling/animation is not my forte. Perhaps one day I shall return to it. Title: Stargrafte Status: Complete Date started: Mar 2007 Date of completion: 29 Apr 2007 Pre-face: This was a game I created as part of a game-making class in year 10. It blended my love of Stargate SG-1 and the original starcraft into a side scrolling shooter. Screenshots: Get the game! (Free, 16.8mb)Note: Unfortunately, exceutebles in 2007 were compiled on educational licence and no longer work. The above was recompiled on GameMaker 8.1 Lite and has an annoying splash screen + watermark. If anyone wants to build the executable for me on a licensed copy, please contact me for the source files. A complete run through without cheats takes ~20 minutes. Good luck! Story: You are a Terran Battlecruiser in the distant future, living in a universe combining the galaxies of Stargate and Starcraft. Legend has it that the Tau'ri are another race of humans, not much different from the Terrans, but nobody has been able to confirm this yet. If the we Terrans were able to become allies with the Tau'ri, together we could easily defeat our enemies and gain supremacy over this universe. Your mission is to navigate or force your way through enemy territory and establish contact with the people of Tau'ri. If you they decline our offer of alliance, then kill them if need be, and let nothing stop you from completing this mission. Unluckily for you, the Tau'ri are said to be situated in a far off galaxy that goes by the name of the Milky Way, they live on a planet called Earth. This mission will not be easy, and you will most likely not succeed, but you hold no choice. You will have to travel first through the Xel'Naga galaxy, which is controlled by the Zerg. Should you manage to get past their forces, you will then enter the Goa'uld controlled galaxy of PcQ-18z. Be warned however, the PcQ-18z has many asteroid fields in it which will give you a hard time. Upon fighting your way past the Goa'uld, you will face yet another hostile race. You should have arrived in the Khasian galaxy by then where Protoss dwell. Their weapons out power your basic weapon so you will probably have to charge up your weapons before trying to shoot them down. As I said before, this mission will NOT be easy. Past the Khasian galaxy, lies another galaxy, but our scouts have never made it far enough to know anything about who controls it. Rumours claim that this isnt the Tau'ri galaxy, but we dont know, and the legend says the Tau'ri once fought a long war, could that war be against these unknown people? One thing is for certain though, if you manage to get that far, you will know who these people are, but you probably won't make it back to tell us. If you make it past the unkown galaxy, according to legend, you should be in the Tau'ri galaxy. Now we don't know if the Tau'ri are hostile or not, and we don't know what they are capable of either. That is all the information I can give you. Good luck Commander. |