Pointer Device Pointer Datasheet ***************** Inside the Box 1 Characteristics ***************** Parameter Value Unit -------------------------------------------------------------------------- Vcc `3'-`6v' V^1 Current with USB `25' mA Current without USB `17' mA Current in powerdown mode `80' uA Startup time `300' mS Pitch/Roll Accuracy `0.2' deg^2 Pitch/Roll Precision `0.04' deg Yaw Accuracy `1.5' deg^2 Yaw Precision `0.01' deg Accelerometer range `+- 2' G Magnetometer range `+- 6' Gauss Accelerometer output rate up to 500 hz Magnetometer output rate up to 64 hz Accelerometer bandwidth 10 bits @10 per G hz Magnetometer bandwidth 13 bits @10 per gauss hz Temperature Accuracy `+- 5' deg F Temperature Precision `+- .3' deg F 1 Can be powered via USB 2 with good calibration 2 Parts ******* Parts * surpac CA-8 3 button version (surpac.com) * usb Cable, connected to device 3 Components ************ * at90usb1287 * sca3000-d01 * ad7799 * hmc1052 * hmc1051z * irf7905 (x2) * fan2503S30 4 DeviceData ************ This chapter describes all of the data available on the device. It assumes use of the dataclient. It should be obvious how to use the DataViewer as well. Each section begins with the name of the directory. The openmag project operates an accelerometer, magnetometer, and temperature sensor. If the device is to be used while moving, the calculated pitch, roll, and yaw are invalid due to lack of gyro compensation. If the down vector is not known, the magnetic vector output is still useful as it is not affected by acceleration, but yaw calculation is impossible. The accelerometers are in sensor coordinates, the calibrated magnetometer is aligned to the accelerometer, so both calibrated outputs are in sensor coordinates. Box coordinates are another coordinate frame which can be defined by the user, there is a rotation to get from sensor to box coordinates. There is also a rotation to get from sensor to laser coordinates. Do not be alarmed if you do not have all of the accessors listed, or you have accessors which are not listed here, they may change depending on software version. 4.1 root ======== This directory contains all of the other directories. It contains the "softwareversion" accessor for determining what software version you are using. 4.2 mouse ========= * enableshakewheel - if set, then shaking the mouse can scroll up and down * horizontalorientation - set which axis is used for horizontal movement, default is x * verticalorientation - set which axis is used for vertical movement, default is x * horizontalsensitivity - the sensitivity for horizontal movement, set to negative to reverse * verticalsensitivity - the sensitivity for vertical movement, set to negative to reverse * scrollsensitivity - sensitivity for scrolling 4.3 joystick ============ The device can function as a 6 axis 3 button joystick. * rotation The rotation allows for an arbitrary rotation to be entered by the user for joystick data. If you enter 0 for the angle, then there is no rotation. This allows the joystick to work in arbitrary coordinates. * angle - angle in degrees to rotate coordinates * x - x component of vector to rotate around * y - y component of vector to rotate around * z - z component of vector to rotate around * axis0-axis5 - the axis of joystick to setup * input - what this axis gets input from, can be roll, pitch, yaw, x, y, or z. Pitch is the angle between the x axis and the currently measured data. Roll is the angle rotated around the x axis. Yaw uses the other sensor to tilt-compensate an angle. * sensor - which sensor to use? accel, mag, or none to disable * sensitivity - increase to make more sensitive, make negative to reverse direction. 4.4 settings ============ * mag * range - The ADC which reads from the magnetic sensors supports variable gain. This means that with reduced precision, you can measure over a larger range. The range for the magnetometer, can be one of 6.4, 3.2, 1.6, or 0.8. This is the approximate range in gauss of the magnetic field that can be measured, the actual range that can be measured without saturation varies from unit to unit depending on the bias of the sensor. * bandwidth - The magnetometer can be read at different speeds. This is apparent when looking at the inputrate and noise of the mag after setting the bandwidth. The faster data is read, the higher the noise is. Currently there are 3 settings: fast (64hz), normal (13hz), and slow (4.5hz) * usbcdcenabled - the usb device acts like a virtual com port cdc device * usbmouseenabled - the usb device acts like a mouse * usbjoystickenabled - the usb device acts like a joystick * uartbaudrate - the baud rate of the uart, (default 38400) * button0outputsinfo - if set the pitch, roll, yaw, dip, incline, and azimuth are reported when the first button is pressed * truenorth - if set the declination is subtracted from the yaw * usemagdip - use alternate mag calibration Note: Do not enable more than one of usbcdcenabled, usbmouseenabled, or usbjoystickenabled if you are connected to a computer running windows. Enabling mouse and especially joystick makes the device run slower which will slow down the autocalibration algorithms as well as reduce sensor input rates. Disable these modes if you are not using them. 4.5 stats ========= The accessors relevant: * freeram - unused ram from the total of 8192 bytes, useful for debugging. * magsaturated - view which (if any) axes of the magnetometer have saturated * runtime - how long the device has been running since powerup in seconds * mainloopfreq - how fast the main loop is running in hz, very useful for profiling. * watchdog_resets - If the device crashes or locks up, after a timeout it automatically resets, but this counter gets incremented. If this value is ever non-zero, then a software bug has occured. 4.6 calc ======== * pitch - the angle the box x-axis is pointed up or down, from -90 to 90. * roll - the rotation around the box x-axis, from -180 to 180. * yaw - the heading of the box x-axis, from 0-360. 0 is north, 180 is south. * dip - the measured inclination angle between the magnetic vector and acceleration vector. This is related to your geographic magnitic latitude and should be relatively constant when well calibrated and the device is not moving. * incline - the angle between the laser axis and horizontal. * azimuth - the direction the laser axis is pointed, like yaw. * boxalignedaccel - the calibrated accelerometer with the boxalignment applied, this is used to calculate pitch and roll * boxalignedmag - the calibrated magnetomtermeter with the boxalignment applied, this along with boxaligned accel is used to calculate yaw and dip 4.7 calibration =============== * inclination - the inclination, can be set by the user to speed up calibration * declination - the angle between magnetic and true north * fieldstrength - the strength of the field in gauss, used to make the calibrated magnetometer output correct in gauss * boxalignment - the rotation from sensor coordinates to box coordinates * laseralignment - the rotation from sensor coordinates to laser coordinates * debugging - print information related to standard calibration * fastdebugging - print information related to fast calibration * accel - Computes 3rd order ellipsoid fit for the accelerometer * accelfast - Computes biases and scale factor for the accelerometer * mag - Computes biases, scale factors, and cross-coupling coefficients * magalign - computes dip angle as well as the rotation from magnetometer to accelerometer coordinates. The rotation is displayed as a vector to rotate around, where the magnitude is the angle to rotate. * magdip - alternate calibration for the magnetometer which uses a 3x3 matrix multiplication. It can be enabled by setting settings/usemagdip to true. * magfast - fast mag calibration which only computes bias and scale factor. This is used by mouse mode. The calibration is calculated quickly without being as precise and does not require the device to stop moving. * stillpoints - The stillpoints used for calibration. These points can be applied to either accel or mag to perform calibration. See the User Guide for more details. There are 6 types of calibration: * accel - used for accelerometer, need accurate calibration to compute pitch and roll * mag - magnetometer, needed for accurate magnetometer readings * magalign - this requires both accel and mag to calculate, it is the misalignment of the magnetic sensors in relation to the accelerometers. It corrects errors in yaw calculation by as much as 5 degrees. * magfast are - this just computes biases for the magnetometer quickly, it is used for mouse movement because the more precise magnetometer calibration updates slower, can be used when relative movement is better than absolute. Each type is a directory with: * calibration - the current calibration, you may clear it with the clear operator * autocalenabled - specifies if true, calibration can continously update * debugging - enable this to automatically output calibration when it is updated 4.8 sensors =========== * outputtype - can be set to: * filtered - data is filtered (lower noise) but not calibrated * filteredcalibrate - data is filtered and calibrated * raw - raw data * rawcalibrate - raw data with calibration applied * failure - set to true if the sensor is no longer providing data * output - read from this accessor directly to read sensor data * inputrate - the rate (in hz) that the sensor data is being read * outputrate - the rate (in hz) that the sensor data should be displayed, set this to the desired value. The temperature sensor provides * outputtype - can be set to F, C, or raw. This specifies the units to use for temperature. * output - get this to read the temperature * autooutput - if set to true the temperature will continously output