15 #ifdef VRPN_USE_TRIVISIOCOLIBRI
36 # include VRPN_TRIVISIOCOLIBRI_H
40 # include VRPN_TRIVISIOCOLIBRI_H
44 int numSensors,
int Hz,
int bufLen) :
48 struct TrivisioSensor* sensorList =
new TrivisioSensor[numSensors];
49 int sensorCount = colibriGetDeviceList(sensorList, numSensors);
53 if (sensorCount < 0) {
63 printf(
"Warning: No Colibri sensors found\n");
70 printf(
"%s:\t %s (FW %d.%d)\n", sensorList[i].dev, sensorList[i].ID,
71 sensorList[i].FWver, sensorList[i].FWsubver);
81 float Ka[9] = { 0.68f, 0.00f, 0.00f,
83 0.00f, 0.00f, 0.68f };
84 float Kg[9] = { 0.68f, 0.00f, 0.00f,
86 0.00f, 0.00f, 0.68f };
94 imu[i] = colibriCreate(bufLen);
96 if (colibriOpen(
imu[i], 0, sensorList[i].dev) < 0) {
97 printf(
"Warning: Could not access Colibri device on %s\n", sensorList[i]);
101 struct ColibriConfig conf;
104 colibriGetConfig(
imu[i], &conf);
107 conf.sensor = (ColibriConfig::Sensor)1023;
109 colibriSetConfig(
imu[i], &conf);
111 colibriSetKa(
imu[i], Ka);
112 colibriSetKaStatus(
imu[i], 1);
113 colibriSetKg(
imu[i], Kg);
114 colibriSetKgStatus(
imu[i], 1);
115 colibriSetJitterStatus(
imu[i], 1);
120 printf(
"Colibri IMU %d\n", i);
121 colibriGetID(
imu,
id);
122 printf(
"\tDevice ID: %s\n",
id);
123 printf(
"\tSensor config: %d\n", conf.sensor);
124 printf(
"\tMagnetic div: %d\n", (
unsigned)conf.magDiv);
125 printf(
"\tFrequency: %d\n", conf.freq);
126 printf(
"\tASCII output: %d\n", conf.ascii);
127 printf(
"\tAutoStart: %d\n", conf.autoStart);
128 printf(
"\tRAW mode: %d\n", conf.raw);
129 printf(
"\tJitter reduction: %d\n", colibriGetJitterStatus(
imu[i]));
136 colibriStart(
imu[i]);
148 colibriClose(
imu[i]);
168 TrivisioIMUData data;
169 colibriGetData(
imu[i], &data);
194 fprintf(stderr,
"Tracker: cannot write message: tossing\n");