In case you haven't noticed, I have not been very active for the last 6-7 weeks. It's not because I don't like you all - it's because I am a member of my high school's FIRST Robotics Team (4265). I was asked to take the role of senior programmer and hopefully program this robot.

For those of you who do not know what FIRST (For Inspiration and Recognition of Science and Technology) is, it is a fantastic program to get kids involved in Engineering, Science, and Technology at a young age through the creation of a robot. And you only have 6 weeks. This year's challenge was to design, build, and program a robot to play basketball and balance on bridges in only 6 weeks.http://www.usfirst.o...frc-20th-season

The programming side is very interesting, as we are one of the few teams to use Java and a robotics library called WPILIBJ. It's poorly documented, and only now have I realized why several modules that I designed did not work. This is due to multi-object state machines. Basically, you can break the program down into three parts.

- Core
- Subsystems
- Commands

The subsystems define the components that physically exist, such as Jaguar speed controllers, pistons, solenoids, relays, etc. It also creates methods that operate on those components. Commands exist to operate on these subsystems in specific ways and to do things like handle joystick input and relate it to those subsystems. Finally, the Core is basically a large state machine that iterates at 50Hz and runs every command.

To add complexity, only one command can operate on any subsystem at any given point in time, and subsystems can have default commands (when other commands are not operating on it). The system seems easy, but unfortunately, I had about 2 hours of actual testing time with the code (Mechanical engineers take forever), so I was unable to implement this system to my liking.

However, at our first regional, my team became the Rookie All-Stars, and we have an automatic pass to Worlds in Saint Louis in April 25th-28th. Hopefully, in this time, I will be able to implement these changes and create better code for this robot.

So, that's where I have been and where I will be in the next few weeks. This is one of the greatest experiences of my life, and I will hopefully keep you all better updated on my progress.

5 Comments On This Entry

I wish my school was bigger; I never got these opportunities. Hopefully going to a large college will change that.

I went to a programing competition where I alone represented my school; I('we' technically sense I represented my school) got 8th out of 88 schools there; I was a bit flustered I didn't do better sense I racked up most of my points in the last 2 challenges. Even though the last 2 problems were much harder I had much more time to do them and that was my saving grace. The other problems were much much simpler but we got very little time to do them.

the one problem I did the best on was an optimization problem; it asked use to find the minimal number of coins to meet a desired price given an arbitrary number of denominations. The program had to give an answer in a minute or else you lost the points for that question; the person(s) with the best results got a bonus(me). I think it was the speed of C++ that actually won that one for me sense I just did an exhaustive search with a 55 second timed cut off

even still I wasn't able to get the problem that asked us to reduce fractions sense we only got

That sounds like a really interesting project. If I may make a small suggestion - lasers. If you equip your robot with lasers you can simply vaporize the competition. Plus after you take the World's competition next month you can take over the actual world - with your unstoppable killing machine Java programmed robot.