Pan Tilt Mount
The goal of this project is to develop an open source design that can compete with the GigaPan Epic Pro Robotic Panoramic Tripod Head. The project can be divided into 3 logical parts. First there is a plastic model that has mounts for motors, includes belts and pulleys, and is held together with metric socket hardware. Second is the bridge from hardware to software which is achieved through an Arduino MEGA 2560 and a RAMPS 1.4 motor control board. Lastly there is a Windows software interface much like the interface Reprap uses to control 3D printers.
The project technically began Summer of 2013 when I began trying to use stepper motors with an Arduino. The project laid dormant until April 2014 when I began developing a concept for a product. It is described by following workflow: An Arduino microcontroller is connected to two motors in a plastic mount, the plastic mount has a Nikon camera on it. The camera is connected to a PC as is the Arduino. The PC triggers the camera to shoot and the motors to move (through the arduino) in a synchronized manner.
I spent about 100 hours working on the software portion during the 2014 school year. There wasn't enough time in a weekend to really work on the CAD portion of the project. One of the challenges was finding a method to control the camera through the computer. Originally I thought that the Arduino would trigger the camera and the PC wouldn't be connected to it or even be necessary at all. I ordered a Arduino USB Host Shield and I was able to trigger the camera using a PTP (Picture Transfer Protocol) method. There were several pitfalls however, the most important being that the code was very complex C++ that I had trouble modifying. The other major pitfall was that the camera's settings were not modifiable from the Arduino Code. That could be dealt with by presetting manual settings on the camera. I looked at other solutions and in doing that I came across the Nikon Development Suite. I knew that I would only be working with Nikon cameras because I had access to a D90. The development suite was entirely in C++ and was no simpler than the Arduino solution. After searching some more I came across the Nikon SDK C# Wrapper. It was a set of files that wrapped the Complex C++ into a neat C# Library that retained complete functionality.
I spent several weeks working with the library and I wrote several sample applications which would trigger the camera, download the picture from its RAM and then save the picture on the computer. Towards the end of that I wanted to learn how to make installable applications with installshield. I then made my first installable application named NikonTest2 and it was distributed to 3 computers. Shortly after that I began working on what would become the final edition of the Windows software piece. I decided to follow the design of the Reprap software and create two separate applications. One would fulfill the role of Pronterface and would directly interact with the arduino. The other would take the place of Slic3r by creating the instructions. I have spent about 75-100 hours working on the Pronterface like component. It is currently a little over 1000 lines of code. The last noteworthy thing about the software development was that I began using source control software. Specifically Microsoft Visual Studio Online. I used source control on this project because I was going to work from multiple computers. Visual Studio Online was centralized and it was built into Visual Studio 2013 already.
Around April I also began working on the CAD component of the project. I began working in Trimble Sketchup and that lasted for the first two generations until the third generation when I began using SolidWorks. The first five generations were all based on my own model concept. It is shown in image 5. After building that model I received some advice from a professional and I started working off of that. I learned that the camera had to be rotated about its center of gravity for it to require minimal motor torque. That explained why all commercial designs were shaped similarly. As you can see from the image in picture five I had not been using much hardware yet. As of the latest model there are over 100 nuts and bolts. Previously to the sixth generation (images 6 & 7) i had used the extruded cut feature in SolidWorks to make holes. Now having many holes with similar properties I had to learn to use hole wizard effectively including its bookmark system. That helped immensely for keeping my holes consistent but for the nut holders it didn't work. For that I had to learn how to use equations in SolidWorks so the nut dimensions were consistent.
The project technically began Summer of 2013 when I began trying to use stepper motors with an Arduino. The project laid dormant until April 2014 when I began developing a concept for a product. It is described by following workflow: An Arduino microcontroller is connected to two motors in a plastic mount, the plastic mount has a Nikon camera on it. The camera is connected to a PC as is the Arduino. The PC triggers the camera to shoot and the motors to move (through the arduino) in a synchronized manner.
I spent about 100 hours working on the software portion during the 2014 school year. There wasn't enough time in a weekend to really work on the CAD portion of the project. One of the challenges was finding a method to control the camera through the computer. Originally I thought that the Arduino would trigger the camera and the PC wouldn't be connected to it or even be necessary at all. I ordered a Arduino USB Host Shield and I was able to trigger the camera using a PTP (Picture Transfer Protocol) method. There were several pitfalls however, the most important being that the code was very complex C++ that I had trouble modifying. The other major pitfall was that the camera's settings were not modifiable from the Arduino Code. That could be dealt with by presetting manual settings on the camera. I looked at other solutions and in doing that I came across the Nikon Development Suite. I knew that I would only be working with Nikon cameras because I had access to a D90. The development suite was entirely in C++ and was no simpler than the Arduino solution. After searching some more I came across the Nikon SDK C# Wrapper. It was a set of files that wrapped the Complex C++ into a neat C# Library that retained complete functionality.
I spent several weeks working with the library and I wrote several sample applications which would trigger the camera, download the picture from its RAM and then save the picture on the computer. Towards the end of that I wanted to learn how to make installable applications with installshield. I then made my first installable application named NikonTest2 and it was distributed to 3 computers. Shortly after that I began working on what would become the final edition of the Windows software piece. I decided to follow the design of the Reprap software and create two separate applications. One would fulfill the role of Pronterface and would directly interact with the arduino. The other would take the place of Slic3r by creating the instructions. I have spent about 75-100 hours working on the Pronterface like component. It is currently a little over 1000 lines of code. The last noteworthy thing about the software development was that I began using source control software. Specifically Microsoft Visual Studio Online. I used source control on this project because I was going to work from multiple computers. Visual Studio Online was centralized and it was built into Visual Studio 2013 already.
Around April I also began working on the CAD component of the project. I began working in Trimble Sketchup and that lasted for the first two generations until the third generation when I began using SolidWorks. The first five generations were all based on my own model concept. It is shown in image 5. After building that model I received some advice from a professional and I started working off of that. I learned that the camera had to be rotated about its center of gravity for it to require minimal motor torque. That explained why all commercial designs were shaped similarly. As you can see from the image in picture five I had not been using much hardware yet. As of the latest model there are over 100 nuts and bolts. Previously to the sixth generation (images 6 & 7) i had used the extruded cut feature in SolidWorks to make holes. Now having many holes with similar properties I had to learn to use hole wizard effectively including its bookmark system. That helped immensely for keeping my holes consistent but for the nut holders it didn't work. For that I had to learn how to use equations in SolidWorks so the nut dimensions were consistent.
The Current Concept
The current idea is still based off the original. There have been a few changes in the Windows software portion. The camera will have to be from the Nikon DSLR lineup. It will have to be plugged into the computer during use as the computer will be triggering it by using Nikon PTP. The computer will be responsible for synchronizing the movement and the camera shots. There will be a Slic3r like component that will have the user put in information like azimuthal angle range, polar angle range and amount of overlap in each shot. Later I would like to support cameras with auto focusing capabilities by auto focusing to the hyper focal length. I would also like to be able to predict resolution based on how many megapixels the sensor has and how far the zoom is. Time prediction and remaining shots are also on the to do list. The pronterface application while best described as a panoramic image acquirer should also be able to initiate an image stitching session with Microsoft Image Composite Editor (I.C.E.) through I.C.E.'s command line usage. As currently described the robot requires 2 USB connections to operate. I would like to bring that down to 1 or zero. I am entertaining the possibility of the Arduino connection being Bluetooth but unfortunately, as far as I know there is know way to remotely operate a camera beyond its basic functions i.e. using a IR Remote.