Thursday Sep 09, 2010

Closed Road No Professional Driver

When they eventually make a TV commercial about Shelley I hope that they include the disclaimer "Closed Road No Professional Driver". It sure is odd to see a car driving with nobody in it. Shelley's simplest driving demonstration already exceeds the James Bond autonomous car gimmick from two movies back.

We've now had three full days of testing at Pike's Peak. The testing is going very well and Shelley is performing flawlessly. Most importantly for me the Java systems have been performing flawlessly. If there's one thing I've learned on this trip is that tuning server VM performance is child's play compared to configuring DGPS repeater systems. It's really fun working on a team project like this with automotive , software, mechanical and control systems engineers and uber-mechanics. (OK to most people this probably reminds them of the "Deep Space Homer" episode--"A mathematician, a different kind of mathematician and a statistician"). The discussions around dinner have been really interesting and not all about autonomous cars.

It's rather exhausting working at 2900m (9500ft) and getting up at 0400 to be on the mountain by 0500 so that we can test the car with the road closed to tourists. Hot coffee is your friend. By mid afternoon everyone is starting to look a little dazed and slow. I've only made one trip to the summit so far (didn't get to try the donuts) and I felt a bit winded just standing there.

Photo of the trunk compartment of Shelley with all of the computers and equipment.

The Java system is the black box behind the two red switches. The red switches do not fire up the BBQ even though that's what they look like.

Team members Paul and Mick examining test data after a successful run.

Saturday Sep 04, 2010

Shelley @ Pikes Peak

Next week Shelley, the Java powered autonomous vehicle being developed by Audi and Stanford, will be visiting Pikes Peak for her first "on-the-mountain" trials. This is not the competitive event where Shelley will be trying to race up the entire mountain as fast as possible. There is still almost a year until the official hill climb event. This set of trials will be to evaluate how Shelley is driving so far and how her systems have come together. Most of the driving will be at low speeds, less than 10 km/h. Some higher speed testing is planned for smaller portions of the 11 mile track.

I will post a couple of updates throughout the week with photos of the team and Shelley in action. Right after we return from Pikes Peak, Marcial Hernandez and I will be doing a presentation S312929 : Java in the Real World: Experiences with Real-Time Java for Device Control at JavaOne 2010. We should have some really great stories and exciting video to share.

My recent contributions to the Shelley project have been to create visualizations for the Java safety system. I won't share the actual UI just yet as it's still in progress, but here's a small tease:

Screenshot of a Java Swing application showing two track views.

This shows two views of the same track. The left shows the entire track, in this case a short track used in testing at Santa Clara County Fairgrounds, and the right track is a magnified view showing only two curves of the same track. The black dot on each view is the position of Shelley on the track. The maps used by Shelley are described as a series of curves. The map is a representation of the path Shelley should travel to traverse the road. Each curve consists of four parts, a straight segment, an entry segment, the curve proper and an exit segment. In this visualization the segments are red, green, blue and cyan respectively. On the magnified view there is a line drawn between Shelley's location and the track.

I will explain more about what's shown in the visualizations in future postings.

Password Madness

I recently had to change my password for a single signon service I use. I opted to include a "?" in my new password. Over the next couple of days I discovered that I could only enter my password on some of the sites I needed to use. On others it was consistently rejected. Luckily because it was single signon I could sign on to one site and then navigate to the another that wouldn't allow me to enter my password.

After a few days I figured out that some sites just didn't like my password. I decided to change my password to something that didn't include "?". Lo and behold, I could now log in using any of the sites which used the single signon service. Sigh.

It bothers me that standards for passwords are still so inconsistent. Case sensitive, case insenstive, spaces allowed, no spaces allowed, numbers allowed, numbers not allowed, random allowability of symbols. Usually the reasons for the restrictions are bizarre and arbitrary (what to do with computers isn't?). It's very frustrating for users to work with these varying restrictions imposed by multiple sites. It would certainly make things easier if more effort was spent to allow users the maximum flexibility in their password choice and probably more importantly that the behaviour was more consistent among sites. Perhaps industry specific standards or best practices could reduce the frustration around password policies. It's worth a try.

Wednesday Aug 04, 2010

Shelley @ Salt Flats

Image of 'Shelley', an autonomous Audi TTS at the edge of the Bonneville Salt Flats with a rainbow over the salt flats in the background

Photo credit: Marcial Hernandez

Shelley returned to the Bonneville Salt Flats last weekend for more testing. The Stanford and VW teams were focused on shaking out bugs in the driving algorithms and their map building code. This trip was also the first major trial where the Java Realtime system provided all of the GPS interfacing and data logging. The hoary old C code it replaces has been permanently and officially retired! Two systems down, with lots more to come!

I particularly like Shelley's new look with the Java logo out in front!

To hear more about the Shelley project consider attending the session S312929 : Java in the Real World: Experiences with Real-Time Java for Device Control that Marcial Hernandez of Volkswagen and I will be presenting at JavaOne 2010. We will have recent video of Shelley running on Pike's Peak and lots of details of our experiences developing Shelley and other embedded Java applications.

Friday Jul 30, 2010

More Than Just List

I've noticed that a lot of people who use the java.util Collections classes in their APIs will most often use List. Sometimes to the exclusion of the other Collections types. The other core Collections classes Set, Map and Collection are under-represented in most public Java APIs.

In the APIs I've written, especially since the introduction of generics, I try to use the other types more liberally. Why not just use List? To me List implies "ordered" and "duplicates allowed". If ordering isn't a relevant characteristic for the values I'll use Collection. If I wish to indicate that duplicate elements are not allowed I'll use Set or for cases when order does matter, SortedSet. When the collection

Using the right Collection type provides the API user a good hint as to key characteristics of the collection data. Using only List in APIs makes those characteristics less obvious and may lead to mis-use or abuse of APIs.




« August 2016