Confession: I was nearly unable to make the single contribution to the Gazebo repository required for the OPW application. Why? Through no fault of the Gazebo team, installing software is just hard.
Most of the time leading up to my internship and my first week was spent trying to get Gazebo built on my Yosemite machine. I had a lot of trouble with this because I don’t have much experience installing software, and had no idea how to debug when things went wrong.
After being stuck for quite a while, help came via the discussion on the issue I opened. Working with contributors Steven Peters and James Townsend, we discovered that there were a couple of issues in play. First, the protobuf dependency needed to be built with Python support, which the Gazebo Homebrew formula did not do. This was easily resolved by re-installing protobuf manually using the “–with-python” flag.
The next issue was a little more insidious. Upon cmake-ing, I received a build error claiming that I had the wrong version of freeimage, despite definitely having a clean install of the latest version. James, another Yosemite user, was able to recreate my problem and resolve it by modifying the FindFreeImage.cmake file. However, once I tried those modifications, I found that the freeimage error persisted. James and I were mystified, since we appeared to have virtually identical systems. I even tried cloning his repo directly, to no avail.
It eventually became clear that the problem still lay somewhere with FindFreeImage.cmake, since swapping it out with another implementation solved my build problems immediately. I am finally able to cmake, make and install properly, although during compilation, my system generates several thousand BOOST warning, and curiously enough, pops up print dialogs intermittently. So there’s still some work to do.
I’m extremely glad I now have a working build, but I can’t help but think that difficult installation processes like what I just experienced may be significant barriers to entry for FOSS projects. It’s very frustrating to be excited to contribute to a project, only to be blocked by what seems like peripheral problems. Lucky for me, the Gazebo community was supportive and responsive to the issues I encountered. I just hope my struggles can help smooth the build process for new users in the future.
With a (finally) working build of Gazebo in hand, I spent the remainder of my first week continuing to get familiar with C++, a new language for me, and my project specifications.
Jose and I had a video conference to discuss the project, and we agreed that it was important to have a clear idea about what we were going to do before diving into implementation. Since Gazebo requires a design document for major contributions, we decided that writing one would be a good way to start. Once I have a draft completed, Jose and I will be able to tweak it together until the proposed architecture seems right, and I have a much better idea of what I’m doing. I think taking our time to lay out the details clearly will really pay off in the long run.
DONE: Training, Gazebo installation
TODO: Design document, getting to know plugins