Java for FIRST Robotics Competition
I spent the end of last week in Atlanta at the finals for the
FIRST
Robotics Competition. This is a competition where high school
students build robots that perform some task. This year's task
looked an awful lot like building a robotic basketball player. I
was there partly because it's just a cool event; but mostly because
we were
announcing
(along with the folks from FIRST and from
the Robotics lab at
WPI) that beginning with next years event, students could do
their programming in Java. The controller that all teams use is the
Compact RIO from
National Instruments. It's a nice enough unit, but the C
programming environment is brutal: when bugs cause crashes, the
most you'll get is a register dump with (maybe) a listing of the
assembly code around the crash site. There's no protection between
the OS and the application, so the whole OS goes down when the
application crashes. This is a tough place for professionals to
work, let alone high school students. As a consequence, the amount
of programming that is done is pretty minimal. So the robots are
mostly mechanical engineering, with very little robotic ability to
operate autonomously. We were demoing the new Java environment
where NetBeans could be used to remotely (over the wireless link)
debug Java programs live inside the robot: stack traces,
breakpoints, looking at variables, ... all the cool NetBeans
deployment and debugging tools totally transform the development
experience.