Friday, April 30, 2010

Robots and Robot Competitions

I am part of an Australian team that has entered the MAGIC 2010 competition, Team WAMbot. MAGIC 2010 is an exciting challenge for coordinating multiple autonomous vehicles for mapping, surveillance and tracking tasks. This is sure to prove to be an exciting challenge that will push robots forward in terms of capabilities and reliability. Although many robots can already do similar tasks, I have not seen any demonstration of the interaction of all of these capabilities, reliably for an extended period of time.

A previous challenge that sparked great interest that was also funded by the military were the DARPA Grand Challenge's. However I believe one group has taken onboard an even more monumental challenge, the VisLab's Intercontinental challenge to cross from Rome, Italy to Shanghai, China. VisLab have a unique pure-vision approach (although I doubt they will stick to this for this particular challenge), have been a leader in the autonomous automotive field for years and have done some very impressive work. They are brave enough to walk infront of their vehicles and trust them to swerve out of the way to avoid them.

I believe the VisLab challenge will be a very tough test, unlike previous ground-breaking driving trips, like UniBW's 1000 mile autonomous journey in the 1990's that followed clean Autobahn lane markings, the VisLab's challenge will travel on unreliable roads for a much longer time and need to deal with pedestrians, animals, etc, etc. They do get the slight bonus of being able to use GPS navigation.

The VisLab guys are very friendly and helpful people, so I wish them the best of luck in this challenging and ground-breaking endeavour!

I'll leave you with some interesting Robotics videos:
This blimp seems similar to the Festo blimp, but it is powered by electroactive polymers.


And a robot balancing on a ball, not unlike the BallyBot from our lab.


And VAIL's autonomous parking has made some impact on the web, no idea why, it doesn't seem much more advanced than the autonomous parking we've been seeing for years since the DARPA Urban Challenge. Still, it is neat:

Thursday, April 29, 2010

Build Systems

Managing and building software packages is a big task. There are a few options on what build system you can use. Windows users prefer Visual Studio 'solutions' and 'projects', *nix users prefer Makefiles. Ideally, cross-platform tools are what everyone wants.

Some popular choices include:
  • CMake - a 'cross-platform' make, popular with a lot of projects. (We use it in PAL thanks to Benoit Neil's contributions). My gripe with CMake is its complexity. The fact that there is a complete book to describe it is a scary thought.
  • Premake - is a less popular choice (a few large projects use it, eg: ODE, PAL previously used it). It uses Lua-script, and it is my personal favourite due to its simplicity whilst still being very powerful. Premake is a bit windows-orientated, which helped me as I came from a Windows development background.
  • bjam, the boost build system. I've not used this one too much, but it is apparently decent.
  • scons, a python-based build system. I've not used it much, but it seems quite complex. (Evan Drumwright developed an scons build system for a PAL benchmark tool)
Premake (4) is quite easy to use, below is a very simple template for its use:
solution "NAME"
 configurations {"Debug", "Release"}
 targetdir "bin"
 language "C++"
 location "build"
 includedirs {"src", "."}

project "NAME"
 kind "ConsoleApp"
 files {"src/*.cpp"}
 links {"lib"}

Simply invoke with "premake vs2008" for windows, or "premake gmake" under *nix.
The lua script lets you easily extend the script to copy DLL's, set up custom include paths for each user, etc, etc.

This should help you get started with cross-platform build solutions!

Friday, April 16, 2010

Online Project Management Software

Every project requires some form of tracking, whether it is a simple to-do list or a highly detailed gantt chart. At some stage a some formal planning must take place, and if you are collaborating across different physical locations an online tool can really help.

I had a few requirements:
  • Ability to track milestones & tasks
  • Sepecifiy interdependencies between tasks
  • Track issues/bugs (Ticketing)
  • A visual display of the schedule (eg: Gantt, Time/Time, or Burndown chart)
I also wanted the tool to allow different management approaches (ie: not a purely scrum-based tool), and the usual niceties such as email notifications and a blog/wiki/forum/etc. Finally I wanted all this for free (ofcourse!). The usual suggestions are Bugzilla, Trac and MediaWiki, however none of these provide all the features we needed. Some of the better products I found included:
  • Redmine - A free (open source) web application with issue tracking, gantt charts, email notifications, wiki, forums, time tracking, etc. Unfortunately it is still quite 'beta' but definately one to watch for the future.
  • Assembla - A paid web service with task management, issue tracking, some scrum support, wikis, forums, but no visual way of representing a schedule as far as I could tell.
  • Clocking IT - A free (closed) web service that provides project tracking, it looks great but seemed a bit too simplistic for my needs.
  • CodeSpaces - A paid service, but offers free accounts. Easy to use, supports visual scheduling, forums, but is tightly SVN and scrum based (card walls, stories, etc.) and the help was a bit poor. I seriously investigated this option but decided against it in the end, however I can recommend this option.
  • CoMindWork - A paid service, but offers a limited free version. Can be both online and installed, provides a decent visual gantt chart with task and time tracking, issue tracking, email notifications, wiki, blog, and good help videos and instructions all through making it easy to learn. A big bonus is that it directly imports and exports between Microsoft Project, integrates with BaseCamp and provides an API for import/export. It also has a bit of a plone-like feel, which I was comfortable with having used it before.
So CoMindWork was the winner for me. Some of the other promising ones I was looking at included:
  • Zoho projects
  • Unfuddle
  • Agile42
but since I'd found CoMindWork by then I didn't look into them into too much depth.

Saturday, April 10, 2010

wxWidgets on OSX

wxWidgets is one of the worst toolkits known to man. Unfortunately, people keep using it, so I need to keep compiling it. I personally prefer FLTK, my only complaint about FLTK is that it can look pretty poor. Recently I have been looking around for a very light-weight native cross platform widget toolkit - no luck so far. (Suggestions anyone?)

Here are some instructions on compling wxWidgets (ex wxWindows) for Apple Mac OSX Snow Leopard. To begin, download wxMac, decompress it, open a terminal and navigate to the base wxMac directory.
mkdir osx_build
cd osx_build
You will most probably want to have OpenGL support with wxWidgets, so remember the "--with-opengl" flag. As with most projects, the 64bit support on OSX is flaky, so it is best to compile for 32bit using "-arch i386". Hopefully this won't be necessary in the near future.
../configure --with-opengl CFLAGS="-arch i386" CXXFLAGS="-arch i386" CPPFLAGS="-arch i386" LDFLAGS="-arch i386" OBJCFLAGS="-arch i386" OBJCXXFLAGS="-arch i386" 
(Note: other handy options are: --with-cocoa, --disable-shared --enable-static, --enable-unicode, --enable-debug. At present Cocoa support is dubious, again, this may change in future.)

(you may wish to confirm that opengl canvas is enabled - see:
/usr/lib/wx/include/mac-unicode-debug-2.8/wx/setup.h)
make
You should have a lib directory with all the dylib's in it.
Unfortunately, for wx to work, you will need to install it.
sudo make install

make samples
This should generate a whole bunch of samples in the osx_build/samples directory

Now you can run the samples! (Note: the samples can not be run from the command line, you need to run the applications, otherwise the program will not gain focus and you won't be able to click on any of the buttons!)

Catchup: Life

I've had a very busy time, I was in the UK doing commissioning work, returned to Perth for a meeting with Thales managers about MAGIC 2010, moved house, easter, and got sick for a week.

This totally destroyed my plans for posting a whole set of catchup posts so I guess that will have to wait.