OK, for some folks this may be old hat, but today was the first time I had a chance to play with one of the new sensors from HiTechnic. The HiTechnic sensors are skinned in a very nice-looking LEGOesque enclosure, replicating the look of the LEGO sensors but with a distinctive black endcap (I'm told this is also transparent to IR, so that IR-based sensors can share the same case components). The female port on the sensor is a mate to the LEGO-standard cables, offset catch and all, making wiring a snap (literally), and the piece pins on and feels exactly like it was made by LEGO (I'm rather surprised at this, actually; moulding pieces to this precision is no easy task). Currently you can use the NXT-G US sensor block to read the sensor, as it communicates with the NXT via I2C and this is the only "stock" NXT-G block that returns information from the sensor via I2C. But as consumers (and suppliers like HiTechnic) develop their own NXT-G blocks using the LabView Toolkit, I'm sure we'll see custom sensor blocks for these. Since the US sensor block returns only a single byte, the sensor returns the heading angle divided by two (currently; I think this is a limit of the NXT-G interface, not the sensor itself).
At BrickFest there was a wonderful demo of the compass sensors: put a compass-equiped robot on a turntable, and spin the turntable. While I watched this and commented on how great a demo it was... um... I never actually got a movie of it. So shoot me. To correct for this omission on my part, I decided to replicate the demo at home. I took a HiTechnic compass sensor and mounted it on JennToo, and then went ahead and wrote a program to keep the compass sensor pointed due south. The result is a fun and impressive robot that consistantly points in one direction (it's a $250+ compass... OK, I need to make something more practical someday).
The program itself is amazingly simple. No complicated corrections or difficult to figure out logic, the error signal (how much the heading differs from due south) is used to calculate the power on a Move block... essentially, that's it. Remember that the US sensor block here is not reading an US sensor , but actually the new compass sensor. Within the sensor block I do a compare to determine what direction to turn, and then the heading from the sensor (which is what comes out of the "distance" plug of the US sensor block... remember, we're "fooling" NXT-G into thinking the compass sensor is an US sensor) is used to figure out how fast to try to turn: the further away from the requested heading we are, the stronger we should try to drive the motors. The result is a very simple, understandable program, that is a lot of fun to watch run.
P.S.- I also have the Mindsensors compass to compare this with, and hope to report on that later. This is just the first non-LEGO sensor I've had to play with... and it looks like there will be plenty of toys in the future.
Errata: a few points that I was either unclear on or just dead wrong:
(1) The sensor enclosures are actually made by LEGO, and supplied to HiTechnic, who then supply the internals and endcap. Thus, why it "feels" exactly like LEGO, and meshes with the LEGO wires: these parts are LEGO or LEGO-certified.
(2) The endcap on the compass sensor I showed is not made from the IR transparent material, but just black plastic (I've seen the IR cap and it's visually very similar). The IR transparent endcap will be used on sensors like the HiTechnic Bridge (which enables IR communication between the NXT & RCX)
I apologise for the incorrect or misleading information.