July 2014
Intersense was well known for quite some time for being in the tracking business. You hear less and less about them these days. I’m guessing due to being purchased by Thales in 2012. Intersense makes the InertiaCube product as well as the InterTraxx head tracker. They also build systems such as the IS-1200 and IS-900.
This page is on their InertiaCube2 tracker. This is a 3 degree-of-freedom tracker which contains a 3 axis gyroscopes, 3 axis accelerometer, and a 3 axis magnetometer. Now a days you’ll see people call this type of sensor package a 9 DOF, which is marketing nonsense. However it’s in common usage now so we deal with it. The InertiaCube 2 measures the orientation of the sensor package which can be used very nicely for head tracking.
The InertiaCube 2 that I have (actually 2 of them) was calibrated in December of 2004. The cord is about 15 feet long or so and interfaces with the computer using a serial port. I’ve connected that to a RS232 to USB adapter from FTDI. The system is powered by a 6V adapter which connects to a cord coming out of the top of the RS232 case.
I’ll refer you to the datasheet for all the nitty gritty details of the InertiaCube 2 specs. However, this sensor claims a very low latency of 2ms while communicating with a baud rate of 115.2k. It also provides Prediction of up to 50ms. There’s also an Ehancement feature which I yet to discover what it’s suppose to do but I assume it improves tracking somehow. Although I have yet to see any difference, at least using mouse emulation.
Installing the InertiaCube product CD installs IServer and some other tools such as ISDemo. However, IServer is your main interface to the sensor. It runs in the background and provides adjustment as well as tools like mouse emulation. It’s also very useful in trying to debug any issues.
Another piece of software called ISDemo is vital in interfacing with Intersense sensors. In ISDemo you can not only see basic operation of the device but it allows you to make sensor adjustments such as prediction, enhancement, sensitivity level, and compass accuracy and then upload it to your sensor memory.
I’ve spent the last 2-3 days using the InertiaCube 2 in Skyrim and Battlefield 4 as a head tracker. In Skyrim it works well with no overshoot or ringing of any sort. It also seems very responsive, however, there always seems to be a slight studder. This is especially noticeable when used with an HMD. Now, I am using it in mouse emulation mode and maybe this is part of the problem. It seems slightly smoother in Battlefield 4 but I can still sense some sort of studder.
I’ve even played around with adjusting the latency of the serial port in Windows to try to solve the issue. The buffers have also been adjusted. Dropping the latency from 16ms to 1ms certainly reduced the studder but it’s still noticeable. I then reduced the buffer size from 4095 to 64 but still the studder remains. Maybe this would go away if the application integrated the Intersense dll directly. Not sure.
The studder becomes very obvious when I switch back to the HillCrest FSM-9 where I’m also using mouse emulation. The HillCrest is super smooth. So I’ll continue to try to get better response out of the InertiaCube 2 but for now it has a slight studder. This shows up on both of my InertiaCube devices so it’s not likely to be just my sensor.
Overall the InertiaCube 2 performs well but the micro studder is a problem. Hopefully with some more work, or custom integration of the isense.dll, things will improve.
Update 7-28-14
I was able to connect the InertiaCube 2 to WorldViz Vizard and use the isense.dll directly and the studder is gone. Then using mouse emulation the studder comes back. So I’ve confirmed that the studder mentioned above comes from the mouse emulation of IServer. For custom code where you can integrate the isense.dll this sensor would be quite a nice addition. I’m already using it in Vizard from WorldViz.
Update 12-26-15
Stutter went away by ensuring that the mouse emulation update rate is at or below the actual update rate of the tracker. Mouse emulation defaults to 1kHz update rate which the sensor can’t actually do.