Archive for category General

First “Build” Meeting of the 2009 Offseason

“If this explodes, we’re going to have video of your epic demise.”

So commented one team member on my attempt to run a CIM motor off an 18v drill battery using 22 guage wire.

Such was the atmosphere at our third summer meeting, hosted at my house, in preparation for the Battle o’ Baltimore. Our main goal was to replace the robot’s sub-par shooter with a simple hopper and roller with which to “dump” orbit balls.

The dumper design was considered during competition season and mostly built (as our witholding allowance) but was scrapped in favor of a catapult. We thought it would be a good idea to give it try at the Battle. After negotiating our way into the backroom at school, we collected the dumper scraps so the dumper could have a second chance at life. Disassembling the shooter was done quickly, and resurrecting the dumper was not difficult. 80% of the work was completed the first day.

The four people who decided they didn’t want to go home for the night slept with the robot in the basement. We were back at work 10 AM Sunday morning. A few bent pieces of flat stock and more than a few zipties later, the dumper was in working condition. For the rest of the day, the hum of tools and robot work was accompanied by the clatter of pool balls and sharp pings of air hockey pucks. A few mechanical bugs were worked out, which entailed a new gearbox and mounting plate. Some minor adjustments ensured that our rear wheel chain would stop ejecting itself.

Most students floated between game-playing and robot-building, but some chose to work on other projects. The fate of the programming subteam was discussed at length, and design work was done on the rumored “arm” that will be the pinnacle of our training program. Some people even found time to cut the pieces for a second modular battery charger.

While the bulk of the work is over, we will be meeting here again this Saturday. This time, the focus will be on the robotic arm and offseason projects, as well as some administrative work for the upcoming school year.

And just so you stop wondering, my ad-hoc wiring job didn’t explode.

Tags: , , , ,

No Comments

Meeting #1 at Katherine’s House (July 20)

We met – for the first time this summer – at Katherine’s house yesterday, to take apart an old robot and discuss pre-season activities, particularly training.

All of the rookies present felt that the training programs for the various subteams needed to be changed, if not drastically altered. All the subteams are going to be having a more hands-on approach to training in the coming year. We will dropping the long, theoretical lectures during which people were actually taking notes (always a bad sign) and moving to short, basic how-tos followed by now-dos.

The sophomore training program will be more focused on designing the parts than it will be on actual construction. In addition, there will most likely be less of a distinction between people who are in electronics and people who are in one of the mechanics subteams. People will go to whichever activities suit them without being limited by their subteam choice. This does not apply so much to Programming and Teque subteams, which are sort of “in a different world”.

Many ideas for the specifics of training came up and were shot down. The rookies will not be building a cart as their pre-season project (too complicated). They will not be building complete robots and then competing in a mini-game (not enough time). The mechanics training program will most likely be separate from the electronics and programming training program. One idea that was not really shot down was that we might have a robotic arm built, and then re-wire and re-program it every year.

Also floated was the idea of competing in the Battle o’ Baltimore again this year. This one was generally accepted. The decision to use LabView, a graphical programming language, instead of C or C++, was maintained.

Tags: , , , ,

No Comments

To the North!

While other devoted members of the team were at Blair, Andy Gilbert and I (two of the team’s three cyclists) were on our way to Germantown to send off a very special delivery. Samir Chainani, a team senior, had neglected to attend the yearly team dinner. Due to his absence, he was not able to receive his graduation gift, a fine poster with collage by Eszter and her mother.

Andy first rode to my house and then with $12, two Gatorades, and a water bottle, we set off North, poster in tow. The ride to Bethesda was uneventful, though it would have helped if cars were banned. A pedestrian asked me to get out of the sidewalk. I didn’t feel like explaining the law to her.

We then used the Cedar Lane cut to avoid the MD-355 beltway interchange. There is no sidewalk on MD-355 covering its two major highway bridges, making it impossible to use for any cyclist. The unfortunate thing about highways though is given that they are locally infinite, in order to return, we would have to at some point, cross it again.

We reached North Bethesda and then Rockville with great speed, not having taken a single break. On my way back along this route, I would be struck by a car leaving a North Bethesda Strip Mall–I was fine. We rode straight past my father’s office but amid my pleas, we did not stop to visit. We continued futher through Gaithersburg and eventually onto the Germantown Bike Path. This thin asphalt strech connects the end of Gaithersburg and the north point of Germantown in a way that nearly makes biking fesible. We descended into and out of beautiful Seneca Park before passing Middlebrook, Germantown, and Ridge. Then we had reached our destination. We had biked 20 miles.

