|
Our move to Mac OS X had significant benefits for us as a developer group, and for our project, says Frank Kuehnel, Ph.D. Research Scientist, RIACS. And the move was easy—our original source code and visualization algorithms ported very quickly; Interface Builder provided a way to create an easy overview of the project; compilation times have been significantly reduced; code review is easier using Xcode tools; and the Macintosh platform with its UNIX core eliminated the need for a separate Windows machine to communicate to administrative staff and to use software that wasn't available for UNIX, such as [Microsoft] Word. The move to Mac OS X met all of our needs, allowing us to integrate a development and a communication and administrative environment on a single platform. A Critical Need for the Right PlatformKuehnel and Andre Jalobeanu, research scientists in the Bayesian Vision Group at RIACS developer group, carry out basic research and technology development and are currently working on a 3D Super Resolution Advanced Data Fusion and Navigation System project for NASA. Three-dimensional super resolution reconstructs high-resolution 3D surface models, with both geometry and reflectance properties inferred from multiple images and allowing for the use of other kinds of sensors such as radar or laser-range finders. The NASA application is used for both planetary science and autonomous navigation such as surface robots. Specifically, our application attempts to infer the surface of the asteroid 433 Eros from images combined with laser-altimetry data taken during the Near Earth Asteroid Rendezvous mission, Franks says. The asteroid is difficult to reconstruct because it moves and rotates constantly, providing no fixed light position. The image data is also corrupted by an accidental blur." Despite this complexity, the team has been able to render the image successfully, as shown in the accompanying image. Reconstruction of a 3D surface image from multiple images requires extremely accurate rendering," Frank explains. Our code development for even a small piece of the application typically takes several weeks to complete, and significant time to compile while we work on debugging. It's critical that we have tools and developer environments that make this process as efficient as possible, especially as we are sharing code among six developers. We have found that the ease with which the operating system development tools can be used and legacy UNIX code and libraries can be assigned is really what impacts our development efficiency. Because Mac OS X is based on a UNIX core, we found that it provided an ideal development platform for our project and met all of our development requirements. The Bayesian Vision group has specific development needs that require a platform with a user friendly and efficient operating system. Four years ago the group used a UNIX environment exclusively, developing their initial projects on Sun compilers augmented with Linux machines. They found their work hard to track, and what should have been simple tasks were difficult; for example, burning CDs and transferring files to portable hard drives. The complexity of their work demanded that they track carefully which developer was working on what piece of code, and their UNIX platform did not easily allow for this. All of the developers had a UNIX development background, however, and wanted to continue to use some UNIX tools, including emacs, GCC compilers, and their self-written libraries linked to open source libraries. Mac OS X, with its UNIX core, was a perfect solution to try out, Frank says. We initially moved half our group over to the Mac platform to see what the improvements would be. With good results, the rest of the team would be switched over as well. Managing Image Data at NASA Using 3D Super ResolutionThe group's rigorous development needs come out of their quest to make image data management at NASA both easier and automatic. NASA accumulates an enormous amount of image data on their many missions—the rendezvous with the Asteroid Eros alone, for example, generated thousands of images. Scientists evaluate many of these images for various purposes, such as determining reflectance models and the distribution of impact craters. Because this task would take literally years without some kind of automation, the RIACS group was interested in whether they could develop an automatic procedure that would assist scientists in this image evaluation. As it turns out, it is not the image itself, but the underlying 3D model of the object of display that one wishes to obtain, Kuehnel explains. A lot can be learned from the geometry and the surface reflectance model of such an object. The group took as their task development of a program that would automatically infer the 3D model from the gathered images. This is also where their project intersects with the field of autonomous navigation. In order for any kind of robotic surface navigation vehicle to make an intelligent decision as to where it should navigate next, it needs to have available a 3D map of its immediate environment. Navigating in complex environments is still very difficult for robots—it has to do by computer what humans do naturally, process enormous amounts of data, interpret that data, and make good decisions for the next safe navigation step, Frank says. The key is to build a 3D map from the data, so the device can then use the map to make its intelligent decisions. Multiple Development and Integration BenefitsThe group looked to Mac OS X for a solution initially because it came with a development environment that seemed an excellent solution for creating coherent program integration and overview, critical for working efficiently. We were unhappy about the constant software and library problems with other UNIX environments. Windows was not an option as our code is written for a UNIX model and because stability of the machines is an important consideration. Mac OS X was easy to learn and use compared to the UNIX tools, which have a very steep learning curve, and that saves us time especially when bringing new team members up to speed," says Frank. The group ported their initial code to Mac OS X and it worked immediately with little adjustment. Interface Builder provided a way to create a project overview, which is critical for tracking such a complex development project, and was a very powerful demonstration of how easily our code could be integrated into the Mac OS X environment. In the continued development of their application, the group develops algorithms using MATLAB and Mathematica, and in critical stages they optimize them by coding in C and C++. A key issue for us when moving to the Mac was that when porting C code, a huge number of UNIX libraries are already available. All we needed was the Mac OS X IDE to visualize dependencies on libraries and source code without the hassle of writing GNU Makefiles manually. Xcode allows us to implement a logistical project overview, and the use of Frameworks makes it easy to keep binary libraries and header files up to date without worrying about the path settings. We also use OpenGL for visualization, so having native support for OpenGL on Mac OS X is critical, as that has been a difficult issue in the past with using Linux boxes. Other administrative tasks the group can now take advantage of include maintaining a common Bookmark database for Safari and keeping a synchronized calendar on multiple computers. Support for Heterogeneous EnvironmentsWith only half the group on Mac OS X—the other half is starting their migration now, to second-generation G5 machines—it was key that the platform support heterogeneous environments so that files and networks were supported between machines. Stability was also critical, Frank says. Mac OS X is as stable as any system we've worked with, and its development tools have cut our compilation times down drastically. Since the introduction of Xcode, the group has found that their compilation times have been reduced even further, that Mac OS X integrates with the CVS system they use to track the project, and that code review is much easier using the Xcode tools. The developers in the group create files and distribute them in C code itself, and the Xcode class browser they use allows them to locate bugs and correct them very easily. The Mac OS X platform has so many benefits for us, Frank adds. The group was so impressed by its efficiency and how much it helped our project that every developer now wants to move to the Mac. The automatic software and system updates have meant much time saved in upkeep and maintenance. We now spend a fraction of the time we used to on maintaining the computer system, and we are able to use well-designed programs and tools to provide coherent program integration and overviews as well as a great graphical user interface to present our data and application to users. For more information on RIACS, see the Research Institute for Advanced Computer Science. |