HiTechnic Compass Sensor

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.

Brian Davis

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.


Nice demo, Brian... I built something similar to that returns to a heading but I like your solution better that links motor power to distance from goal... nice.

Anonymous said…
Where did you get the turntable?
It looks like it came from a microwave:-)
Very cool, I saw something similar with the Mindsensor compass.
Tony Naggs said…
Yes maniac000, I think it is from a microwave - the turntable slides on the counter. It also appears to tilt a little.

A similar size "Lazy Susan" would be more stable, one appears in Brian's brickshelf pictures.

Brian Davis said…
Yep, the turntable is straight out of my microwave. And I can't claim credit for the idea - the picture you see in my Brickshelf gallery is of the setup that John used to demonstrate the HiTechnic sensor there (when I *forgot* to get a video of it). What surprised me was just how simple the control program ended up being.

Brian Davis
Anonymous said…
wow, rather expensive south-pointing compass.

see my much cheaper version here:


RjbsNXT said…
I heard that you had a program to display a fully functioning compass display on the LCD but I cannot find any more information.

Please can you post a screenshot or a program containing the information to create this display?
We tried but the trigonometric math required to get the line to follow around the circle in real-time was too difficult.

Popular Posts