44 int numSensors,
int Hz,
int bufLen) :
48 struct TrivisioSensor* sensorList;
49 try { sensorList =
new TrivisioSensor[numSensors]; }
51 printf(
"vrpn_Tracker_TrivisioColibri::vrpn_Tracker_TrivisioColibri: Out of memory\n");
55 int sensorCount = colibriGetDeviceList(sensorList, numSensors);
59 if (sensorCount < 0) {
69 printf(
"Warning: No Colibri sensors found\n");
76 printf(
"%s:\t %s (FW %d.%d)\n", sensorList[i].dev, sensorList[i].ID,
77 sensorList[i].FWver, sensorList[i].FWsubver);
87 float Ka[9] = { 0.68f, 0.00f, 0.00f,
89 0.00f, 0.00f, 0.68f };
90 float Kg[9] = { 0.68f, 0.00f, 0.00f,
92 0.00f, 0.00f, 0.68f };
98 printf(
"vrpn_Tracker_TrivisioColibri::vrpn_Tracker_TrivisioColibri: Out of memory\n");
105 imu[i] = colibriCreate(bufLen);
107 if (colibriOpen(
imu[i], 0, sensorList[i].dev) < 0) {
108 printf(
"Warning: Could not access Colibri device on %s\n", sensorList[i]);
112 struct ColibriConfig conf;
115 colibriGetConfig(
imu[i], &conf);
118 conf.sensor = (ColibriConfig::Sensor)1023;
120 colibriSetConfig(
imu[i], &conf);
122 colibriSetKa(
imu[i], Ka);
123 colibriSetKaStatus(
imu[i], 1);
124 colibriSetKg(
imu[i], Kg);
125 colibriSetKgStatus(
imu[i], 1);
126 colibriSetJitterStatus(
imu[i], 1);
131 printf(
"Colibri IMU %d\n", i);
132 colibriGetID(
imu,
id);
133 printf(
"\tDevice ID: %s\n",
id);
134 printf(
"\tSensor config: %d\n", conf.sensor);
135 printf(
"\tMagnetic div: %d\n", (
unsigned)conf.magDiv);
136 printf(
"\tFrequency: %d\n", conf.freq);
137 printf(
"\tASCII output: %d\n", conf.ascii);
138 printf(
"\tAutoStart: %d\n", conf.autoStart);
139 printf(
"\tRAW mode: %d\n", conf.raw);
140 printf(
"\tJitter reduction: %d\n", colibriGetJitterStatus(
imu[i]));
147 colibriStart(
imu[i]);