MD-355 is a truly spectacular road. In Montgomery County, it goes by the name Frederick Road in Germantown, Frederick Avenue in Gaithersburg, Hungerford Drive in Rockville, Rockville Pike in North Bethesda, and Wisconsin Avenue in Bethesda, Chevy Chase, and into the district. It interchanges I-495 and I-270 in Bethesda, and I-370 in Gaithersburg. 9 metro stations are placed on it. It is sidewalked for the majority of it’s length, cutting out nearby Old Baltimore Road. What makes it so special though is that every single dynamic present in this county can be seen, just by biking it. In the South is wealthy Chevy Chase. Then urban Bethesda. Going further, you see the spiraling parklands of North Bethesda (followed by the much more common strip-malls). Then wanna-be-urban Rockville, the loose residences of Gaithersburg, and the utterly unpopulated Germantown. I definitely recommend it for a day trip, if you can take the smog.

Tags:

No Comments

Java Plugin Architecture with ClassLoader

For a program I was writing (GCenter – a productivity tool – saves you time by minimizing the time it takes to load your games), I found it necessary to create a plugin architecture with Java and ClassLoader. (I expect Scout449 to eventually use a similar system, although probably with cleaner code.) My code has several cheap hacks, but remains an effective demonstration of a decent plugin system.

Java lends itself particularly well to plugin systems, since classes are loaded dynamically anyway. The idea of a plugin system is to modify how Java loads things. Normally, Java will load your program from the class files in its directory or jar file. When creating a plugin architecture, you want it to also load classes from different jar files (generally the jar files in a certain directory). The solution is to create your own version of the ClassLoader.

Most of the code below is just to navigate the jar files. In the execution of the application, a PluginReader is created for each jar file in the plugin directory. The read() method is then called (line 39), which first fetches a manifest file named “MANIFEST.GMF” which contains the name the actual plugin class (the class that has information like author’s name, as well as functions for starting the plugin running). This class is then loaded, and the class itself is registered with PluginUtils, so that it shows up as an option on the application screen. Then, all the other classes are loaded via the same method (but they are not registered), so that they can be used by the plugin. Finally, copyFiles is called, which copies the entire contents of the jar file to a temporary directory, so that the plugin can fetch graphics and stuff if it wants (using a path conversion method that takes a jar file path and turns it into a temporary directory path).

The real meat is at the very end: line 206 and on. Here, we define a ClassLoader that takes as an argument to its constructor a JarFile, and can be used to load classes from that JarFile. But the real beauty of the ClassLoader is not simply that we can load classes from a jar file, its that when those classes then want to load more classes or find more resources, it is still done within the context of the jar file. Which means that we don’t have to be 100% thorough, we just have to get the plugin going – Java will be happy to handle the rest for us.

Creating a class is simple. We just have to read in a .class file and call the ClassLoader’s defineClass method – in this instance, using our own createClass method as a proxy (just for convenience).

Read the rest of this entry »

Tags: , , , ,

No Comments

At the Party

I’m at the party after Chesapeake now. Sorry, “Team Social” – with a somewhat festive atmosphere. We did well at Chesapeake. We are in second place, and the team above us is not undefeated. We are 5-0, they are 5-1. But they’re good too, and if we have a chance, we’ll probably invite them. After a can of soda and a slice of cake (I normally eat very little sugar, if any), I can’t remember what team they are. My congrats to them, anyway.

I’m now the only person left sitting at my table. Philip finally left, after spending 15 minutes staring into the candle. Then he coughed (inhaled too much smoke?), and left.

There’s loud music playing at one end of the room, and a sign announcing “Maximum Allowed Occupancy 148 Persons.” So I think, yeah, there are probably only 148 persons in here. But does the sign still apply if all of them are sugar-high teenagers who are in the middle of a co-opertition?

People are starting to give me suspicious looks. This is the Naval Academy, and there is security. And now Philip is beginning to “take part.” So I’m leaving.

.

Update: jacob is now comparing the taste of Diet vs. Regular Coke. By drinking several cans of each.

Tags:

No Comments