47#ifndef __TRACKER_WIIMOTEHEAD_H
48#define __TRACKER_WIIMOTEHEAD_H
52#include "vrpn_Analog.h"
53#include "vrpn_Configure.h"
54#include "vrpn_Shared.h"
55#include "vrpn_Tracker.h"
87 float led_spacing = 0.145);
187 enum FlipState { FLIP_NORMAL, FLIP_180, FLIP_UNKNOWN };
193 struct timeval d_prevtime;
234 q_vec_type d_vGravAntepenultimate;
235 q_vec_type d_vGravPenultimate;
Generic connection class not specific to the transport mechanism.
定义 vrpn_Connection.h:562
Provides a tracker device given data from a Wii Remote and LED glasses.
定义 vrpn_Tracker_WiimoteHead.h:69
const double d_update_interval
maximum time between updates, in seconds
定义 vrpn_Tracker_WiimoteHead.h:182
vrpn_Tracker_WiimoteHead(const char *name, vrpn_Connection *trackercon, const char *wiimote, float update_rate, float led_spacing=0.145)
constructor
static int VRPN_CALLBACK VRPN_CALLBACK handle_connection(void *, vrpn_HANDLERPARAM)
Callback triggered when a new client connects to the tracker
bool d_updated
Flag: Have we received updated Wiimote data since last report?
定义 vrpn_Tracker_WiimoteHead.h:227
q_xyz_quat_type d_gravityXform
Gravity correction transformation
定义 vrpn_Tracker_WiimoteHead.h:213
bool _have_gravity() const
return true if our gravity values look like real data
void update_pose()
function to drive the full pose update process
virtual void mainloop()
VRPN mainloop function
void _reset_gravity()
reset gravity transform and cached gravity vectors
void _update_2_LED_pose(q_xyz_quat_type &newPose)
Create tracker-relative pose estimate based on sensor location of 2 tracked points.
virtual void reset()
reset pose, gravity transform, and cached points and gravity
void _convert_pose_to_tracker()
Set the vrpn_Tracker position and rotation to that indicated by our d_currentPose;
bool d_lock
Flag: Does the tracking algorithm report a lock?
定义 vrpn_Tracker_WiimoteHead.h:224
void _update_flip_state()
If flip state is unknown, set flip state appropriately.
FlipState d_flipState
Whether we need to flip the order of the tracked points before calculating a pose.
定义 vrpn_Tracker_WiimoteHead.h:190
bool d_gravDirty
Flag: Have we received updated gravity data since last gravity update?
定义 vrpn_Tracker_WiimoteHead.h:231
void _reset_points()
reset cached points, point count, and flip state,
q_xyz_quat_type d_currentPose
Current pose estimate
定义 vrpn_Tracker_WiimoteHead.h:216
vrpn_Analog_Remote * d_ana
Source of analog data, traditionally vrpn_WiiMote Must present analog channels in this order:
定义 vrpn_Tracker_WiimoteHead.h:209
void setup_wiimote()
set up connection to wiimote-like analog device
void report()
Pack and send tracker report
const char * d_name
Tracker device name
定义 vrpn_Tracker_WiimoteHead.h:179
virtual ~vrpn_Tracker_WiimoteHead()
destructor
void _update_gravity_moving_avg()
based on cached gravity data, use a moving average to update the tracker's stored gravity transform.
static void VRPN_CALLBACK VRPN_CALLBACK handle_analog_update(void *userdata, const vrpn_ANALOGCB info)
Callback triggered when our data source issues an update
bool _should_report(double elapsedInterval) const
return true if we have new data or max time elapsed
void _reset_pose()
reset current pose, last report time, and tracker pose
bool d_contact
Flag: Have we received the first message from the Wiimote?
定义 vrpn_Tracker_WiimoteHead.h:221
const double d_blobDistance
distance between LEDs on glasses, in meters
定义 vrpn_Tracker_WiimoteHead.h:185
This structure is what is passed to a vrpn_Connection message callback.
定义 vrpn_Connection.h:41